如何构建虚拟机Hadoop集群,搭建3台ubuntu虚拟机集群
克隆集群机器
通过虚拟机搭建Hadoop集群,发现使用的VMware workstation 15 player版本没有克隆功能,于是找到了手动克隆方法:
参考:/weixin_44763047/article/details/111772941
搭建集群
一台Ubuntu主机系统作Master(yjh-ubuntu),一台Ubuntu主机系统命名为slave01,一台Ubuntu主机系统命名为slave02。三台主机机器处于同一局域网下。这里使用三台主机搭建分布式集群环境,更多台机器同样可以使用如下配置。
输入命令,分别更改主机名称
sudo vim /etc/hostname
1) 网络配置
在主机上添加网卡,一张设置为NAT模式,一张设置为主机模式
主机分配的IP地址如果不固定,需要改成静态(一台有问题,三台都要改)。
输入 ifconfig 指令(以master主机为例)。
其IP地址为:192.168.72.130
输入命令修改节点IP映射
sudo vim /etc/hosts
192.168.72.130 yjh-ubuntu
192.168.72.131 slave01
192.168.72.132 slave02
在其余两个主机上重复修改后重启生效.
三台电脑主机的用户名均为hadoop.三台机器可以ping双方的ip来测试三台电脑的连通性。
在master主机上的中运行ping 192.168.72.132,测试能连接到slave02节点:
2) 配置ssh免密码连入
因为Ubuntu中默认没有安装SSH服务,所以我们先要执行三步使其生效(三台都要):
sudo apt-get install openssh-server #安装服务,一路回车 sudo /etc/init.d/ssh restart #启动服务 sudo ufw disable #关闭防火墙
执行以下命令看是否成功运行,如果成功的话,出现两个进程
ps -e | grep ssh
在master节点生成SSH公钥,公钥储存在/home/hadoop/.ssh中
cd ~/.ssh# 如果没有该目录,先执行一次ssh localhost rm ./id_rsa* # 删除之前生成的公匙(如果有) ssh-keygen -t rsa # 一直按回车就可以
让master 节点可以无密码 SSH 本机,在 master 节点上执行
cat ./id_rsa.pub >> ./authorized_keys
完成后可执行 ssh master验证一下(需要输入 yes,成功后执行 exit 返回原来的终端)
ssh yjh-ubuntu
接着在 master 节点将上公匙传输到 slave01节点,过程中需要输入 slave01 节点的密码,传输100%以后就是传过去了:
scp ~/.ssh/id_rsa.pub hadoop@slave01:/home/hadoop/
接着在 slave01节点上,把公钥加入授权
mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略 cat ~/id_rsa.pub >> ~/.ssh/authorized_keysrm ~/id_rsa.pub # 用完就可以删掉了
对 slave02 重复上面俩步,这样 master 节点就可以无密码登陆2个 slave 节点了
ssh slave01 #可以用来检验是否能成功登陆,exit退出
3) 配置分布式集群环境
需要修改/usr/local/hadoop/hadoop-2.10.1/etc/hadoop中的5个配置文件。
slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
1、slaves
此文件记录的是将要作为 Datanode 节点的名字。将 slave01,slave02 主机名字加入进去,如果想让 yjh-ubuntu 节点作为 Namenode 的同时也作为 Datanode,可以保留 localhost。(我这里保留)
2、core-site.xml
改为如下配置:
3、hdfs-site.xml
这文件记录备份相关。dfs.replication 一般设为 3,我们有2个 slave 节点,因此可以将 dfs.replication 的值设为 2
改为如下配置:
4、mapred-site.xml
可能默认文件名为 mapred-site.xml.template ,此时需要重命名
mv mapred-site.xml.template mapred-site.xml
改为如下
5、yarn-site.xml改为如下配置:
配置好以后,将master 节点上的/usr/local/hadoop/hadoop-2.10.1/etc/hadoop文件夹复制到剩余节点上。
在 master 节点执行:
cd /usr/localsudo rm -r ./hadoop/tmp# 删除 Hadoop 临时文件 cd hadoop/hadoop-2.10.1 sudo rm -r ./logs # 删除日志文件#去到/usr/localsudo tar -zcf ~/hadoop.yjh-ubuntu.tar.gz ./hadoop # 先压缩再复制 cd ~#跳转到有压缩包的路径下 scp ./hadoop.yjh-ubuntu.tar.gz slave01:/home/hadoop#发送到slave01节点,其他salve节点也要执行
在剩余 salve 节点上执行(以slave01为例):
在sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在) sudo tar -zxf ~/hadoop.yjh-ubuntu.tar.gz -C /usr/local sudo chown -R hadoop /usr/local/hadoop
4) 启动 Hadoop
首次启动 Hadoop 需要将 master 节点格式化:
在hdfs namenode -format # 首次运行需要执行初始化,之后不需要
启动
start-all.sh mr-jobhistory-daemon.sh start historyserver
通过命令 jps 可以查看各个节点的启动进程
jps
master 有 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServe
以上进程缺少任意一个都表示有错。
Slave02节点
在 master 节点查看 DataNode 是否正常启动。以我为例,Live datanodes 为 2,与 slave 数量一致,集群启动成功。
hdfs dfsadmin -report
可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://yjh-ubuntu:50070/
可选:
关闭Hadoop
cd /usr/local/hadoop stop-all.sh