环境:
ubuntu 13.04, hadoop 0.20.2, jdk1.7
结点分配情况:
master(NameNode), backup(Secondary NameNode), slave(DataNode)。配置/etc/hosts表(hostname)
1. 安装java环境和hadoop
将压缩包解压到某位置,配置/etc/profile文件。
2. 全分布配置过程:(参考Hadoop in Action)
1. 定义公共帐号hadoop-user
2. ssh安装,生成并分配ssh密钥对。分配公钥的相关文件为[hadoop-user@master]~/.ssh/know_hosts。实现master在backup和slave上的无密钥登录。
3. 全分布模式,配置conf/下的core-site.xml, mapred-site.xml, hdfs-site.xml, masters, slaves文件。
3. 启动hadoop
1. 格式化namenode
[hadoop-user@master]bin/hadoop namenode -format
2. 启动
[hadoop-user@master]bin/start-all.sh
4. 运行测试程序wordcount
1. 写入数据
hadoop dfs -put ~/input/* input
问题:could only be replicated to 0 nodes, instead of 1
关防火墙:sudo ufw disable
2. 执行程序
/bin/hadoop jar hadoop-*examples.jar wordcount input output
问题:终端无输出
离开安全模式:hadoop dfsadmin -safemode leave
/etc/hosts:每一个节点只绑定固定ip
5. 检测运行状态
网页方式:master:50070/dfshealth.jsp
命令行方式:hadoop dfsadmin -report
6. 管理技巧
有时候需要在全局模式和伪分布模式下频繁切换,方便程序的调试。结构如下:
将不同模式下的配置文件存放在conf.cluster、conf.pseudo等目录下,然后通过命令ln -s conf.pseudo/ conf建立一个超链接,方便的切换
配置仅仅是艰难征程的第一步,更重要的是理解MapReduce的编程模式,并应用到机器学习的相关算法中去