一、机器配置清单(8节点)
hadoop100 节点:NameNode、DFSZKFailoverController(ZKFC) hadoop101 节点:NameNode、DFSZKFailoverController(ZKFC) hadoop102: 节点:ResourceManager hadoop103: 节点:ResourceManager hadoop104: 节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper hadoop105: 节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper hadoop106: 节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper hadoop107: 节点:DataNode、NodeManager
二、解压安装配置相关软件
JAVA_HOME=/usr/java/jdk1.7.0_71 (配置环境变量略过,请自行搜索)
HADOOP_HOME=/hadoop/hadoop-2.6.2
三、修改hosts配置文件
vim /etc/hosts
#添加相应是机器ip和主机名
10.x.xx.80 hadoop100
10.x.xx.81 hadoop101
10.x.xx.82 hadoop102
10.x.xx.83 hadoop103
10.x.xx.84 hadoop104
10.x.xx.85 hadoop105
10.x.xx.86 hadoop106
10.x.xx.87 hadoop107
#关闭防火墙
service iptables stop
#新建用户hadoop密码hadoop
useradd hadoop
passwd hadoop
123456789101112131415161718
四、在hadoop104、hadoop105、hadoop106安装Zookeeper
安装目录: /hadoop/zookeeper-3.4.6/
修改配置:
cd /hadoop/zookeeper-
3.4.6/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改以下内容
dataDir=/hadoop/zookeeper-
3.4.6/tmp
在最后添加:
server
.1=hadoop104:
2888:
3888
server
.2=hadoop105:
2888:
3888
server
.3=hadoop106:
2888:
3888
保存退出
mkdir /hadoop/zookeeper-
3.4.6/tmp
touch /hadoop/zookeeper-
3.4.6/tmp/myid
hadoop104机器:
echo
1 > /hadoop/zookeeper-
3.4.6/tmp/myid
hadoop105机器:
echo
2 > /hadoop/zookeeper-
3.4.6/tmp/myid
hadoop106机器:
echo
3 > /hadoop/zookeeper-
3.4.6/tmp/myid
123456789101112131415161718192021222324252627282930313233343536373839
五、配置Hadoop(cd /hadoop/hadoop-2.6.2/etc/hadoop/)
1.vim hadoop-env.sh
AVA_HOME=/usr/java/jdk1.7.0_71
2.vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS
</name>
<value>hdfs://cluster1
</value>
</property>
【这里的值指的是默认的HDFS路径。当有多个HDFS集群同时工作时,集群名称在这里指定!该值来自于hdfs-site.xml中的配置】
<property>
<name>hadoop.tmp.dir
</name>
<value>/hadoop/hadoop-2.6.2/tmp
</value>
</property>
【这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。】
<property>
<name>ha.zookeeper.quorum
</name>
<value>hadoop104:2181,hadoop105:2181,hadoop106:2181
</value>
</property>
【这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点】
</configuration>
1234567891011121314151617181920212223
3.vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication
</name>
<value>3
</value>
</property>
【指定DataNode存储block的副本数量。默认值是3个,我们现在有4个DataNode,该值不大于4即可。】
<property>
<name>dfs.nameservices
</name>
<value>cluster1
</value>
</property>
【使用federation时,HDFS集群别名。名字可以随便起,多个集群时相互不重复即可】
<property>
<name>dfs.ha.namenodes.cluster1
</name>
<value>hadoop100,hadoop101
</value>
</property>
【指定该集群的namenode的机器】
<property>
<name>dfs.namenode.rpc-address.cluster1.hadoop100
</name>
<value>hadoop100:9000
</value>
</property>
【指定hadoop100的RPC地址】
<property>
<name>dfs.namenode.http-address.cluster1.hadoop100
</name>
<value>hadoop100:50070
</value>
</property>
【指定hadoop100的http地址】
<property>
<name>dfs.namenode.rpc-address.cluster1.hadoop101
</name>
<value>hadoop101:9000
</value>
</property>
【指定hadoop101的RPC地址】
<property>
<name>dfs.namenode.http-address.cluster1.hadoop101
</name>
<value>hadoop101:50070
</value>
</property>
【指定hadoop101的http地址】
<property>
<name>dfs.namenode.shared.edits.dir
</name>
<value>qjournal://hadoop104:8485;hadoop105:8485;hadoop106:8485/cluster1
</value>
</property>
【指定该集群的两个NameNode共享edits文件目录时,使用的JournalNode集群信息】
<property>
<name>dfs.ha.automatic-failover.enabled.cluster1
</name>
<value>true
</value>
</property>
【指定该集群是否启动自动故障恢复,即当NameNode出故障时,是否自动切换到另一台NameNode】
<property>
<name>dfs.client.failover.proxy.provider.cluster1
</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
</value>
</property>
【指定该集群出故障时,哪个实现类负责执行故障切换】
<property>
<name>dfs.ha.fencing.methods
</name>
<value>sshfence
</value>
</property>
【一旦需要NameNode切换,使用ssh方式进行操作】
<property>
<name>dfs.ha.fencing.ssh.private-key-files
</name>
<value>/hadoop/.ssh/id_rsa
</value>
</property>
【如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置】
<property>
<name>dfs.ha.fencing.ssh.connect-timeout
</name>
<value>30000
</value>
</property>
【connect-timeout连接超时】
</configuration>
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
4.vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name
</name>
<value>yarn
</value>
</property>
【指定运行mapreduce的环境是yarn,与hadoop1截然不同的地方】
</configuration>
12345678
5.vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled
</name>
<value>true
</value>
</property>
【启动HA高可用性】
<property>
<name>yarn.resourcemanager.cluster-id
</name>
<value>yrc
</value>
</property>
【指定resourcemanager的名字】
<property>
<name>yarn.resourcemanager.ha.rm-ids
</name>
<value>rm1,rm2
</value>
</property>
【使用了2个resourcemanager,分别指定Resourcemanager的地址】
<property>
<name>yarn.resourcemanager.hostname.rm1
</name>
<value> hadoop102
</value>
</property>
【自定ResourceManager1的地址】
<property>
<name>yarn.resourcemanager.hostname.rm2
</name>
<value> hadoop103
</value>
</property>
【自定ResourceManager2的地址】
<property>
<name>yarn.resourcemanager.zk-address
</name>
<value>hadoop104:2181,hadoop105:2181,hadoop106:2181
</value>
</property>
【制定Zookeeper机器】
<property>
<name>yarn.nodemanager.aux-services
</name>
<value>mapreduce_shuffle
</value>
</property>
【默认】
</configuration>
123456789101112131415161718192021222324252627282930313233343536373839404142434445
6.vim slave (hadoop100、hadoop101、hadoop102、hadoop103机器填写)
hadoop104
hadoop105
hadoop106
hadoop107
12345
六、启动过程
1.启动zookeeper集群(在主机名hadoop104、hadoop105、hadoop106上启动)
./zkServer
.sh start
#查看状态:一个leader,两个follower
./zkServer
.sh status
123456
2.启动journalnode(分别在在主机名(ip)04、主机名(ip)05、主机名(ip)06上执行)
sbin/hadoop-daemon.sh start journalnode
#验证
jps
#显示JouralNode + QuorumpeerMain
12345
3.格式化namenode(hadoop100)
hdfs namenode -
format
12
4.格式化ZKFC(在hadoop100上执行)
hdfs zkfc
-formatZK
1
5.NameNode从hadoop100同步到hadoop101
1.在hadoop101执行
hdfs namenode bootstrapstandby
#验证
tmp下生成dfs
2.如果
1失败(在hadoop100执行)
ssh-keygen -f
"~/.ssh/known_hosts" -R hadoop101
#验证
tmp下生成dfs
1234567891011
6.启动NameNode和DataNode
start-dfs.sh
#验证
jps
12345
7.启动yarn(在hadoop102执行)
start-yarn.sh
#验证:
jps
#显示ResourceManager + NodeManager
123456
8.启动ZookeeperFailoverController(hadoop100和101执行)
hadoop-daemon.sh start zkfc
#验证
jps
#显示DFSZKFailoverController
1234567
七、完工~
打开浏览器查看hadoop100(namenode显示active)
查看hadoop101(namenode显示standby)
查看各个datanode节点
工作正常,上传个文件试试吧~