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之间进行无密码访问
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

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)
有一个很好的解决方案:


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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7954ddb383605a4164facc6462673bd6.html