此环境所应用的软件及相关安装包链接:https://pan.baidu.com/s/1LctrNBWNvJeXT8M-OC3wcQ
提取码:iuii
1.Hadoop HA原理可看上一篇博客。
2.此环境是在大数据学习系列(八)Hadoop1.X全分布式项目及环境搭建 的基础上进行搭建的,所以需先准备好那个环境,包括IP hosts hostname 配置,hadoop jdk的安装及配置等。
IP | hostname |
192.168.40.33 | eleven-2 |
192.168.40.34 | eleven-3 |
192.168.40.35 | eleven-4 |
192.168.40.36 | eleven-5 |
各服务器上需要搭建的角色
|
NN-1 |
NN-2 |
DN |
ZK |
ZKFC |
JNN |
eleven-2 |
* |
|
|
|
* |
* |
eleven-3 |
|
* |
* |
* |
* |
* |
eleven-4 |
|
|
* |
* |
|
* |
eleven-5 |
|
|
* |
* |
|
|
1.修改hdfs.site.xml
dfs.replication
3
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
eleven-2:8020
dfs.namenode.rpc-address.mycluster.nn2
eleven-3:8020
dfs.namenode.http-address.mycluster.nn1
eleven-2:50070
dfs.namenode.http-address.mycluster.nn2
eleven-3:50070
dfs.namenode.shared.edits.dir
qjournal://eleven-2:8485;eleven-3:8485;eleven-4: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
/var/sxt/hadoop/ha/journalnode
dfs.ha.automatic-failover.enabled
true
2.修改core-site.xml文件
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/var/sxt/hadoop/ha
ha.zookeeper.quorum
eleven-3:2181,eleven-4:2181,eleven-5:2181
3.修改slaves文件,配置datanode节点,前提是已经配置好了hostname及hosts.
eleven-3
eleven-4
eleven-5
4.配置完成后同步四台服务器的配置文件。
1.在eleven-3,eleven-4,eleven-5上上传zookeeper安装包,并解压至自己想要存放的目录下,我的安装路径为: /opt/sxt/zookeeper-3.4.6
2.配置zookeeper环境变量
修改/etc/profile文件为如下,然后同步eleven-3,eleven-4,eleven-5三台服务器的profile文件,并重新读一下(source /etc/profile)
3.修改配置文件,安装路径下的/conf/zoo.cfg文件, 我的文件路径为: /opt/sxt/zookeeper-3.4.6/conf/zoo.cfg,最后同步三台服务器的配置。
1.数据存放路径,如果没有此文件夹,需要创建这个路径
dataDir=/var/sxt/zk
2.配置zookeeper集群中服务器的地址及端口
server.1=eleven-3:2888:3888
server.2=eleven-4:2888:3888
server.3=eleven-5:2888:3888
4.在上面配置的dataDir路径下 配置数字节点规划。
1.三台服务器切换至 /var/sxt/zk
2.echo 1 > myid //配置数字节点规划,三台zk服务器分别配置成1,2,3.
zk集群会根据此值的大小确定哪个是主节点
1.因为zookeeper是用来服务协调的,所以它需要知道整个项目的状态和信息,所以需要先把zk启动起来。
在zk的三台服务器上执行启动命令,如下:(前提是配置好了环境变量哟,如果没配置要切换到bin目录下执行)
zkServer.sh start //启动命令
zkServer.sh stop //停止命令
zkServer.sh status //查看状态命令
zkCli.sh //打开zk客户端,可以查看此时在zk上的服务的相关信息。
2.启动三台journalnode。
命令如下:
hadoop-daemon.sh start journalnode
3.启动namenode
1.在主namenode上执行格式化操作。命令如下
hdfs namenode –format
2.启动namenode,在主节点上执行启动命令
hadoop-deamon.sh start namenode //启动命令
hadoop-deamon.sh stop namenode //停止命令
3.另一台namenode不用重启启动,只需要执行以下同步命令即可,命令如下:
hdfs namenode -bootstrapStandby
4.在namenode上格式话zk,并启动zkfc
此时所有主要的角色都启动起来了,还有一个 zkfc,
1.在主namenode上执行zk初始化操作。命令如下:
hdfs zkfc -formatZK
2.启动zkfc,在主namenode上执行命令
hadoop-daemon.sh start zkfc
还需最后一步,在主namenode节点上执行启动操作,会启动其他的角色datanode 备namenode
start-dfs.sh
5.关闭 项目
1.先关hdfs项目
stop-dfs.sh
2.再关zookeeper集群
zkServer.sh stop
到此项目已经搭建并启动完毕。
首次启动需要按照上述步骤执行,
以后启动只需要执行两步操作
1.启动zk(在zk服务器上)
zkServer.sh start /zkServer.sh stop
2.启动hdfs,在主namenode上
start-dfs.sh /stop-dfs.sh