有關Hadoop在Linux下面部署的文章,很多,一搜一大把,這里簡單略過,把注意事項以及實際中所遇到問題,簡單提一下。hadoop 為1.0.2,Centos為6.2,虛擬機為Oracle VM VirtualBox 4.1.12。
前置條件
- 本機名稱為 namenode
- 在 /etc/hosts 增加 namenode/datanode的映射
eg:
192.168.2.31 namenode
192.168.2.31 datanode - ssh namenode
ssh datanode
可以無密碼登陸,登陸成功后,退出即可。 - 切換到hadoop目錄下
#cd /usr/java/hadoop
下面的一切操作都是以此為基礎
部署步驟
- 下載 hadoop 1.0.2解壓到 /usr/java/ 目錄下,解壓目錄為hadoop 1.0.2,重命名為hadoop
#tar xvf hadoop*.tra.gz;mv hadoop* hadoop - 設置conf/hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_31 - #cp -rf src/core/core-default.xml conf/core-site.xml;vi conf/core-site.xml
修改fs.default.name為hdfs://namenode:9000/ - #cp -rf src/hdfs/hdfs-default.xml conf/hdfs-site.xml;vi conf/hdfs-site.xml
修改dfs.replication設置其數值為1 - #cp -rf src/mapred/mapred-default.xml conf/mapred-site.xml;vi conf/mapred-site.xml
設置mapred.job.tracker為 namenode:9001 - 編輯主節點
#vi conf/masters
填寫其值為 namenode 即可 - 編輯從節點
#vi conf/slaves
192.168.2.31 datanode
192.168.2.31 namenode
上面IP為CentOS中自動獲取的IP,namenode 和 datanode ,雖對應IP一致,特意區別之。 - 格式化文件系統
#bin/hadoop namenode –format - 啟動Hadoop
#bin/start-all.sh - #jps
輸入java版本的PS命令jps,查看hadoop啟動的JVM進程,回車后,會看到類似于:[root@namenode ~]# jps
2764 DataNode
2866 SecondaryNameNode
2952 JobTracker
2666 NameNode
3061 TaskTracker
3790 Jps
只要5個JVM進程(Namenode,Datanode,Jobtracker,TaskTracker,SecondaryNameNode)都啟動,說明hadoop正常啟動了。
- Datanode無法啟動一個錯誤
hadoop/logs目錄下存放相關日志輸出
#cat hadoop-root-datanode-namenode.log
大致可以看到
ERROR org.apache.hadoop.dfs.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/test/dfs/data: namenode namespaceID = 343825810; datanode namespaceID = 233853810
修改:
#vi /home/test/dfs/name/current/VERSION
namespaceID=343825810
保存退出,關閉hadoop,然后重啟
#bin/stop-all.sh;bin/start-all.sh
- 在Windows的 c:\WINDOWS\system32\drivers\etc\hosts 文件中,添加映射192.168.2.31 datanode
192.168.2.31 namenode
保存退出即可
本文單節點hadoop配置打包地址:下載地址,可以作為參考。
后面將說一下在Windows Eclipse中遠程調試Hadoop MapReduce任務。