posts - 28, comments - 37, trackbacks - 0, articles - 0

hadoop-0.23 hdfs搭建1

Posted on 2011-11-10 21:29 俞灵 阅读(3063) 评论(3)  编辑  收藏

使用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需指定要连接的namenode rpc-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.   这期间可能会遇到许多问题, 但是可以根据抛出的异常自己解决, 我这里就不多说了.

下一篇博客将讲述如何启动backupNodeSecondaryNamenode

 

Feedback

# re: hadoop-0.23 hdfs搭建1  回复  更多评论   

2011-11-23 15:10 by doban
建议博主写一个篇比较详尽的安装文档。我根据这个文档调试了1天时间都没能正常运行起来。

# re: hadoop-0.23 hdfs搭建1  回复  更多评论   

2011-11-28 17:17 by klose
defaultFS应该在$HADOOP_CONF_DIR/core-site.xml配置,关注Hadoop0.23.请关注http://blog.sina.com.cn/jiangbinglover

# re: hadoop-0.23 hdfs搭建1  回复  更多评论   

2012-02-09 16:12 by sunceenjoy
我按照本文最终试验成功,这里的步骤是对的。不过遗漏了几点:
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为配置目录)。这真是瞎搞,统一一下不就得了。

只有注册用户登录后才能发表评论。


网站导航: