有关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任务。