经过浏览器虽然能够查看HDFS的NameNode的状态,若是感受不方便,能够直接使用命令来查看(前提是HDFS已经启动):
备份全分布式集群,复制一份node
http://archive.cloudera.com/cdh5/cdh/5/web
咱们在这个网址下载咱们使用的zk版本为zookeeper-3.4.5-cdh5.14.2.tar.gzapache
下载完成以后,上传到node01的/kkb/soft路径下准备进行安装。bootstrap
node01执行如下命令解压zookeeper的压缩包到node01服务器的/kkb/install路径下去vim
cd /kkb/soft tar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz -C /kkb/install/
进入文件浏览器
cd /kkb/install/zookeeper-3.4.5-cdh5.14.2/conf cp zoo_sample.cfg zoo.cfg mkdir -p /kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas vim zoo.cfg
修改配置bash
dataDir=/kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
在第一台机器的/kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas/服务器
这个路径下建立一个文件,文件名为myid ,文件内容为1app
echo 1 > /kkb/install/zookeeper-3.4.5-cdh5.14.2/zkdatas/myid
第一台机器上面执行如下两个命令
scp -r /kkb/install/zookeeper-3.4.5-cdh5.14.2/ node02:/kkb/install/
scp -r /kkb/install/zookeeper-3.4.5-cdh5.14.2/ node03:/kkb/install/
第二台机器上修改myid的值为2
直接在第二台机器任意路径执行如下命令
echo 2 > /kkb/install/zookeeper-3.4.5-cdh5.14.2/myid
第三台机器上修改myid的值为3
直接在第三台机器任意路径执行如下命令
echo 3 > /kkb/install/zookeeper-3.4.5-cdh5.14.2/myid
export ZOOKEEPER_HOME=/kkb/install/zookeeper-3.4.5-cdh5.14.2
export PATH=$ZOOKEEPER_HOME/bin:$PATH
最后 source /etc/profilessh
主要修改四个文件:core-site.xml, hdfs-site.xml ,mapred-site.xml , yarn-site.xml
一、修改core-site.xml
<!--指定zookeeper的地址--> <property> <name>ha.zookeeper.quorum</name> <value>node01:2181,node02:2181,node03:2181</value> </property> <!--指定namenode的nameservice名为hann--> <property> <name>fs.defaultFS</name> <value>hdfs://hann</value> </property> <!-- 指定hadoop临时目录,这个要手动建立目录 --> <property> <name>hadoop.tmp.dir</name> <value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/tempDatas</value> </property>
二、修改hdfs-site.xml
<!--指定hdfs的nameservice为hann,须要和core-site.xml中的保持一致 --> <property> <name>dfs.nameservices</name> <value>hann</value> </property> <!-- hann下面有两个NameNode,分别是nn1,nn2 --> <property> <name>dfs.ha.namenodes.hann</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通讯地址 --> <property> <name>dfs.namenode.rpc-address.hann.nn1</name> <value>node01:8020</value> </property> <!-- nn2的RPC通讯地址 --> <property> <name>dfs.namenode.rpc-address.hann.nn2</name> <value>node02:8020</value> </property> <!-- nn1的http通讯地址 --> <property> <name>dfs.namenode.http-address.hann.nn1</name> <value>node01:50070</value> </property> <!-- nn2的http通讯地址 --> <property> <name>dfs.namenode.http-address.hann.nn2</name> <value>node02:50070</value> </property> <!-- 指定NameNode的元数据在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node01:8485;node02:8485;node03:8485/hann</value> </property> <!-- 指定JournalNode在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/kkb/install/hadoop-2.6.0-cdh5.14.2/hadoopDatas/dfs/jn</value> </property> <!-- 开启NameNode失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <property> <name>dfs.client.failover.proxy.provider.hann</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制方法,多个机制用换行分割,即每一个机制占用一行--> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <!-- 使用sshfence隔离机制时须要ssh免登录 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <!--文件在HDFS中的备份数(小于等于namenode的数量)--> <property> <name>dfs.replication</name> <value>3</value> </property> <!--关闭HDFS的访问权限--> <property> <name>dfs.permissions</name> <value>false</value> </property> <!-- 配置sshfence隔离机制超时时间(这个是网上看到的一个配置,培训机构没给) --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property>
三、修改mapred-site.xml
<!--指定运行mapreduce的环境是yarn --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- MapReduce JobHistory Server IPC host:port --> <property> <name>mapreduce.jobhistory.address</name> <value>node03:10020</value> </property> <!-- MapReduce JobHistory Server Web UI host:port --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node03:19888</value> </property>
四、修改 yarn-site.xml
<!--开启resource manager HA,默认为false--> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 集群的Id,使用该值确保RM不会作为其它集群的active --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>mycluster</value> </property> <!--配置resource manager 命名--> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 配置第一台机器的resourceManager --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>node03</value> </property> <!-- 配置第二台机器的resourceManager --> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>node02</value> </property> <!-- 指定zk集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>node01:2181,node02:2181,node03:2181</value> <description>For multiple zk services, separate them with comma</description> </property> <!--开启resourcemanager自动恢复功能--> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <!-- 设置存储yarn中状态信息的地方,默认为hdfs,这里设置为zookeeper--> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> <!-- 使在yarn上可以运行mapreduce_shuffle程序--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
一、在三台机器上启动JournalNode
hadoop-daemon.sh start journalnode
二、在第一个NameNode上进行格式化
hadoop namenode -format
三、在第一个NameNode上启动NameNode
hadoop-daemon.sh start namenode
四、第二个namenode同步第一个namenode
hdfs namenode -bootstrapStandby
五、启动第二个namenode
hadoop-daemon.sh start namenode
六、启动zookeeper集群,并进行格式化
在三台机器上执行
zkServer.sh start
而后在node01上执行
hdfs zkfc -formatZK
七、关闭集群而后重启就行了。
先建立一个bin目录,添加hadoopHA.sh的文件
cd
mkdir bin
cd bin
vim hadoopHA.sh
而后添加如下内容
#!/bin/bash case $1 in "start" ){ ssh node01 "source /etc/profile;start-dfs.sh" ssh node02 "source /etc/profile;start-yarn.sh" ssh node03 "source /etc/profile;mr-jobhistory-daemon.sh start historyserver" };; "stop"){ ssh node01 "source /etc/profile;stop-dfs.sh" ssh node02 "source /etc/profile;stop-yarn.sh" ssh node03 "source /etc/profile;mr-jobhistory-daemon.sh stop historyserver" };; esac
而后更改文件的权限
chmod 777 hadoopHA.sh
在bin目录下穿件xcall.sh文件
vim xcall.sh
添加如下内容
#!/bin/bash params=$@ i=201 for (( i=1 ; i <= 3 ; i = $i + 1 )) ; do echo ============= node0$i $params ============= ssh node0$i "source /etc/profile;$params" done
而后更改权限 chmod777 xcall.sh
经过浏览器虽然能够查看HDFS的NameNode的状态,若是感受不方便,能够直接使用命令来查看(前提是HDFS已经启动):
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2