Hadoop0.23配置

 

使用hadoop-0.23 搭建hdfs, namenode + datanode

1.HDFS-1052引入了多namenode, HDFS架构变化较大,可以参考hortonworks的文章:http://hortonworks.com/an-introduction-to-hdfs-federation/.

我将在接下来的博客里把此文章翻译一下(另外还有: http://developer.yahoo.com/blogs/hadoop/posts/2011/03/mapreduce-nextgen-scheduler/).

所有namenode共享datanode,各个namenode相互独立,互不影响,每个namenode都有一个backupNodeSecondaryNamenode,提供主备切换功能和备份元数据的功能.

下文的配置信息主要参考HDFS-2471.

2.环境:

a)五台机器 ,linux系统,

b)互相添加ssh-key,后应该可以不用密码互连

c)编译好的0.23版本的包: hadoop-0.23.0-SNAPSHOT.tar.gz

d)每台机器需要安装java1.6或以上版本.并把JAVA_HOME加到$PATH.

e)最好加上psshpscp工具.

这里把五台机器命名为:

Myhost1

Myhost2

Myhost3

Myhost4

Myhost5

假设我们需要搭建如下集群:

Myhost1Myhost2开启 namenode,另外三台机器启动datanode服务.

3.首先把分配到五台机器上,然后解压.(推荐使用pscp, pssh命令)

4.然后在五台机器上安装java,并把JAVA_HOME加到$PATH

5.进入解压后的hadoop目录,编辑 etc/hadoop/hdfs-site.xml

a)Myhost1的配置如下(其中hadoop存放在/home/yuling.sh/目录下):

<property>
<name>fs.defaultFS</name>
<value>hdfs:// Myhost1:9000</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>/home/yuling.sh/cluster-data</value>
</property>

b)Myhost2的配置如下(其中hadoop存放在/home/yuling.sh/目录下):

<property>
<name>fs.defaultFS</name>
<value>hdfs:// Myhost2:9000</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>/home/yuling.sh/cluster-data</value>
</property>

c) 这里把Myhost1集群起名ns1, Myhost1集群起名ns2,三台slavaetc/hadoop/hdfs-site.xml配置如下:

<property>
<name>dfs.federation.nameservices</name>
<value>ns1,ns2</value>
</property>


<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>hdfs:// Myhost1:9000</value>
</property>


<property>
<name>dfs.namenode.http-address.ns1</name>
<value> Myhost1:50070</value>
</property>

<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>hdfs:// Myhost2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value> Myhost2:50070</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/home/yuling.sh/datanode</value>
</property>

d) 解释:namenode需要指定两个参数,用于存放元数据和文件系统的URL. Datanode需指定要连接的namenoderpc-addresshttp-address.以及数据存放位置dfs.datanode.data.dir.

6.然后编辑两台namenodehadoop目录下 etc/hadoop/slaves文件.加入三台slave机器名:

Myhost3

Myhost4

Myhost5

7.现在需要格式化namenode, 由于namenode共享datanode,因此它们的clusterid需要有相同的名字.这里我们把名字设为 yuling .命令如下:

bin/hdfs namenode –format –clusterid yuling

两台机器格式话之后会在/home/yuling.sh/cluster-data下生成元数据目录.

8.启动Myhost1Myhost2上的namenodeslavedatanode服务.命令如下:

sbin/start-hdfs.sh

分别在Myhost1Myhost2下运行.

9.启动之后打开浏览器, 分别查看两namenode启动后状态. URL:

Myhost1:50070Myhost2:50070

10.这期间可能会遇到许多问题, 但是可以根据抛出的异常自己解决, 我这里就不多说了.

-------------------------------------------------------------------------------------------------------------------------

上面是转载于这里:http://www.blogjava.net/shenh062326/archive/2011/11/28/363472.html,按照此文章操作后还是报错,于是摸索了半天,成功了,我碰到的问题如下:

1.要在hadoop-env.sh里面配置JAVA_HOME,(把注释exprot java_home改成你的目录)。注意:hadoop-0.23 里是yarn-env.sh 要改成hadoop-env.sh,具体原因在libexec的某脚本里面

2.把slaves跟这个hadoop-env都移动到etc/hadoop里面去。具体原因也在libexec的某个脚本里面(做了个判断,如果conf目录存在,则用此作为目录,否则用etc/hadoop为配置目录)。

还有些问题有待解决:

1,报错

log4j:ERROR Could not find value for key log4j.appender.NullAppender
log4j:ERROR Could not instantiate appender named "NullAppender".

在你的hadoop文件夹中找到etc/hadoop/log4j.properties文件,在文件中添加:
:log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender

2.老要输入密码,我ssh-keygen弄过了,访问其他机器正常,但但访问本机反而要密码,怎么搞的呢

在本机的authorized_keys加入本机生成的id_rsa.pub:

cat id_rsa.pub >>autuorized_keys

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值