`
li.oo
  • 浏览: 51521 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

关于Hadoop 0.23.0 + backupnode分布式安装补充

阅读更多

网上有很多hadoop0.23.0的安装,各有问题。 该版本和hadoop0.21.0目录结构稍有不同。conf里面只有一个slaves, 其它配置在etc/hadoop/目录下。然后参考http://www.oschina.net/question/54100_33772的配置安装(以下内容复制于链接:

 

hadoop 0.23.0比先前的0.20版本有了很大的改动,而我目前最感兴趣的还是HDFS部分的federation部分,由于相关配置资料比较少,下面就把这两天配置情况总结一下作为备忘:

要配置hdfs,关键要知道namenode、datanode、secondarynamenode、backupnode都需要什么配置,下面分别来讨论一下:

1、namenode

1)需要一些目录放置fsimage和edits,对应配置dfs.namenode.name.dir、dfs.namenode.edits.dir

2)打开两个端口来提供RPC服务,一个是给client对应配置dfs.namenode.rpc-address;一个端口是提供给datanode对应配置dfs.namenode.servicerpc-address,如果不指定则使用dfs.namenode.rpc-address,其实这两个端口的RPC服务没什么区别,之所以要区分,我猜想这样分开主要是因为datanode和namenode通讯时不会影响client和namenode的通讯,因为同一个端口同时打开的句柄毕竟是预先设定的,缺省为10个

3)需要打开一个http服务,用于提供web访问以及传输edits log,checkpoint等,对应配置为dfs.namenode.http-address

2、datanode

1)需要指定一个目录来保存blocks,对应配置dfs.datanode.data.dir

2)当然还需要知道namenode所打开的RPC服务端口,以便于建立RPC联接

3、secondarynamenode

本次没有测试,而且所做的工作可以为backupnode取代,就略过了。

4、backupnode

backupnode本质上也是一个namnode,因此namenode需要的它都需要,只是名称上可能有些不同,具体如下:

1)对于保存image和edits的目录与namenode没什么不同dfs.namenode.backup.address

2)对我提供RPC服务的配置项分别叫做dfs.namenode.servicerpc-address(与namenode相同),dfs.namenode.backup.address(namenode叫做dfs.namenode.rpc-address)

3)对我提供的http服务配置项叫做:dfs.namenode.backup.http-address

4)backupnode需要和对应的namenode的http服务通讯因此需要告诉backupnode对应的namenode的http服务的地址,对应配置项dfs.namenode.http-address

5)比较没趣的还要指定一个配置项dfs.federation.nameservice.id,随便可以指定什么值,目前不会使用到,但不知定还不行,就随便指定一个值就可以了,因为backupnode继承namennode导致的,当然也可以不指定,通过其他方法来配置,但那种方法也很不理想,使配置变的怪怪的,所以还是指定一下为好

hadoop 0.23的一个重要feature就是federation,因此通过配置项dfs.federation.nameservices来枚举出全部的 nameserviceID,上面说的一些配置项,后面跟上对应的ID,就可以完成配置了,其实namenode在启动时是这样做的,通过比较本机的ip 和配置项中value的ip来确定该配置想是否应该加入到启动是的conf当中,通过这个手段,就可以将自己需要的配置从配置文件中分离出来了。

另外,传说hadoop 0.23.0兼容0.20的各种配置,但还是有些差别,缺省情况下,系统从hadoop-0.23.0/etc/hadoop/目录中读取配置文件,当然可以通过HDFS_CONF_DIR来指定,基于这一点,我们把配置文件放在hadoop-0.23.0/etc/hadoop/目录下

假设我们有4台机器,h1-1、h1-2、h1-3、h1-4

1)namenode为h1-1、h1-2

2)datanode为h1-1、h1-2、h1-3、h1-4

3)backupnode为h1-3

具体的配置文件如下:

1)h1-1、h1-2、h1-3、h1-4的hadoop-0.23.0/etc/hadoop/slaves

h1-1
h1-2
h1-3
h1-4

2)h1-1、h1-2、h1-4(不包括h1-3)的hadoop-0.23.0/etc/hadoop/hdfs.site的配置如下:

01 <?xml version="1.0"?>
02 <configuration>
03 <property>
04  <name> dfs.namenode.name.dir</name>
05  <value>/home/rmss/zhanggang/hdfs/name</value>
06 </property>
07 <property>
08  <name>dfs.namenode.edits.dir</name>
09  <value>/home/rmss/zhanggang/hdfs/edits</value>
10 </property>
11 <property>
12  <name>dfs.namenode.checkpoint.dir</name>
13  <value>/home/rmss/zhanggang/hdfs/checkpoint</value>
14 </property>
15 <property>
16  <name>dfs.namenode.checkpoint.edits.dir</name>
17  <value>/home/rmss/zhanggang/hdfs/checkpoint_edits</value>
18 </property>
19 <property>
20  <name> dfs.datanode.data.dir</name>
21  <value>/home/rmss/zhanggang/hdfs/data</value>
22 </property>
23 <property>
24  <name>dfs.federation.nameservices</name>
25  <value>ns1,ns2</value>
26 </property>
27 <property>
28  <name>dfs.namenode.rpc-address.ns1</name>
29  <value>h1-1:9000</value>
30 </property>
31 <property>
32  <name>dfs.namenode.http-address.ns1</name>
33  <value>h1-1:50070</value>
34 </property>
35 <property>
36  <name>dfs.namenode.servicerpc-address.ns1</name>
37  <value>h1-1:9005</value
38 </property>
39 <property>
40  <name>dfs.namenode.rpc-address.ns2</name>
41  <value>h1-2:9000</value>
42 </property>
43 <property>
44  <name>dfs.namenode-http-address.ns2</name>
45  <value>h1-2:50070</value>
46 </property>
47 <property>
48  <name>dfs.namenode.servicerpc-address.ns2</name>
49  <value>h1-2:9005</value>
50 </property>
51 <!-- Site specific YARN configuration properties -->
52      
53 </configuration>

 

3)h1-3作为backupnode的hadoop-0.23.0/etc/hadoop/hdfs.site配置文件如下:

01 <?xml version="1.0"?>
02 <configuration>
03 <property>
04  <name> dfs.namenode.name.dir</name>
05  <value>/home/rmss/zhanggang/hdfs/name</value>
06 </property>
07 <property>
08  <name>dfs.namenode.edits.dir</name>
09  <value>/home/rmss/zhanggang/hdfs/edits</value>
10 </property>
11 <property>
12  <name>dfs.namenode.checkpoint.dir</name>
13  <value>/home/rmss/zhanggang/hdfs/checkpoint</value>
14 </property>
15 <property>
16  <name>dfs.namenode.checkpoint.edits.dir</name>
17  <value>/home/rmss/zhanggang/hdfs/checkpoint_edits</value>
18 </property>
19 <property>
20  <name> dfs.datanode.data.dir</name>
21  <value>/home/rmss/zhanggang/hdfs/data</value>
22 </property>
23 <property>
24  <name>dfs.federation.nameservices</name>
25  <value>ns1,ns2</value>
26 </property>
27 <property>
28  <name>dfs.namenode.rpc-address.ns1</name>
29  <value>h1-1:9000</value>
30 </property>
31 <property>
32  <name>dfs.namenode.http-address.ns1</name>
33  <value>h1-1:50070</value>
34 </property>
35 <property>
36  <name>dfs.namenode.servicerpc-address.ns1</name>
37  <value>h1-1:9005</value>
38 </property>
39 <property>
40  <name>dfs.namenode.rpc-address.ns2</name>
41  <value>h1-2:9000</value>
42 </property>
43 <property>
44  <name>dfs.namenode-http-address.ns2</name>
45  <value>h1-2:50070</value>
46 </property>
47 <property>
48  <name>dfs.namenode.servicerpc-address.ns2</name>
49  <value>h1-2:9005</value>
50 </property>
51 <property>
52  <name>dfs.namenode.http-address</name>
53  <value>h1-1:50070</value>
54 </property>
55
56
57 <property>
58  <name>dfs.namenode.backup.http-address</name>
59  <value>h1-3:8003</value>
60 </property>
61 <property>
62  <name>dfs.namenode.backup.address</name>
63  <value>h1-3:8002</value>
64 </property>
65 <property>
66  <name>dfs.namenode.servicerpc-address</name>
67  <value>h1-1:9000</value>
68 </property>
69 <property>
70  <name>dfs.federation.nameservice.id</name>
71  <value>XXXX</value>
72 </property>
73 <!-- Site specific YARN configuration properties-->
74 </configuration>

 

其他一些需要注意的地方:

1)环境变量JAVA_HOME

2)如果显示的datanode名称不对可以指定slave.host.name,到hadoop-0.23.0/etc/hadoop/core.site

如果一切顺利准备启动了

1)bin/hdfs namenode –format –clusterid your_cluster_id

2)sbin/start-hdfs.sh

sbin/start-dfs.sh只负责启动namenode、datanode、secondarynamenode,不负责启动backupnode

3)backupnode启动

ssh h1-3

bin/hdfs namenode -backup

可以打开浏览器分别访问:

1)ns1:

http://h1-1:50070 

2)ns2

http://h1-2:50070

3)backupnode

http://h1-3:8003

由于有多个namenode,因此使用hdfs是需要指定某个具体的namenode,例如在ns1和ns2上创建目录可以用下面命令:

bin/hadoop fs -mkdir hdfs://h1-1:9000/test

bin/hadoop fs -mkdir hdfs://h1-2:9000/test

bin/hadoop fs -ls hdfs://h1-1:9000/

因为启动了backup,因此可以查看backupnode的namespace,如下:

bin/hadoop fs -ls hdfs://h1-3:8002/得到的结果和bin/hadoop fs -ls hdfs://h1-1:9000/是一样的)

一切配置完成后启动失败。提示错误的Namenode 路径配置错误。我猜是因为不能在conf里面找到hdfs-site.xml文件,所以我把/hadoop/etc/hadoop/hdfs-site.xml copy到/hadoop/conf下面, 把yarn-env.sh改成hadoop.env,里面添加JAVA_HOME。再次启动成功,Namenode,datanode,backupnode都正常。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics