选择两台机器进行搭建,其中一台作为namenode(10.7.18.44),另一台作为datanode(10.7.18.45)。
首先,需要在两台机器上配置一些文件:
1 在hadoop中的conf目录,配置masters和slaves文件。masters中写入10.7.18.44,slaves中写入10.7.18.45。
2 配置core-site.xml文件。
<property>
<name>fs.default.name</name>
<value>hdfs://10.7.18.44:9000</value>
</property>
3 配置hdfs-site.xml文件。(在slaves的节点中可以不用配置该文件)
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
</property>
ps:dfs.name.dir这个参数用于确定将HDFS文件系统的元信息保存在什么目录下。如果这个参数设置为多个目录,那么这些目录下都保存着元信息的多个备份。dfs.data.dir这个参数用于确定将HDFS文件系统的数据保存在什么目录下。我们可以将这个参数设置为多个分区上目录,即可将HDFS建立在不同分区上。这两个参数的值必须事先建立起来。
4 配置mapred-site.xml文件。
<property>
<name>mapred.job.tracker</name>
<value>10.7.18.44:9001</value>
</property>
然后,开始启动hadoop
1 在master上格式化namenode
bin/hadoop namenode -format
2 启动hadoop
bin/start-all.sh
3 查看各节点是否启动
jps
4 查看整个系统状态(能显示当前连接的slave数目,即datanode数)
hadoop dfsadmin -report
最后,跑一个实际的程序
1 准备测试文件
echo "mu ha ha ni da ye da ye da da" > input/test.txt
2 将测试文件上传到hdfs文件系统上
bin/hadoop fs -put input/test.txt multiTest
3 执行程序(这里,我们使用example包中的wordcount程序)
bin/hadoop jar hadoop-examples-1.0.2.jar wordcount multiTest result
4 查看结果
bin/hadoop fs -cat result/part-r-00000
也可以将hdfs文件系统上的文件拿到本地进行查看
bin/hadoop fs -get result result
cat result/part-r-00000
5 完成全部操作后,停止守护进程
bin/stop-all.sh
经过以上三步,集群的搭建以及在集群上的试验已经进行完毕,可以通过网址访问NameNode和JobTracker
NameNode - http://10.7.18.44:50070/
JobTracker - http://10.7.18.45:50030/