大数据技术栈-Hadoop3.3.4-完全分布式集群搭建部署-centos7(完全超详细-小白注释版)虚拟机安装+平台部署
Posted Hao.715
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据技术栈-Hadoop3.3.4-完全分布式集群搭建部署-centos7(完全超详细-小白注释版)虚拟机安装+平台部署相关的知识,希望对你有一定的参考价值。
目录
1、安装虚拟机(已安装好虚拟机的可跳转至 一、安装jdk与hadoop)
一、集群前置环境搭建(三台机器分别设置hostname、网卡(ip)配置、ssh免密登录)
(1)首先,查看本机的网卡配置,使用cmd查看ipconfg,找到VMware的虚拟网卡,查看ip
环境条件:
设备类型 | 软件类别 | 名称、版本号 |
PC机(建议内存8GB以上) | 操作系统 | Window10 |
软件 | VMware Workstation 17 Player | |
虚拟机 | Linux 操作系统 | CentOS 7 |
镜像文件与安装包 | CentOS-7-x86_64-DVD-2009.iso | |
Hadoop3.3.4.tar.gz | ||
jdk-8u191-linux-x64.tar.gz | ||
其他(看个人喜好选用) | 工具 | Xshell 7 |
Xftp 7 |
1、安装虚拟机(已安装好虚拟机的可跳转至 一、安装jdk与hadoop)
默认VMware已经安装好,打开VMware安装第一台虚拟机
(1)直接新建一台虚拟机
选中 已经下载好的镜像文件 CentOS7-x86_64-DVD-2009.iso
修改机器名称、本机用户与密码,root用户也使用此密码
命名虚拟机名称,并设置本虚拟机的位置(建议选择储存空间大的位置,新建文件夹存放)
设置大小,默认为20GB,不用修改
选择 将虚拟磁盘存储为单个文件 然后下一步
检查虚拟机硬件配置,进行 自定义硬件 进行修改
将内存设置为 2GB(最少2GB)
将处理器数量设置为 2个
将网络适配器选择为自定义 选用 VMnet8
至此,虚拟机基本设置完成,点击完成即可。
(2)首次启用虚拟机,进行安装
直接启动
首次启用需等待系统自动下载
然后就进入系统了
注:本次安装过程使用了简易安装,不使用是需要自行选择需要的基本插件和功能
可以直接点击用户名进行普通登录,也可以选择 Not listed? 使用root用户登录
至此,虚拟机的安装就算结束了···
后续所以操作需使用虚拟机的终端进行命令操作
一、集群前置环境搭建(三台机器分别设置hostname、网卡(ip)配置、ssh免密登录)
1、查看一下本机与虚拟机的网卡和ip信息
(1)首先,查看本机的网卡配置,使用cmd查看ipconfg,找到VMware的虚拟网卡,查看ip
win + R 打开 cmd
cmd中使用 ipconfig 进行查看
找到 VMnet8 这个虚拟网卡,所有集群的IP需配置在此网段内。例如:192.168.13.20
记住192.168.13.1和255.255.255.0
(2)查看虚拟机的网卡配置和网络信息
使用 ifconfig 或 ip a 进行查看 两者选一个即可(能看到虚拟机现在的ip和网卡名称即可)
ifconfig
通常出现的第一个此虚拟机使用的虚拟网卡,名称为ens33 对这个网卡的配置文件进行修改
ip a
此命令的内容与 ifconfig 大致相同
(3)修改Hostname
方法一:使用 vim/etc/hostname 编辑即可
vim/etc/hostname
修改后使用 reboot 重启虚拟机生效
使用命令 hostname 查看
hostname
方法二:使用 hostnamectl 命令
hostnamectl set-hostname 新名称
修改后使用reboot重启虚拟机
使用hostname查看
hostname
2、配置静态ip网卡
网卡路径 /etc/sysconfig/network-scripts/ifcfg-ens33
使用vim对网卡配置文件进行编辑
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=f605a46e-401e-46bf-98f7-1d9270d29270
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.13.30
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=114.114.114.114
DNS3=192.168.13.1
PREFIX=24
GATEWAY=192.168.13.2
使用ping命令测试网络是否联通
ping -c 4 baidu.com
测试成功,按照以上步骤创建 slave1 和 slave2 两台虚拟机
3、配置ssh免密登录
三台机器配置好网络后
(1)修改hosts文件
vim /etc/hosts
#IP + hostname
192.168.13.30 master
192.168.13.31 slave1
192.168.13.32 slave2
三台机器同步进行修改(建议使用xshell进行操作)
后续操作均使用Xshell工具进行,与虚拟机终端进行操作相同
(2)配置ssh
创建.ssh文件夹(三台机器都需要执行)
mkdir .ssh
ll 查看是否创建成功
ll -a
生成密钥(三台机器都需要执行)
ssh-keygen -t rsa
回车执行
即为成功
ssh-copy-id 复制到其他主机
ssh-copy-id master ssh-copy-id slave1 ssh-copy-id slave2
每台机器都运行一遍
使用ssh进行测试# master 免密登录至slave1节点 ssh slave1
4、hadoop集群规划
机器 | ip | 节点分配 |
master | 192.168.13.30 | NameNode、DataNode、NodeManager |
slave1 | 192.168.13.31 | ResourceManager、DataNode、NodeManager |
slave2 | 192.168.13.32 | SecondaryNameNode、DataNode、NodeManager |
二、安装jdk与hadoop
1、检查jdk是否安装
使用 java-version 查看Jdk的版本
java -version
这里我用的是jdk1.8.0_191
使用新版jdk,在 /etc/profile 修改jdk环境变量至新版的路径即可
安装包:虚拟机联网后可直接通过浏览器进行下载 若在PC机 则需通过工具上传至虚拟机中 (使用xshell或xftp)
2、安装jdk,配置环境
在/opt目录下创建两个文件夹
mkdir -p software //存放安装包
mkdir -p module //存放解压后的文件
准备好安装包后,使用tar命令解压
mkdir -p /opt/software
mkdir -p /opt/module
ls /opt
tar -zvxf /目标文件路径 -C /安装路径
tar -zvxf /opt/software/jdk-8u191-linux-x64.tar.gz -C /opt/module
解压好后通过mv命令改名
mv /opt/module/解压后文件 /opt/module/改名
配置环境 /etc/profile
vim /etc/profile
将以下内容写入profile中 (路径需与安装的一致)
#jdk
export JAVA_HOME=/opt/module/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$HAVA_HOME/lib/tools.jar
修改后使用source命令
source /etc/profile
使用命令查看jdk版本,与安装包相符说明配置成功
java -version
3、准备Hadoop3.3.4安装包
4、配置Hadoop3.3.4环境变量
#yyds干货盘点# 大数据技术栈之Hadoop-HDFS
概述
Hadoop是一个分布式系统基础架构
主要解决海量数据的存储和分析计算
hadoop作为大数据技术栈必须要掌握的框架,且Hadpood生态圈非常强大
Hadoop组成
HDFS(Hadoop Distributed File System)
分布式文件存储系统,适合一次写入,多次读出,切不修改
优点
- 高容错,数据可以保存成多副本,防止数据丢失
- 适合处理大数据量存储,分布式存储
- 可构建在廉价机器上,节省资源
缺点
- 不适合低延时数据访问
- 无法高效对大量小文件进行存储,小问题太多会占有NameNode大量内存来存储文件目录和块信息
- 不支持并发写入一个文件,只能追加写
架构
NameNode:就是master节点
- 管理HDFS的名称空间
- 配置副本策略
- 管理数据块映射信息
- 处理客户端读写请求
DataNode:就是slave节点
- 存储实际的数据块
- 执行数据块的读/写操作
Client:客户端
- 文件切分,文件上传HDFS时,将文件切分成一个个Block,然后再上传
- 与NameNode节点交互,获取文件位置信息
Secondary NameNode:
- 辅助NameNode,定期河北Fsimage和Edits,并推送给NameNode
- 紧急情况下,可辅助恢复NameNode
文件块大小
HDFS文件在物理上是分块存储(Block),可自定义设置dfs.blocksize
block大小主要取决于磁盘传输速度,寻址时间为传输时间的1%时,则为最佳时间
- 块太大,磁盘数据传输时间就很大
- 块太小,查询数据可以会多次寻址,增加寻址时间
HDFS数据读写流程
写文件
1)客户端向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。
2)NameNode返回是否可以上传。
3)客户端请求NameNode询问第一个Block上传哪几个DataNode
4)NameNode返回DataNode节点信息
5)客户端请求DataNode1上传数据,DataNode1收到请求会继续调用DataNode2,然后DataNode2调用DataNode3,建立通信管道
6)DataNode1,DataNode2,DataNode3逐级应答
7)客户端开始发送第一个Block数据,DataNode1收到数据之后再传给DataNode2,DataNode1美传一个packet会放入一个应答队列等待相应,链式传递下去
8)完成第一个Block传递之后,客户端再请求NameNode获取DataNode信息。。。
NameNode如何选择DataNode
本来就近原则,会选择最近的DataNode,如何计算最近?
这里不多介绍,有兴趣可以深入研究
NameNode工作机制
第一阶段:NameNode启动
- 第一次启动NameNode格式化后,创建Fsimage和Edits文件,如果非第一次启动,直接加载Fsimage和Edits
- 客户端对元数据进行增删改请求
- NameNode记录操作日期,更新滚动日子
- NameNode在内存中对数据进行增删改
第二阶段:Secondary NameNode工作
- Secondary NameNode询问NameNode是否需要CheckPoint
- Secondary NameNode请求执行CheckPoint
- NameNode滚动正在写的Edits日志
- 将滚动前的Edits、Fsimage拷贝到Secondary NameNode
- Secondary NameNode加载Edits、Fsimage到内存,再合并
- 生成新的镜像文件fsimage.chkpoint
- 拷贝fsimage.chkpoint到NameNode
- NameNode将fsimage.chkpoint重命名成fsimage
读文件
1)客户端请求NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址
2)挑选一台DataNode(就近原则),请求读取数据
3)DataNode开始传输数据给客户端,以Packet为单位发送
4)客户端以Packet为单位接收,现在本地内存缓存,然后写入文件
以上是关于大数据技术栈-Hadoop3.3.4-完全分布式集群搭建部署-centos7(完全超详细-小白注释版)虚拟机安装+平台部署的主要内容,如果未能解决你的问题,请参考以下文章