上次我们已经说明了基于Virtual Box安装CentOS,并且完成Hadoop的1个namenode(hp-master)和3个datanode(hp-slave1,hp-slave2,hp-slave3)的搭建。
那么如果我需要增加datanode节点,怎么操作呢?例如:像Hbase一般要求至少5个节点。下面我们接着之前的说一下增加datanode需要如何操作。
A. 复制环境
我们在Virtual Box中停止Hadoop-Master-Slave3
之后“完全复制”两个,并重命名为Hadoop-Master-Slave4和Hadoop-Master-Slave5
B. 修改Hadoop-Master-Slave4的环境配置
使用Virtual Box启动Slave4
- 修改IP
使用 ip a查看ip发现主机的ip是192.168.168.104(这是复制过来的Slave3的ip)
使用命令进入enp0s8的网卡配置,并修改ip为192.168.168.105
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
重启网络服务 service network restart
再次查看ip a,已经变成192.168.168.105了
- 修改hostname
修改hostname为hp-slave4
hostnamectl set-hostname hp-slave4
退出重新登录后显示hostname已经变成hp-slave4
-
修改机器Hosts并同步到各个虚拟机上
-
重新生成rsa密钥,并且存储到公共密钥authorized_keys里
ssh-keygen -t rsa cat id_rsa.pub >> authorized_keys
- 同步authorized_keys给其他的虚拟机,并重新生效
scp /root/.ssh/authorized_keys hp-slave1:/root/.ssh scp
/root/.ssh/authorized_keys hp-slave2:/root/.ssh scp
/root/.ssh/authorized_keys hp-slave3:/root/.ssh scp
/root/.ssh/authorized_keys hp-master:/root/.ssh systemctl restart
sshd.service
*同样的完成hp-slave5的修改
C. 修改Hadoop-Master-Master的hadoop环境配置
进入Hadoop的配置目录
cd /usr/local/hadoop/hadoop-2.8.5/etc/hadoop/
修改slaves文件
vi slaves
新增两个节点
hp-slave4
hp-slave5
D. 重启hadoop即可
./start-all.sh
最终的结果
另外:
如果这个过程中发现http://192.168.168.101:50070里看不到livenode,那么说明重复format了namenode造成clusterid在namenode与datanode之间不一致。
最简单的解决方案是,把各虚拟机的/usr/local/hadoop/里面,除了hadoop2.8.5的文件以外的dfs及tmp都删除了,然后重新格式化namenode的hadoop环境。
进入bin目录下
./hadoop namenode -format