|||
选取名为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
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 05:31
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社