apache hadoop namenode的HA搭建
2016-06-06 13:23
549 查看
基本架构如下:
1\\准备机器h15、h16、h17、h18
将zookeeper文件复制到h15\h16\h17上,并且解压
说明如下:zookeeper-3.4.6/zookeeper-3.4.6/docs/zookeeperStarted.html
2\\搭建zookeeper:使用机器h15\h16\h17(非单机版配置需要添加红色字体内容)
【a】分别在h15\h16\h17上zookeeper的解压目录下:/home/zookeeper-3.4.6/conf---à新建一个文件:zoo.cfg
内容:(见备注一)
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=h15:2888:3888
server.2=h16:2888:3888
server.3=h17:2888:3888
【b】分别在h15\h16\h17上的/var/lib目录下创建:vi /var/lib/zookeeper/myid(内容见备注二)
#myid的内容分别是server.1,server.2,server.3的数字;
即h15上是数字”1”,h16上是数字”2”,h17上是数字”3”
【c】分别在h15\h16\h17上配置zookeeper的环境变量
#vi ~/.bash_profile
添加:
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/home/zookeeper-3.4.6/
bin生效一下:source ~/.bash_profile
【d】分别在h15,h16,h17上的zookeeper的bin目录下启动zookeeper:
#zkServer.sh start --------àjps查看进程------》再查看当前的目录下的日志文件:zookeeper.out
如果没有错误日志,那么启动正常!
3\\搭建journal:使用机器h16\h17\h18
\\在原有的h15是namenode的情况下,增加一个namenode,h18
操作查看hadoop官网介绍:
share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
【a】删除h15\h16\17\h18上,原有的数据目录:data1\data2 \home\hadoop
【b】进入h15配置hdfs-site.xml(最终配置的内容见备注三)
“mycluster”:是全局的集群唯一namenodeID
“nn1,nn2”: 是namenode的别名,本机指定实际对应的是h15、h18
<property>
<name>dfs.nameservices</name>
<value>yangjifei</value>
</property>
<property>
<name>dfs.ha.namenodes.yangjifei</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn1</name>
<value>h15:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn2</name>
<value>h18:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn1</name>
<value>h15:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn2</name>
<value>h18:50070</value>
</property>
【c】hdfs-site.xml上再配置journal的机器名称
这里我设置h16\h17\h18为journal机器节点
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://h16:8485;h17:8485;h18:8485/yangjifei</value>
</property>
【d】在hdfs.xml上再指定全局的唯一namenodeID,使用一个java类获取
<property>
<name>dfs.client.failover.proxy.provider.yangjifei</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
【f】在hdfs-site.xml中,再配置私钥所在目录(因为它们是用私钥交互),
一定要用私钥的目录:/root/.ssh/id_rsa
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/path/to/journal/node/local/data</value>
</property>
【g】在hdfs-site.xml中配置namenode自动切换的功能,设置为true
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
【h】在core-site.xml(最终内容见备注四)中,配置故障转移的监控zookeeper节点
<property>
<name>ha.zookeeper.quorum</name>
<value>h15:2181,h16:2181,h17:2181</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yangjifei</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop</value>
</property>
注意:配置结束后必须保证,h15\h16\h17\h18机器的hdfs-site.xml和core-site.xml文件一致
即:复制文件到其他的h16\h17\18集群上
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h16:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h17:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h18:/home/hadoop-2.5.1/etc/hadoop/
注意:需要使core-site.xml上的”hdfs://yangjifei”与hdfs-site.xml文件取得别名一致
4\\配置h18与h15的免密码登录(注意一定也要检查h15和h18是否自己能够登录自己,其他节点也要生成密钥,但是不用追加)
秘钥:包括公钥和私钥
在h18上,将其公钥复制到h15上;然后在h15上,追加其公钥到au??
先在h18上生成秘钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
再复制公钥到h15上:复制到另一个目录下(/home)
#scp ~/.ssh/id_dsa.pub root@192.168.142.115: /home/
#cat /home/id_dsa.pub >> ~/.ssh/authorized_keys
#cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
rm -rf authorized_keys
注:另一种很简单的免密码登陆方法
在h15的根目录下执行
#ssh-keygen ------》不断回车---》直到生成完成
然后执行以下命令
#ssh-copy-id root@h16
#ssh-copy-id root@h17
#ssh-copy-id root@h18
那么可以实现h15免密码登陆h16\h17\h18
5\\在h15上多节点地启动zookeeper:命令目录在/hadoop-2.5.1/sbin下
单节点启动:#hadoop-daemon.sh start
或者进入目录后执行:zookeeper-3.4.6/bin/zkServer.sh start
检查h15\h16\h17是否成功:jps
6\\在\h18\h17\h16上的hadoop的sbin目录下
分别单节点启动journal:./hadoop-daemon.sh start journalnode
如 [root@h18 sbin]# ./hadoop-daemon.sh start journalnode
检查h16\h17\h18启动是否成功:jps
7\\在h15\h18其中一个namenode上格式化:hdfs namenode -format
把刚刚格式化之后的元数据拷贝到另外一个namenode上
复制文件夹的命令:scp -r /home/hadoop root@h18:/home
a) 启动刚刚格式化的namenode :sh hadoop-daemon.sh start namenode
(注意:如果datanode没有起来,那么需要各自执行:sh hadoop-daemon.sh start datanode)
b) 在没有格式化的namenode上执行:hdfs namenode -bootstrapStandby
c) 在h15(或者能够免密码联通所有机器的namenode)上
启动namenode à [h18@root sbin]# sh start-dfs.sh(同时启动zfc的命令)
d) 在其中一个namenode上初始化zkfc:hdfs zkfc –formatZK(只能格式化一次)
8\\在h15上启动集群:start-dfs.sh和start-yarn.sh
全部启动:start-all.sh脚本现在已经废弃,推荐使用start-dfs.sh和start-yarn.sh分别启动HDFS和YARN。
错误:root@h15's password: h15: Permission denied, please try again.
原因是在h15\h18上自己不能ssh连接自己,解决:在h15和h18上先执行
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
再执行:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
9\\测试是否成功(页面上要有standby和active)
错误:org.apache.hadoop.ha.ZKFailoverController: Unable to start failover con
troller. Parent znode does not exist.
解决:由于zkfc没有全部起来,原因是没有格式化成功!即第7步没有成功,需要重新来一次-----》
先在h15上格式化后:hdfs zkfc -formatZK
再在h15\h16上启动:hadoop-daemon.sh start zkfc
如果由于数据的影响,不能正常启动hadoop集群,则需要清除/data1 /data2 /opt/stx/hadoop 后,再执行7、8、9步骤
错误: org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error starting
ResourceManagerorg.apache.hadoop.yarn.exceptions.YarnRuntimeException: Invalid configuration! Can not find valid RM_HA_ID.
解决:yarn-site.xml文件配置节点名称错误!修改
错误:Error: Could not find or load main class resourcemanager
使用命令启动:yarn-daemon.sh start resourcemanager
因为resourcemanger和nodemanger由yarn管理
(增加高可用配置,不用执行7\8\9步)
10\\h15和h18是RM,h15、h16、h17是zookeeper
11\\在h15上配置hadoop/etc/yarn-site.xml(内容见备注五)
再配置,重命名mapred-site.xml.template ----àmapred-site.xml(见备注六)
12\\分别复制到h16\h17\h18上
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h16:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h17:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h18:/home/hadoop-2.5.1/etc/hadoop/
13\\在h15上启动:sh start-yarn.sh-----à只启动一个
14\\在h18上单独启动备用ResourceManager:#yarn-daemon.sh start resourcemanager
因为#sh start-all.sh------à只会启动一台resourcemanage, 所以h18需要另外重启
15\\浏览器访问:
#http://h15:8088
如果访问正常,并且可以监控资源,那么正常
(1)访问备用ResourceManager:
#http://h18:8088
如果直接重定向到原来的http://h15:8088页面,那么正常
(2)如果在h15中,执行kill -9 ? 后,隔10s(备用的,默认汇报给ResourceManager的时间是10s,而其他的是1s)
注:常用命令
start-dfs.sh
start-yarn.sh
zkServer.sh start
hadoop-daemon.sh start journalnode
yarn-daemon.sh start resourcemanager
备注一:zookeeper的配置文件zoo.cfg内容(目录是:/home/zookeeper-3.4.6/conf)
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=h15:2888:3888
server.2=h16:2888:3888
server.3=h17:2888:3888
注意:h15\h16\h17这三台机器的zoo.cfg文件是一样的
备注二:myid文件内容(目录:/var/lib/zookeeper/myid)
2
注意:这个数字二指的是zoo.cfg中“server.**=h?:2888:3888”,的*代表的数字,每台zookeeper对应一个
“server.*=?:2888:3888”,此处举例是h16,所以h16对应得是“server.2=h16:2888:3888”
备注三:hdfs-site.xml的配置文件(目录:/home/hadoop-2.5.1/etc/hadoop/)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1,/data2</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>yangjifei</value>
</property>
<property>
<name>dfs.ha.namenodes.yangjifei</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn1</name>
<value>h15:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn2</name>
<value>h18:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn1</name>
<value>h15:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn2</name>
<value>h18:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://h16:8485;h17:8485;h18:8485/yangjifei</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.yangjifei</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/path/to/journal/node/local/data</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
备注四:core-site.xml的配置内容(目录: /home/hadoop-2.5.1/etc/hadoop/)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yangjifei</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop</value>//该目录是数据元的存放目录
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>h15:2181,h16:2181,h17</value>//zookeeper机器的host别名
</property>
</configuration>
备注五:配置zookeeper的高可用,文件yarn-site.xml(目录:/home/hadoop-2.5.1/etc/hadoop/)
/h15和h18可以互相接管监控资源状况!!他们是ResourceManager
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>h15</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>h18</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>h15,h16,h17</value>
</property>
</configuration>
备注六:zookeeper高可用的配置,mapred-site.xml(目录:/home/hadoop-2.5.1/etc/hadoop/)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
测试已经通过,可以按照步骤搭建!
1\\准备机器h15、h16、h17、h18
将zookeeper文件复制到h15\h16\h17上,并且解压
说明如下:zookeeper-3.4.6/zookeeper-3.4.6/docs/zookeeperStarted.html
2\\搭建zookeeper:使用机器h15\h16\h17(非单机版配置需要添加红色字体内容)
【a】分别在h15\h16\h17上zookeeper的解压目录下:/home/zookeeper-3.4.6/conf---à新建一个文件:zoo.cfg
内容:(见备注一)
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=h15:2888:3888
server.2=h16:2888:3888
server.3=h17:2888:3888
【b】分别在h15\h16\h17上的/var/lib目录下创建:vi /var/lib/zookeeper/myid(内容见备注二)
#myid的内容分别是server.1,server.2,server.3的数字;
即h15上是数字”1”,h16上是数字”2”,h17上是数字”3”
【c】分别在h15\h16\h17上配置zookeeper的环境变量
#vi ~/.bash_profile
添加:
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/home/zookeeper-3.4.6/
bin生效一下:source ~/.bash_profile
【d】分别在h15,h16,h17上的zookeeper的bin目录下启动zookeeper:
#zkServer.sh start --------àjps查看进程------》再查看当前的目录下的日志文件:zookeeper.out
如果没有错误日志,那么启动正常!
3\\搭建journal:使用机器h16\h17\h18
\\在原有的h15是namenode的情况下,增加一个namenode,h18
操作查看hadoop官网介绍:
share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
【a】删除h15\h16\17\h18上,原有的数据目录:data1\data2 \home\hadoop
【b】进入h15配置hdfs-site.xml(最终配置的内容见备注三)
“mycluster”:是全局的集群唯一namenodeID
“nn1,nn2”: 是namenode的别名,本机指定实际对应的是h15、h18
<property>
<name>dfs.nameservices</name>
<value>yangjifei</value>
</property>
<property>
<name>dfs.ha.namenodes.yangjifei</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn1</name>
<value>h15:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn2</name>
<value>h18:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn1</name>
<value>h15:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn2</name>
<value>h18:50070</value>
</property>
【c】hdfs-site.xml上再配置journal的机器名称
这里我设置h16\h17\h18为journal机器节点
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://h16:8485;h17:8485;h18:8485/yangjifei</value>
</property>
【d】在hdfs.xml上再指定全局的唯一namenodeID,使用一个java类获取
<property>
<name>dfs.client.failover.proxy.provider.yangjifei</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
【f】在hdfs-site.xml中,再配置私钥所在目录(因为它们是用私钥交互),
一定要用私钥的目录:/root/.ssh/id_rsa
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/path/to/journal/node/local/data</value>
</property>
【g】在hdfs-site.xml中配置namenode自动切换的功能,设置为true
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
【h】在core-site.xml(最终内容见备注四)中,配置故障转移的监控zookeeper节点
<property>
<name>ha.zookeeper.quorum</name>
<value>h15:2181,h16:2181,h17:2181</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yangjifei</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop</value>
</property>
注意:配置结束后必须保证,h15\h16\h17\h18机器的hdfs-site.xml和core-site.xml文件一致
即:复制文件到其他的h16\h17\18集群上
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h16:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h17:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h18:/home/hadoop-2.5.1/etc/hadoop/
注意:需要使core-site.xml上的”hdfs://yangjifei”与hdfs-site.xml文件取得别名一致
4\\配置h18与h15的免密码登录(注意一定也要检查h15和h18是否自己能够登录自己,其他节点也要生成密钥,但是不用追加)
秘钥:包括公钥和私钥
在h18上,将其公钥复制到h15上;然后在h15上,追加其公钥到au??
先在h18上生成秘钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
再复制公钥到h15上:复制到另一个目录下(/home)
#scp ~/.ssh/id_dsa.pub root@192.168.142.115: /home/
#cat /home/id_dsa.pub >> ~/.ssh/authorized_keys
#cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
rm -rf authorized_keys
注:另一种很简单的免密码登陆方法
在h15的根目录下执行
#ssh-keygen ------》不断回车---》直到生成完成
然后执行以下命令
#ssh-copy-id root@h16
#ssh-copy-id root@h17
#ssh-copy-id root@h18
那么可以实现h15免密码登陆h16\h17\h18
5\\在h15上多节点地启动zookeeper:命令目录在/hadoop-2.5.1/sbin下
单节点启动:#hadoop-daemon.sh start
或者进入目录后执行:zookeeper-3.4.6/bin/zkServer.sh start
检查h15\h16\h17是否成功:jps
6\\在\h18\h17\h16上的hadoop的sbin目录下
分别单节点启动journal:./hadoop-daemon.sh start journalnode
如 [root@h18 sbin]# ./hadoop-daemon.sh start journalnode
检查h16\h17\h18启动是否成功:jps
7\\在h15\h18其中一个namenode上格式化:hdfs namenode -format
把刚刚格式化之后的元数据拷贝到另外一个namenode上
复制文件夹的命令:scp -r /home/hadoop root@h18:/home
a) 启动刚刚格式化的namenode :sh hadoop-daemon.sh start namenode
(注意:如果datanode没有起来,那么需要各自执行:sh hadoop-daemon.sh start datanode)
b) 在没有格式化的namenode上执行:hdfs namenode -bootstrapStandby
c) 在h15(或者能够免密码联通所有机器的namenode)上
启动namenode à [h18@root sbin]# sh start-dfs.sh(同时启动zfc的命令)
d) 在其中一个namenode上初始化zkfc:hdfs zkfc –formatZK(只能格式化一次)
8\\在h15上启动集群:start-dfs.sh和start-yarn.sh
全部启动:start-all.sh脚本现在已经废弃,推荐使用start-dfs.sh和start-yarn.sh分别启动HDFS和YARN。
错误:root@h15's password: h15: Permission denied, please try again.
原因是在h15\h18上自己不能ssh连接自己,解决:在h15和h18上先执行
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
再执行:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
9\\测试是否成功(页面上要有standby和active)
错误:org.apache.hadoop.ha.ZKFailoverController: Unable to start failover con
troller. Parent znode does not exist.
解决:由于zkfc没有全部起来,原因是没有格式化成功!即第7步没有成功,需要重新来一次-----》
先在h15上格式化后:hdfs zkfc -formatZK
再在h15\h16上启动:hadoop-daemon.sh start zkfc
如果由于数据的影响,不能正常启动hadoop集群,则需要清除/data1 /data2 /opt/stx/hadoop 后,再执行7、8、9步骤
错误: org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error starting
ResourceManagerorg.apache.hadoop.yarn.exceptions.YarnRuntimeException: Invalid configuration! Can not find valid RM_HA_ID.
解决:yarn-site.xml文件配置节点名称错误!修改
错误:Error: Could not find or load main class resourcemanager
使用命令启动:yarn-daemon.sh start resourcemanager
因为resourcemanger和nodemanger由yarn管理
(增加高可用配置,不用执行7\8\9步)
10\\h15和h18是RM,h15、h16、h17是zookeeper
11\\在h15上配置hadoop/etc/yarn-site.xml(内容见备注五)
再配置,重命名mapred-site.xml.template ----àmapred-site.xml(见备注六)
12\\分别复制到h16\h17\h18上
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h16:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h17:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h18:/home/hadoop-2.5.1/etc/hadoop/
13\\在h15上启动:sh start-yarn.sh-----à只启动一个
14\\在h18上单独启动备用ResourceManager:#yarn-daemon.sh start resourcemanager
因为#sh start-all.sh------à只会启动一台resourcemanage, 所以h18需要另外重启
15\\浏览器访问:
#http://h15:8088
如果访问正常,并且可以监控资源,那么正常
(1)访问备用ResourceManager:
#http://h18:8088
如果直接重定向到原来的http://h15:8088页面,那么正常
(2)如果在h15中,执行kill -9 ? 后,隔10s(备用的,默认汇报给ResourceManager的时间是10s,而其他的是1s)
注:常用命令
start-dfs.sh
start-yarn.sh
zkServer.sh start
hadoop-daemon.sh start journalnode
yarn-daemon.sh start resourcemanager
备注一:zookeeper的配置文件zoo.cfg内容(目录是:/home/zookeeper-3.4.6/conf)
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=h15:2888:3888
server.2=h16:2888:3888
server.3=h17:2888:3888
注意:h15\h16\h17这三台机器的zoo.cfg文件是一样的
备注二:myid文件内容(目录:/var/lib/zookeeper/myid)
2
注意:这个数字二指的是zoo.cfg中“server.**=h?:2888:3888”,的*代表的数字,每台zookeeper对应一个
“server.*=?:2888:3888”,此处举例是h16,所以h16对应得是“server.2=h16:2888:3888”
备注三:hdfs-site.xml的配置文件(目录:/home/hadoop-2.5.1/etc/hadoop/)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1,/data2</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>yangjifei</value>
</property>
<property>
<name>dfs.ha.namenodes.yangjifei</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn1</name>
<value>h15:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn2</name>
<value>h18:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn1</name>
<value>h15:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn2</name>
<value>h18:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://h16:8485;h17:8485;h18:8485/yangjifei</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.yangjifei</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/path/to/journal/node/local/data</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
备注四:core-site.xml的配置内容(目录: /home/hadoop-2.5.1/etc/hadoop/)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yangjifei</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop</value>//该目录是数据元的存放目录
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>h15:2181,h16:2181,h17</value>//zookeeper机器的host别名
</property>
</configuration>
备注五:配置zookeeper的高可用,文件yarn-site.xml(目录:/home/hadoop-2.5.1/etc/hadoop/)
/h15和h18可以互相接管监控资源状况!!他们是ResourceManager
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>h15</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>h18</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>h15,h16,h17</value>
</property>
</configuration>
备注六:zookeeper高可用的配置,mapred-site.xml(目录:/home/hadoop-2.5.1/etc/hadoop/)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
测试已经通过,可以按照步骤搭建!
相关文章推荐
- Apache AB 参数传递
- Apache 服务器 自带的压力测试工具ab 的使用
- Apache日志配置远程Syslog采集
- LAMP环境官方最新源码编译安装
- Apache随机出现403 Forbidden探析
- Apache 2.2 安装好后新建任意 PHP 文件访问时返回 500 Internal Server Error 解决方法
- MySQL, Apache, PHP 安装教程
- apache mina: 写数据过程
- apache mina : 用户自定义数据存储
- 使用apache common-io 监控文件变化
- WebSocket
- Apache自带的 ab(apache benchmark,基准测试,压力测试)使用
- 全站之路一路坑(2)——在Apache下部署django博客
- 严重: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException at org.apache.
- apache url路由配置重写
- Android中无法访问本地Apache服务器原因
- Mac自带Apache搭建PHP开发环境(二)连接MySQL报错SQLSTATE[HY000] [2002] No such file or directory
- php apache mysql 64位
- linux apache + mysql +php no-yum
- twitter heron流计算系统总结 基本框架(一) --- 纸上谈兵