CDH4.1(hadoop-2.0.0-cdh4.1.2)安装部署文档

来源:互联网 发布:五年级小数简便算法 编辑:程序博客网 时间:2024/05/10 21:03

1. 环境说明

        Hadoop的版本选用的hadoop-2.0.0-cdh4.1.2,此版本的hadoop增加了诸如热备等许多新功能。是Cloudera在hadoop0.23基础上改造的,并且把部分功能一起贡献给了Apache。目前Apache Hadoop最新的版本是hadoop-2.0.2-alpha。

        CDH4下载地址:

        https://ccp.cloudera.com/display/SUPPORT/CDH+Downloads

        Apache-Hadoop下载地址:

        http://www.apache.org/dyn/closer.cgi/hadoop/common/

        所有节点都是部署在CentOS的操作系统之上。所有节点的防火墙应该均已关闭。

集群中节点信息如下:2个namenode,3个datanode,1个zookeeper集群,1个NFS服务器,节点之间局域网连接,可以相互ping通,并且设置好SSH无密钥登录。因为机器数量有限,所以namenode和datanode配置在一台机器上,节点IP地址分布如下:

角色

IP地址

namenode

10.28.169.126

namenode

10.28.169.127

datanode0

10.28.169.126

datanode1

10.28.169.127

datanode2

10.28.169.149

NFS Server

10.28.169.149

      节点的jdk实现配置好,NFS事先挂载到两个namenode上。

2. 安装NFS

        NFS是NetworkFile System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件。本文档中涉及到的NFS版本是NFS4。要注意使用NFS共享目录的用户的id号和groupID号必须一致!否则是不能使用的。

        在Hadoop中,NFS用来在namenode之间共享元数据和镜像文件。

        NFS安装见:

        http://www.cnblogs.com/qyddbear/archive/2012/06/05/2536840.html

3. 安装zookeeper

         zookeeper也是hadoop开源项目中的一个子项目。在hadoop的应用中,zookeeper用来选举当前的activenamenode。本文档中zookeeper的版本是zookeeper3.4.3。

         zookeeper安装见:

         http://blog.csdn.net/can007/article/details/7944072

4. 安装Hadoop

4.1 CDH4目录结构

       Hadoop0.23和Hadoop0.20相比,在架构上都有了很大的改变。目录结构以前的相比也有了很大的不同。以下是CDH4版本的目录结构:

其中:

(1)bin目录下是内层的调用脚本,在进行格式化namenode和格式化ZK等操作的时候,会用到这里的hadoop脚本或者hdfs脚本,要注意更改其中的关于jdk的目录设置和其他必要的设置;

(2)sbin目录下是外层的调用脚本,包括启动整个集群的start-dfs.sh脚本等都在此目录下;

(3)lib目录下是native的so文件;

(4)libexec下是配置程序文件;

(5)etc下是配置文件,和老版本的conf目录对应,比如core-site.xml、slaves和hdfs-site.xml文件等都在此目录下。

(6)share目录下是存放的所有的jar包。

       在安装部署hadoop的时候,主要有两个配置文件需要修改,那就是hdfs-site.xml和core-site.xml。下面就对着两个文件的修改进行说明。

4.2修改hdfs-site.xml

[html] view plaincopy
  1. <!--配置dfs.nameservices 这个名称可以随意,如果同时还使用HDFS 的Federation机制,则应该使用逗号分隔nameservices列表-->  
  2. <property>  
  3.   <name>dfs.federation.nameservices</name>  
  4.   <value>sdc</value>  
  5. </property>  
  6. <property>  
  7.   <name>dfs.namenode.name.dir</name>  
  8.   <value>/home/hadoop/hadoop-cdh4-nn</value>  
  9. </property>  
  10. <!--配置:dfs.ha.namenodes.[nameservice ID]. 下面的dinglicom是nameservice ID,nn0和nn1是每台namenode的serviceId。-->  
  11. <property>  
  12.   <name>dfs.ha.namenodes.sdc</name>  
  13.   <value>nn0,nn1</value>   
  14. </property>  
  15. <!--配置rpc通信地址:dfs.namenode.rpc-address.[nameservice ID].-->  
  16. <property>  
  17.   <name>dfs.namenode.rpc-address.sdc.nn1</name>  
  18.   <value>10.28.169.126:8888</value>  
  19. </property>  
  20. <property>  
  21.   <name>dfs.namenode.rpc-address.sdc.nn2</name>  
  22.   <value>10.28.169.127:8888</value>  
  23. </property>  
  24. <!--配置http通信地址:dfs.namenode.http-address.[nameservice ID].-->  
  25. <property>  
  26.   <name>dfs.namenode.http-address.sdc.nn1</name>  
  27.   <value>10.28.169.126:50070</value>  
  28. </property>  
  29. <property>  
  30.   <name>dfs.namenode.http-address.sdc.nn2</name>  
  31.   <value>10.28.169.127:50070</value>  
  32. </property>  
  33. <!--配置 dfs.namenode.shared.edits.dir 是主备namenode共享目录,这里要求主备都可以读写,采用NFS实现共享-->  
  34. <property>  
  35.   <name>dfs.namenode.shared.edits.dir</name>  
  36.   <value>/data/cdh4</value>  
  37. </property>  
  38. <!--配置客户端failover,解决客户端故障转移-->  
  39. <property>  
  40.   <name>dfs.client.failover.proxy.provider.sdc</name>   
  41.   <value>org.apache.Hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
  42. </property>  
  43.    
  44. <!--配置:Fencing,  
  45. 这里dfs.ha.fencing.methods实现的方法有两种sshfence和shell,我下面实现的是sshfence,dfs.ha.fencing.ssh.private-key-files这个是ssh的key file ,用于在Active 节点切换期间的安全机制,确保在任何时间都只有一个NameNode 处于活跃状态。在故障切换期间,haadmin 命令确保在将其它NameNode 转换为Active 状态之前Active 节点处在Standby 状态,或其进程已被终止。  
  46. 至少应该配置一个,因为没有默认配置,因此如果配置则HA 机制将会失效。  
  47. 如果要实现自定义的安全机制,参照org.apache.hadoop.ha.NodeFencer  
  48. -->  
  49. <property>  
  50.   <name>dfs.ha.fencing.methods</name>  
  51.   <value>sshfence</value>  
  52. </property>  
  53. <property>  
  54.   <name>dfs.ha.fencing.ssh.private-key-files</name>  
  55.   <value>/home/hadoop/.ssh/id_rsa</value>  
  56. </property>  
  57. <!--启用失败自动切换-->  
  58. <property>  
  59.   <name>dfs.ha.automatic-failover.enabled</name>  
  60.   <value>true</value>  
  61. </property>  
  62. <!--配置zk集群信息-->  
  63. <property>  
  64.   <name>ha.zookeeper.quorum</name>  
  65.   <value>10.28.169.1:2181,10.28.169.2:2181,10.28.169.3:2181</value>  
  66. </property>  
  67. <!--datanode数据存放目录-->  
  68. <property>  
  69.     <name>dfs.data.dir</name>  
  70.     <value>/home/hadoop/hadoop-cdh4-dn</value>  
  71. </property>  
 

4.3 修改core-site.xml

[html] view plaincopy
  1. <!--fs.default.name for MRV1 ,fs.defaultFS for MRV2(yarn) -->  
  2. <property>  
  3.      <name>fs.defaultFS</name>  
  4.          <!--这个地方的值要和hdfs-site.xml文件中的dfs.federation.nameservices一致-->  
  5.      <value>hdfs://sdc</value>  
  6. </property>  
  7. <property>  
  8.   <name>ha.zookeeper.quorum</name>  
  9.   <value>10.28.169.1:2181,10.28.169.2:2181,10.28.169.3:2181</value>  
  10. </property>  

4.4 Namenode格式化

       在其中一个namenode中,执行如下命令进行namenode的格式化:

       bin/hadoop namenode -format

       格式化之后,要同步两个NameNode上的元数据。如果是新建的HDFS 集群,按照dfs.namenode.name.dir 、dfs.namenode.edits.dir的配置把当前格式化的NameNode节点上的元数据目录复制到另一个NameNode,还应该确保共享存储目录下(dfs.namenode.shared.edits.dir ) 包含NameNode所有的元数据。 此处若不指定ClusterID,则系统会随机生成一个。

4.5 ZK格式化

       格式化ZK使用如下命令:

       bin/hdfs zkfc -formatZK

4.6 HA

       使用如下命令启动整个集群:

       sbin/start-dfs.sh

       默认以HA 方式启动集群,启动后为Standby 状态,使用如下命令设置Active 节点 (手动方式):

       bin/hdfs haadmin –DFSHAadmin –transitionToActivenn0

       如果让nn1 成为变为active, nn0变为standby,则

       bin/hdfs haadmin -DfSHAadmin -failover nn0 nn1

       如果失败(is not ready to become active) 则

       bin/hdfs haadmin -DfSHAadmin -failover--forceactive nn1 nn2

       具体参照bin/hdfs haadmin命令。

4.7 截图

       集群运行成功后,在ZK上的节点信息截图:


       集群运行成功后,active namenode的web界面截图:


       集群运行成功后,standby namenode的web界面截图:

 

原创粉丝点击