- 三个节点关闭防火墙:
service iptables stop
chkconfig iptables off - 三个节点需要修改主机名:
vim /etc/sysconfig/network
修改HOSTNAME属性,例如:
HOSTNAME=hadoop01
重新生效:
source /etc/sysconfig/network - 三个节点需要进行IP和主机名的映射:
vim /etc/hosts
添加:
192.168.229.131 hadoop01
192.168.229.132 hadoop02
192.168.229.133 hadoop03
注意:映射完成之后,三个节点的hosts文件应该是一样的 - 三个节点重启
reboot - 三个节点之间来配置免密登陆:
ssh-keygen
注意:这三句话在三个节点上都需要执行
ssh-copy-id root@hadoop01
ssh-copy-id root@hadoop02
ssh-copy-id root@hadoop03
执行完成之后,每一个节点测试一下是否能够免密登陆:
ssh hadoop01
ssh hadoop02
ssh hadoop03 - 安装JDK
- 安装Zookeeper
***** 在第一个节点上 ***** - 解压Hadoop的安装包:
tar -xvf hadoop-2.7.1_64bit.tar.gz - 进入Hadoop安装目录的子目录中:
cd hadoop-2.7.1/etc/hadoop/ - 编辑hadoop-env.sh:
vim hadoop-env.sh
修改:
export JAVA_HOME=/home/presoftware/jdk1.8
export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
保存退出之后,重新生效:
source hadoop-env.sh - 编辑core-site.xml
vim core-site.xml
添加: fs.defaultFS hdfs://ns hadoop.tmp.dir /home/software/hadoop-2.7.1/tmp ha.zookeeper.quorum hadoop01:2181,hadoop02:2181,hadoop03:2181 - 编辑hdfs-site.xml
vim hdfs-site.xml
添加: dfs.nameservices ns dfs.ha.namenodes.ns nn1,nn2 dfs.namenode.rpc-address.ns.nn1 hadoop01:9000 dfs.namenode.http-address.ns.nn1 hadoop01:50070 dfs.namenode.rpc-address.ns.nn2 hadoop02:9000 dfs.namenode.http-address.ns.nn2 hadoop02:50070 dfs.namenode.shared.edits.dir qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns dfs.journalnode.edits.dir /home/software/hadoop-2.7.1/tmp/journal dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.ns org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.namenode.name.dir file:///home/software/hadoop-2.7.1/tmp/hdfs/name dfs.datanode.data.dir file:///home/software/hadoop-2.7.1/tmp/hdfs/data dfs.replication 3 dfs.permissions false - 编辑mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
添加:
mapreduce.framework.name
yarn
- 编辑yarn-site.xml
vim yarn-site.xml
添加: yarn.resourcemanager.ha.enabled true yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 hadoop01 yarn.resourcemanager.hostname.rm2 hadoop03 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore yarn.resourcemanager.zk-address hadoop01:2181,hadoop02:2181,hadoop03:2181 yarn.resourcemanager.cluster-id ns-yarn yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop03 - 编辑slaves:
vim slaves
添加三个节点的主机名,例如:
hadoop01
hadoop02
hadoop03 - 将第一个节点上Hadoop的安装目录整个拷贝给另外两个节点:
回到software目录下,然后拷贝:
scp -r hadoop-2.7.1 root@hadoop02:/home/software/
scp -r hadoop-2.7.1 root@hadoop03:/home/software/
***** 集群配置及启动 ***** - 三个节点配置环境变量
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:
hdfs zkfc -formatZK - 在三个节点上启动JournalNode
hadoop-daemon.sh start journalnode - 在第一个节点上格式化NameNode
hadoop namenode -format - 在第一个节点上启动NameNode
hadoop-daemon.sh start namenode - 在第二个节点上格式化NameNode
hadoop namenode -bootstrapStandby - 在第二个节点上启动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
如果启动完成之后,节点个数发生缺少,可以试图单独启动
如果是缺少NameNode、DataNode、JournalNode、DFSZKFailoverController,利用hadoop-daemon.sh start xxx
如果是缺少ResourceManager、NodeManager,利用yarn-daemon.sh start XXXX
jps之后,第一个节点上:
Jps
QuorumPeerMain
NameNode
DataNode
JournalNode
NodeManager
ResourceManager
DFSZKFailoverController
第二个节点上:
Jps
QuorumPeerMain
NameNode
DataNode
JournalNode
NodeManager
DFSZKFailoverController
第三个节点上:
Jps
QuorumPeerMain
DataNode
JournalNode
ResourceManager
NodeManager
问题:
启动Hadoop完全分布式之前,一定要先启动Zookeeper
- hdfs zkfc -formatZK — HA is not available
- command not found:环境变量配置错了或者配置完之后没有source
- unkown host:hosts文件映射错误或者主机名写错
- already running as 2830 ,jps — kill -9 2830 重新启动