MinLu的个人博客分享 http://blog.sciencenet.cn/u/MinLu

博文

Hadoop集群安装笔记

已有 5244 次阅读 2012-2-27 18:43 |个人分类:每天进步一点点|系统分类:科研笔记| 安装, 集群, Hadoop

选取名为node00服务节点作为namenode和jobtracker
选取名为tnode01~tnode08的8个服务节点作为 datanode和tasktracker

1. 使用root命令在node00, tnode01~tnode08上新建一个账户,所有操作都是在hadoop账户下,以确保所有机器上的hadoop部署目录结构相同
命 令:
/usr/sbin/useradd hadoop
/usr/bin/passwd *****
新建成功

2. 实现node00与其他tnode之间进行无密码访问(详细见:http://www.tygbless.tk/?p=115
2.1 namenode与各个slave可以ping通,各个slave之间也能ping通。
2.2 在集群上的所有节点~目录下生成.ssh文件夹和.ssh/authorized_keys文件
注意权限分别是dxwr------和d- wr------,这个可以使用命令:
chmod 700 .ssh和chmod 600 authorized_keys
然后在客户端 执行命令产生公钥/私钥。
ssh-keygen -t rsa
将产生的公钥追加到服务端的authorized_keys文件中,使用命 令
cat ~/.ssh/id_rsa.pub | ssh hadoop@tnode01 "cat ->>~/.ssh/authorized_keys"
这样就能无密码ssh服务端了。

node00到 tnode01~tnode08的无密码访问成功

3. 在个节点上都配置java环境
用 root命令将环境变量配置在/etc/profile中,具体内容:
export JAVA_HOME=/usr/java/jre1.6.0_16
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:/usr/local/cuda/bin:$JAVA_HOME/bin

4. 在node00下新建目录HaoopInstall,存放hadoop-1.0.0.tar.gz安装包
进行解压:tar zxvf hadoop-1.0.0.tar.gz
解压后建立软连接:ln -s hadoop-1.0.0 hadoop

5. 修改hadoop配置文件
5.1 在hadoop-env.sh中添加
export HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop
export JAVA_HOME=/usr/java/jre1.6.0_16
5.2 在master中加入
node00
5.3 在slaves中加入
tnode01
tnode02
tnode03
...
tnode08
5.4 在core-site.xml中配置
<configuration>
        <property>
                <name>fs.default.name</name>
                <value>hdfs://node00:9000</value>
        </property>
</configuration>
5.5 在mapred-site.xml中配置
<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <value>node00:9001</value>
        </property>
</configuration>
5.6 在hdfs-site.xml中配置
<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

把 HadoopInstall拷到各tnode上

6. 运行hadoop的示例,查看是否安装成功
假 设本地有个文本文件data,内容为
hello hadoop bye hadoop
首先将其上传为hdfs://user /input:
hadoop fs -put data /user/input
运行wordcount程序,计算词频:
hadoop jar ${HADOOP_HOME}/hadoop-example-*.jar wordcount /user/input /user/output
查看结果:
hadoop fs -cat /user/output/part-*

运行成功
运 行hadoop dfsadmin -report 却显示各个datanode使用情况。

安装过程中出现的问题:
1. 已解决
关于datanode无法与namenode的9000端口链接,
12/02/20 10:39:31 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 0 time(s).
12/02/20 10:39:32 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 1 time(s).
12/02/20 10:39:33 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 2 time(s).
12/02/20 10:39:34 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 3 time(s).
12/02/20 10:39:35 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 4 time(s).
12/02/20 10:39:36 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 5 time(s).
12/02/20 10:39:37 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 6 time(s).
12/02/20 10:39:38 INFO ipc.Client: Retrying connect to server: node00/192.168.10.2:9000. Already tried 7 time(s).
出 现错误是namenode机器同时支持ipv6,因此需要在namenode的hadoop-env.sh配置中注明只是用ipv4
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

详见 http://hi.baidu.com/cqhwp/blog/item/136e1e2502a14f198b82a153.html

2. 已解决
2012-02-20 14:31:57,346 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-hadoop/dfs/data: namenode namespaceID = 62773022; datanode namespaceID = 572142889
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:376)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:290)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1553)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1492)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1510)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1636)
有 一个很好的解决方案:
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception-incompatible-namespaceids

PS:
自 己无密码访问自己
cat id_dsa.pub >> ~/.ssh/authorized_keys
在~/.bashrc 中添加
PATH=$PATH:/home/hadoop/HadoopInstall/hadoop/bin




https://blog.sciencenet.cn/blog-655085-541886.html

上一篇:Hadoop单节点安装笔记
收藏 IP: 124.205.77.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (6 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-23 20:15

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部