共计 11119 个字符,预计需要花费 28 分钟才能阅读完成。
在文章《Ubuntu 和 CentOS 中分布式配置 Hadoop-2.2.0》(见 http://www.linuxidc.com/Linux/2014-01/95799.htm)介绍了 hadoop 2.2.0 最基本的配置。hadoop 2.2.0 中提供了 HA 的功能,本文在前文的基础上介绍 hadoop 2.2.0HA 的配置。
说明:
下文中的两台 namenode 机器名分别是 namenode1 和 namenode2. 其中 namenode1 为 active node,namenode2 为 standby namenode。
journalnode 机器有三台(注意:至少为三台),分别是 journalnode1,journalnode2,journalnode3。(journalnode 的机器的数量可以是 3,5,7…)
另外,注意保持两台 namenode 的一致性,大部分在 namenode1 上进行的操作,也要在 namenode2 上进行一遍。
————————————– 分割线 ————————————–
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
————————————– 分割线 ————————————–
配置文件
core-site.xml 和 hdfs-site.xml 的相关配置如下:
1、core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://mycluster</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/tmp/hadoop2.2.0</value>
- </property>
- </configuration>
2、hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>/dfs/data</value>
- </property>
- <property>
- <name>dfs.permissions</name>
- <value>false</value>
- </property>
- <property>
- <name>dfs.nameservices</name>
- <value>mycluster</value>
- </property>
- <property>
- <name>dfs.ha.namenodes.mycluster</name>
- <value>nn1,nn2</value>
- </property>
- <property>
- <name>dfs.namenode.rpc-address.mycluster.nn1</name>
- <value>namenode1:8020</value>
- </property>
- <property>
- <name>dfs.namenode.rpc-address.mycluster.nn2</name>
- <value>namenode2:8020</value>
- </property>
- <property>
- <name>dfs.namenode.http-address.mycluster.nn1</name>
- <value>namenode1:50070</value>
- </property>
- <property>
- <name>dfs.namenode.http-address.mycluster.nn2</name>
- <value>namenode2:50070</value>
- </property>
- <property>
- <name>dfs.namenode.shared.edits.dir</name>
- <value>qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster</value>
- </property>
- <property>
- <name>dfs.journalnode.edits.dir</name>
- <value>/home/dfs/journal</value>
- </property>
- <property>
- <name>dfs.client.failover.proxy.provider.mycluster</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>/home/root/.ssh/id_rsa</value>
- </property>
- <property>
- <name>dfs.ha.fencing.ssh.connect-timeout</name>
- <value>6000</value>
- </property>
- <property>
- <name>dfs.ha.automatic-failover.enabled</name>
- <value>false</value>
- </property>
- </configuration>
重启使配置生效。
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-08/105154p2.htm
启动过程:
1、在 journalnode 机器上启动 journalnode
- sbin/Hadoop-daemon.sh start journalnode
2、在 namenode 机器上启动 namenode(这里假定 namenode1 为 active,namenode2 为 standby)
a)如果是首次启动,在 namenode1 上运行 format 命令:
bin/hadoop namenode -format
b)如果是非首次启动,则在 namenode1 上运行以下命令
- bin/hdfs namenode -initializeSharedEdits
c)在 namenode1 上启动 namenode:
sbin/hadoop-daemon.sh start namenode
d)在 namenode2 上运行以下命令:
-bootstrapStandbysbin/hadoop-daemon.sh start namenode
如果失败的话,直接把 namenode1 的 dfs.namenode.name.dir 目录的数据直接拷贝到 namenode2 的 dfs.namenode.name.dir 目录。
然后在 namenode2 上启动 namenode:
sbin/hadoop-daemon.sh start namenode
现在,namenode1 和 namenode2 都启动了,都是“standby”状态。
e)在 namenode1 上运行命令:
bin/hdfs haadmin -transitionToActive nn1
这样,namenode1 的状态就变成了“active”。
3、在 datanode 机器上启动 datanode
sbin/hadoop-daemon.sh start datanode
到此时,hadoop2.0 的 HDFS 就可以正常使用了,并且 HA 功能已经可用。
检查
可以通过以下页面查看 active namenode(namenode1) 和 standby namenode(namenode2) 的状态
http://namenode1:50070/dfshealth.jsp
http://namenode2:50070/dfshealth.jsp
另外,可以运行常用的 HDFS shell 命令测试 HDFS 是否正常。
HA 的 failover 测试
停掉 namenode1 的 namenode(模拟 namenode1 挂掉),这时会发现 hdfs 不能用了。
在 namenode2 上运行以下命令:
bin/hdfs haadmin -transitionToActive nn2
运行命令成功后,namenode2 的状态就变成“active”,这时 HDFS 恢复正常。
在 namenode1 上运行一下命令做主从切换命令:
bin/hdfs haadmin -failover nn1 nn2
此时 namenode2 的状态就变成“active”,而 namenode1 的状态变成“standby”。
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
在文章《Ubuntu 和 CentOS 中分布式配置 Hadoop-2.2.0》(见 http://www.linuxidc.com/Linux/2014-01/95799.htm)介绍了 hadoop 2.2.0 最基本的配置。hadoop 2.2.0 中提供了 HA 的功能,本文在前文的基础上介绍 hadoop 2.2.0HA 的配置。
说明:
下文中的两台 namenode 机器名分别是 namenode1 和 namenode2. 其中 namenode1 为 active node,namenode2 为 standby namenode。
journalnode 机器有三台(注意:至少为三台),分别是 journalnode1,journalnode2,journalnode3。(journalnode 的机器的数量可以是 3,5,7…)
另外,注意保持两台 namenode 的一致性,大部分在 namenode1 上进行的操作,也要在 namenode2 上进行一遍。
————————————– 分割线 ————————————–
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
————————————– 分割线 ————————————–
配置文件
core-site.xml 和 hdfs-site.xml 的相关配置如下:
1、core-site.xml
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://mycluster</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/tmp/hadoop2.2.0</value>
- </property>
- </configuration>
2、hdfs-site.xml
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>/dfs/data</value>
- </property>
- <property>
- <name>dfs.permissions</name>
- <value>false</value>
- </property>
- <property>
- <name>dfs.nameservices</name>
- <value>mycluster</value>
- </property>
- <property>
- <name>dfs.ha.namenodes.mycluster</name>
- <value>nn1,nn2</value>
- </property>
- <property>
- <name>dfs.namenode.rpc-address.mycluster.nn1</name>
- <value>namenode1:8020</value>
- </property>
- <property>
- <name>dfs.namenode.rpc-address.mycluster.nn2</name>
- <value>namenode2:8020</value>
- </property>
- <property>
- <name>dfs.namenode.http-address.mycluster.nn1</name>
- <value>namenode1:50070</value>
- </property>
- <property>
- <name>dfs.namenode.http-address.mycluster.nn2</name>
- <value>namenode2:50070</value>
- </property>
- <property>
- <name>dfs.namenode.shared.edits.dir</name>
- <value>qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster</value>
- </property>
- <property>
- <name>dfs.journalnode.edits.dir</name>
- <value>/home/dfs/journal</value>
- </property>
- <property>
- <name>dfs.client.failover.proxy.provider.mycluster</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>/home/root/.ssh/id_rsa</value>
- </property>
- <property>
- <name>dfs.ha.fencing.ssh.connect-timeout</name>
- <value>6000</value>
- </property>
- <property>
- <name>dfs.ha.automatic-failover.enabled</name>
- <value>false</value>
- </property>
- </configuration>
重启使配置生效。
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-08/105154p2.htm