扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
目录
成都创新互联公司是一家业务范围包括IDC托管业务,网站空间、主机租用、主机托管,四川、重庆、广东电信服务器租用,德阳机房服务器托管,成都网通服务器托管,成都服务器租用,业务范围遍及中国大陆、港澳台以及欧美等多个国家及地区的互联网数据服务公司。前言
一、HADOOP HA之NameNode HA集群配置
1、修改hadoop-env.sh
2、修改core-site.xml
3、修改hdfs-site.xml
4、修改workers
5、同步配置文件
6、启动zookeeper集群
7、启动journalnode
8、格式化namenode
9、同步元数据
10、格式化ZKFC
11、启动HDFS
二、HADOOP HA之NameNode HA集群应用
1、查看两个NameNode的运行状态
(1)命令行 (nn2是 NameNode的名字,可以换成nn1)
(2)Hadoop的Web UI界面
2、关闭集群中的原Active NameNode,查看原Standby NameNode的运行状态
3、重新启动原Active NameNode,依次查看原Active NameNode和原Standby NameNode的运行状态
问题
1、Active NameNode关闭后Standby NameNode没有自动切换成Active NameNode
2、两个NameNode的运行状态都是Standby
3、Standby NameNode启动不了
参考
本文只讲解HADOOP HA的NameNode HA集群配置与应用,Yarn HA不作讲解。
集群基础环境准备:
1、已经搭建好Hadoop和zookeeper集群
2、在本地主机的 /etc/hosts文件修改集群各个主机名和IP的映射关系(访问Hadoop的Web UI界面时需要)
3、配置好ssh免登陆
找到你配置hadoop的目录,想不起来可以用which hadoop命令行查看,在bin的同级目录etc下找到hadoop配置文件所在目录,进行修改配置文件。
1、修改hadoop-env.shvi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk-8u162-linux-x64/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/opt/module
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
把jdk和hadoop的配置路径换成你自己的,可以用which java和which hadoop命令行查看。
2、修改core-site.xmlvi core-site.xml
fs.defaultFS hdfs://mycluster hadoop.tmp.dir file:/home/hadoop/tmp io.file.buffer.size 131702 ha.zookeeper.quorum hadoop1:2181,hadoop2:2181,hadoop3:2181
我Hadoop集群的主机名是hadoop1、hadoop2、hadoop3(记得完成主机名和ip地址映射,不然会出问题),换成你自己集群的主机名。
3、修改hdfs-site.xmlvi hdfs-site.xml
dfs.namenode.name.dir file:/home/hadoop/hdfs_name dfs.datanode.data.dir file:/home/hadoop/hdfs_data dfs.replication 2 dfs.webhdfs.enabled true dfs.nameservices mycluster dfs.ha.namenodes.mycluster nn1,nn2 dfs.namenode.rpc-address.mycluster.nn1 hadoop1:8020 dfs.namenode.http-address.mycluster.nn1 hadoop1:9870 dfs.namenode.rpc-address.mycluster.nn2 hadoop2:8020 dfs.namenode.http-address.mycluster.nn2 hadoop2:9870 dfs.namenode.shared.edits.dir qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster dfs.journalnode.edits.dir /home/hadoop/data/journaldata dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.mycluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence
shell(/bin/true) dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000
集群的主机名和存放数据的目录换成你自己的。
4、修改workersvi workers
hadoop1
hadoop2
hadoop3
换成你自己集群的主机名。
5、同步配置文件返回上一层目录,把hadoop目录下的配置文件同步给集群中的其他主机,-r后加目录路径,@后加主机名,如果新建了存放数据的目录也要同步给集群中的其他主机。
cd ..
scp -r hadoop root@hadoop2:$PWD
6、启动zookeeper集群在集群中的每台主机上启动zookeeper,在zookeeper安装目录下输入:
bin/zkServer.sh start
查看状态:一般是一个leader,两个follower
bin/zkServer.sh status
7、启动journalnode在集群中的每台主机上启动journalnode,用jps命令行查看进程,可以看到JournalNode进程
hdfs --daemon start journalnode
jps
8、格式化namenode格式化和启动namenode,在hadoop1上执行命令:
hdfs namenode -format
hdfs --daemon start namenode
9、同步元数据在hadoop2上执行命令:
hdfs namenode -bootstrapStandby
10、格式化ZKFC在哪台主机上执行,哪台主机就将成为第一次的Active Namenode
hdfs zkfc -formatZK
11、启动HDFS在hadoop1上执行命令:
start-dfs.sh
二、HADOOP HA之NameNode HA集群应用
1、查看两个NameNode的运行状态有两种方式可以查看:
(1)命令行 (nn2是 NameNode的名字,可以换成nn1)hdfs haadmin -getServiceState nn2
(2)Hadoop的Web UI界面在浏览器网址栏输入:http://hadoop1:9870/ 和 http://hadoop2:9870/
我是用docker在虚拟机里搭建hadoop集群的,所以用虚拟机主机里的浏览器查看,如果是开了三台虚拟机搭建hadoop集群的话,在电脑本地的浏览器查看即可。如果用主机名+端口访问不了,应该是主机号和ip地址映射没做好,可以直接用ip地址+端口号访问;如果还是访问不了那就是配置文件没改好,或者是防火墙没关闭等等。
2、关闭集群中的原Active NameNode,查看原Standby NameNode的运行状态hadoop1的NameNode原来是Active NameNode,hadoop2的NameNode原来是Standby NameNode,所以在hadoop1中关闭NameNode,输入:
hdfs --daemon stop namenode
也可以用jps查看进程号,kill -9 进程号,结束NameNode进程。刷新网页后,发现hadoop1的NameNode访问不了,hadoop2的NameNode变成了Active NameNode。
3、重新启动原Active NameNode,依次查看原Active NameNode和原Standby NameNode的运行状态在hadoop1中输入:
hdfs --daemon start namenode
刷新网页后,hadoop1的NameNode可以访问且变成了Standby NameNode,hadoop2的NameNode是Active NameNode。
问题 1、Active NameNode关闭后Standby NameNode没有自动切换成Active NameNode解决方法:CentOS可能没有自带fuster 程序,但是在hdfs-site.xml中用到了fuster 程序,所以得自己安装(每台主机上都要安装),安装完如果还是不行,可以重启所有虚拟机再试试。
yum -y install psmisc
2、两个NameNode的运行状态都是Standby解决方法:强制选定一个NameNode为Active NameNode,nn1是名称节点的名字,换成你选定的
NameNode的名字
hdfs haadmin -transitionToActive --forcemanual nn1
3、Standby NameNode启动不了解决方法:从Active NameNode拉取FSimage和元数据,再启动Standby NameNode
hdfs namenode -bootstrapStandby
参考黑马程序员:HADOOP HA集群搭建
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流