|
HA: High Available(高可用集群)
本次安装的hadoop2.5.2是64bit的,如果需要请在我之前的博文中
规划节点数:(仅考虑HDFS 的HA)
HDFS的节点分配:
两个NN 且分布在两台主机
三个DN节点
三个JN节点
两个ZKFC节点(必须和NN放在一台主机上)
三个Zookeeper
Mapreduce的节点:
一个ResourceManager(替代1.x时的JobTracker)
三个DATAManager(替代1.x时的TaskTracker)和DN节点数相同
主机名NNDNZKZKFCJNRMDMNode01111Node1111111Node21111Node3111 具体步骤:
一、# ln -sf /root/hadoop-2.5.2 /home/hadoop2.5.2
二、修改配置文件(hadoop2.5.2/etc/hadoop)
- # vim hadoop-env.sh //修改JAVA_HOME
node1 //DN1节点的主机
node2 //DN2节点的主机
node3 //DN3节点的主机
注意:因为hadoop2.x没有了SecondNode了,因此不要配master文件
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
node0:8020
dfs.namenode.rpc-address.mycluster.nn2
node1:8020
dfs.namenode.http-address.mycluster.nn1
node0:50070
dfs.namenode.http-address.mycluster.nn2
node1:50070
dfs.namenode.shared.edits.dir
qjournal://node1:8485;node2:8485;node3:8485/mycluster
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_dsa
dfs.journalnode.edits.dir
/opt/jn/data
dfs.ha.automatic-failover.enabled
true
fs.defaultFS
hdfs://mycluster
ha.zookeeper.quorum
node0:2181,node1:2181,node2:2181
hadoop.tmp.dir
/opt/hadoop2/
- 安装zookeeper 【zookeeper-3.4.6】
#ln -sf /root/zookeeper-3.4.6 /home/zk
以下操作均在/home/zk下:
配置目录在,zk/conf/
#cp zoo_sample.cfg zoo.cfg //先将配置文件复制一份,重命名
# vim zoo.cfg
1.dataDir=/opt/zookeeper //修改默认值,默认放在/tmp ,
2.文件最后添加以下几行
server.1=node0:2888:3888 //zookeeper所在节点的主机名
server.2=mode1:2888:3888
server.3=node2:2888:3888
修改完成后,创建/opt/zookeeper目录,并创建,编辑文件名为myid的文件
填充内容为server.1=node0:2888:3888 server后面的数字,不同节点对应不同数字,
如第二个zookeeper即node1上的节点对应的数字即为2
将/opt/zookeeper目录拷贝其他节点上
[root@node0 bin]# scp -r zookeeperroot@node1:/opt/
# scp -r zookeeper root@node2:/opt/
在将zookeeper整个软件工作目录拷到其他节点上去
[root@node0 ~]# scp -r zookeeper-3.4.6root@node1:~
# scp -r zookeeper-3.4.6 root@node2:~
别忘记做软连接
# ln -sf /root/zookeeper-3.4.6 /home/zk
配置Zookeeper的环境变量,写入/etc/profile,并将其他节点一并改写
# scp /etc/profile root@node1:/etc/profile
启动zookeeper
先关闭系统防火墙:# systemctl stop firewalld.service
或者# vim /etc/selinux/config //重启
每个节点都要启动:# zkServer.sh start
检测:
[root@node0 zookeeper-3.4.6]# jps
5403 Jps
5305 QuorumPeerMain
以上完成zookeeper的安装部署
下面要启动集群:
启动之前,将其他节点安装Hadoop2.5.2,并将之前的配置文件覆盖到每个节点,保持每个节点的配置文件相同
# scp ./* root@node1:/home/hadoop2.5.2/etc/hadoop
# scp ./* root@node2:/home/hadoop2.5.2/etc/hadoop
# scp ./* root@node3:/home/hadoop2.5.2/etc/hadoop
目录切换到/home/hadoop2.5.2/sbin
- 首先启动JN :(在JN的节点上启动,即node1,node2,node3)
[root@node1 sbin]# ./hadoop-daemon.sh start journalnode
[root@node2 sbin]# ./hadoop-daemon.sh start journalnode
[root@node3 sbin]# ./hadoop-daemon.sh start journalnode
2.在任意一个NN的节点主机上(node0或者node1),格式化HDFS,目录切换到/home/hadoop2.5.2/bin
[root@node0 bin]# ./hdfs namenode –format
3.检查各个节点是JN是否正常,jps或者去当前格式化NN节点的主机下的/home/hadoop2.5.2/logs 查看JN日志
4.拷贝当前格式化NN节点的元数据文件(opt/hadoop2/dfs/name/current/*)
官方有推荐命令:
- 首先启动当前NN(格式化好的):bin]#./hadoop-daemon.sh start namenode
- 检查:jps ,检查/opt/hadoop2/dfs/name/current有没有生成元数据文件
[root@node0current]# ll
总用量 16
-rw-r--r--.1 root root 351 6月 4 20:42fsimage_0000000000000000000
-rw-r--r--.1 root root 62 6月 4 20:42 fsimage_0000000000000000000.md5
-rw-r--r--.1 root root 2 6月 4 20:42 seen_txid
-rw-r--r--. 1 root root 205 6月 4 20:42 VERSION
5.官方文档推荐使用:在没有格式化的NN节点的主机上执行:bin]#./node –bootstrapStandby
这个命令就是将NN(已经格式化)生成元数据内容拷贝到NN(未格式化)的主机上在没有格式化的NN主机上检查有没有拷贝成功opt/hadoop2/dfs/name/current/*
然而,我自己编译的源码,没这玩意……
不过别担心,手动移动是一样有效的,[root@node0 opt]# scp -r hadoop2 root@node1:/opt
6.停止所有HDFS的节点的服务:zookeeper不要停 bin]#./stop-dfs.sh
7.在其中一个NN节点,格式化zkfs bin]# hdfs zkfc -formatZK
8.一次性启动所有dfs节点:sbin]#./start-dfs.sh
出现下图及说明安装无误:
用浏览器访问node0节点和node1节点,至于谁做active谁做standby完全取决于谁先拿到竞争锁
浏览器访问测试:(别忘更改自己的hosts文件,否则请用ip地址)
node0:50070 //NN1
node1:50070 // NN2
上床文件测试一下:
[root@node0 bin]# ./hdfs dfs -mkdir -p/usr/file //HDFS创建目录
[root@node0 bin]# ./hdfs dfs -put /root/zookeeper-3.4.6.tar.gz /usr/file //上传文件
这里说明:Hadoop1.x 默认block大小是64M Hadoop2.x默认block大小是128M
============================================================================
下面配置MapReduce
mapreduce.framework.name
yarn
yarn.resourcemanager.hostname
node0
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
将这些配置文件一并拷贝到其他节点主机上
[root@node0 etc]# scp -r hadooproot@node1:/home/hadoop2.5.2/etc
[root@node0 etc]# scp -r hadooproot@node2:/home/hadoop2.5.2/etc
[root@node0 etc]# scp -r hadooproot@node3:/home/hadoop2.5.2/etc
重启 hadoop
[root@node0 sbin]# ./start-all.sh
浏览器访问 node0:8080
|
|
|