Hadoop的完全分布式安装
首先,确定你的三台云主机为开启状态
-
三台云主机关闭防火墙
service iptables stop(输完命令回车之后如果不出现任何显示表示之前就已经关闭防火墙了,不用担心,继续操作!)
chkconfig iptables off(永久关闭防火墙) -
三台云主机安装JDK(注意:JDK必须是1.8或者以上)
-
关闭三台云主机开启初始化
service cloud-init-local stop
service cloud-init stop
chkconfig cloud-init-local off
chkconfig cloud-init off -
修改三台云主机的主机名
vim /etc/sysconfig/network
修改HOSTNAME属性
第一台云主机可以改为hadoop01,第二台云主机改为hadoop02,第三台云主机改为hadoop03(主机名可以该你自己想要的名字)
改完之后保存退出,重新生效
source /etc/sysconfig/network -
三台云主机进行IP映射
vim /etc/hosts
注意,修改完成之后,三台云主机中hosts文件的内容应该一模一样!!! -
三台云主机重启
reboot -
三台云主机需要相互之间免密
ssh-keygen
ssh-copy-id root@hadoop01
ssh-copy-id root@hadoop02
ssh-copy-id root@hadoop03
云主机密码:你自己的云主机密码;
ssh hadoop01
如果不需要输入密码,则logout
ssh hadoop02
如果不需要输入密码,则logout
ssh hadoop03
如果不需要输入密码,则logout -
先将第一台云主机的Hadoop的伪分布式保留下来
cd /home/software/
mv hadoop-2.7.1/ hadoop-alone -
三台云主机都进入software目录,下载配置好的Hadoop分布式安装包
cd /home/software/
wget http://bj-yzjd.ufile.cn-north-02.ucloud.cn/hadoop-dist.tar.gz -
解压安装包
tar -xvf hadoop-dist.tar.gz -
修改三台云主机的环境变量
vim /etc/profile
在文件末尾添加
export HADOOP_HOME=/home/software/hadoop-2.7.1
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出,重新生效
source /etc/profile -
三台云主机启动Zookeeper
cd /home/software/zookeeper-3.4.8/bin
sh zkServer.sh start
sh zkServer.sh status -
在第一台云主机格式化Zookeeper,实际上就是在Zookeeper上注册Hadoop节点
hdfs zkfc -formatZK
如果出现Successfully created /hadoop-ha/ns in ZK.表示格式化成功 -
在三台云主机上启动JournalNode
hadoop-daemon.sh start journalnode -
在第一台云主机上格式化NameNode
hadoop namenode -format
如果出现 Storage directory /home/software/hadoop-2.7.1/tmp/hdfs/name has been successfully formatted.表示格式化成功 -
在第一台云主机上启动NameNode
hadoop-daemon.sh start namenode -
在第二台云主机上格式化NameNode
hdfs namenode -bootstrapStandby
如果出现Storage directory /home/software/hadoop-2.7.1/tmp/hdfs/name has been successfully formatted.表示格式化成功 -
在第二台云主机上启动NameNode
hadoop-daemon.sh start namenode -
在三台云主机上启动DataNode
hadoop-daemon.sh start datanode -
在第一台和第二台云主机上启动FailOverController
hadoop-daemon.sh start zkfc -
在第三台云主机上启动YARN
start-yarn.sh -
在第一台云主机上启动ResourceManager
yarn-daemon.sh start resourcemanager
此时所有的配置安装结束:
通过jps查看
第一个节点会出现8个进程
Jps
NameNode
DataNode
JournalNode
DFSZKFailoverController
ResourceManager
NodeManager
QuorumPeerMain
第二个节点会出现7个进程
Jps
NameNode
DataNode
JournalNode
DFSZKFailoverController
NodeManager
QuorumPeerMain
第三节点会出现6个进程
Jps
DataNode
JournalNode
ResourceManager
NodeManager
QuorumPeerMain
问题解决:
1. Hadoop集群在启动的时候,必须先启动Zookeeper后启动hadoop
2. 如果在上述步骤中,出现Name or Service not Known或者Unknown host,表示IP或者主机名配置错误
3. 如果出现IllegalArgumentException,检查命令是否准确
4. 如果在格式化Zookeeper的时候出现HA is not enable/available,那么表示系统兼容 - 重装云主机系统
5. 如果缺少NameNode/DataNode/JournalNode/DFSZKFailoverController,通过命令hadoop-daemon.sh start namenode/datanode/jounalnode/zkfc。例如hadoop-daemon.sh start datanode
6. 如果缺少了ResourceManager/NodeManager,那么通过yarn-daemon.sh start resourcemanager/nodemanager。例如yarn-daemon.sh start nodemanager
7. 如果在启动过程中出现xxx already running as xxx,但是通过jps又没有发现这个进程,那么通过kill -9 xxx来杀死这个进程,然后重新启动这个进程
8. 如果缺少了QuorumPeerMain,那么说明Zookeeper启动错误
9. 如果出现Command not found,那么表示命令错误或者是环境变量配置错误
10. 如果出现所有命令不生效,那么先从另一台云主机上将profile下载下来,然后上传到有问题的云主机上,替换掉原来的profile,重启云主机