最近老师叫找几个并行框架来测试一下,想用于分布式图像渲染。
之前了解过google的GFS和mapreduce,然后听说hadoop不错,试着用了一下。
我使用的是hadoop0.20.2版,测试的例子均使用统计单词个数的例子,下面是总结:
首先提一下,命令的格式一般为 bin/hadoop (命令所属集) -(具体命令).
1.单机模式
hadoop支持在单机的情况下,用一个进程以非分布式的方式去运行,主要用于调试.
$ cd $(HADOOP_HOME)
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-*-examples.jar input output
$ cat output/*
2.伪分布式模式
1)
此时需要进入ssh(security shell)
$ssh localhost
2)
为使程序能在无需人干涉的情况下顺利进行,需要将密码登录取消掉
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3)
按一下方式配置各节点:
在 core-site.xml:(namenode)
<property>
<name>fs.default.name</name>
<value>localhost:9000</value>
</property>
在 hdfs-site.xml:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
在 mapred-site.xml:(jobtracker)
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
注意:旧版的hadoop-site.xml 已经被弃用了
4) 格式化文件系统
在首次使用时需要格式化文件系统
bin/hadoop namenode -format (注意是namenode,不是fs)
5) 启动各进程 namenode secondarynamenode datanode jobtracker tasktracker
bin/start-all.sh
6) 建立输入文件目录,并将需要处理的数据放进去
bin/hadoop fs -put conf input
input 会自动创建,将conf目录下的文件放进去,conf为可以为其他,这只是用于处理的数据,不是用来配置的
7) 运行
bin/hadoop jar hadoop-*-exampers.jar wordcount input output
wordcount 为.jar 文件中的一个程序,其实现了map reduce等函数,输出将会在output出现
8) 查看结果
bin/hadoop fs -cat output/*
3.集群模式
1) 我使用了四台机器,ip分别为
192.168.1.1
192.168.1.252
192.168.1.253
192.168.1.254
2) 我将192.168.1.1 设为namenode和jobtracker,其他为datanode和tasktracker
在 core-site.xml:
<property>
<name>fs.default.name</name>
<value>192.168.1.1:9000</value>
</property>
在 hdfs-site.xml:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
在 mapred-site.xml:
<property>
<name>mapred.job.tracker</name>
<value>192.168.1.1:9001</value>
</property>
3) 设置masters\slaves
在masters设置
192.168.1.1
在slaves设置
192.168.1.252
192.168.1.253
192.168.1.254
4)
将上面的hadoop整个目录发送到其他机器,我的机器事先已经设置好机器间即时同步,
该命令我尚未测试
scp -r $(HADOOP_HOME) 192.168.1.252
scp -r $(HADOOP_HOME) 192.168.1.253
scp -r $(HADOOP_HOME) 192.168.1.254
5)
在192.168.1.1启动
bin/start-all.sh
6)
查看运行情况
使用jps命令可查看可机器上目前运行的hadoop进程,右上角的jps显示的是namenode及JobTracker, 其他为datanode和 tasktracer。
7)
运行
bin/hadoop jar hadoop-*-exampers.jar wordcount input output
8)
查看结果
bin/hadoop fs -cat output/*
9)
其他
另外,在一开始,文件系统可能是处于安全模式的,需要按http://blog.csdn.net/jiedushi/article/details/6795863处理。
其他的一些命令:
bin/hadoop fs -rmr directory
bin/hadoop fs -rm filename
bin/hadoop fs -get source destinate
bin/hadoop fs -put source destinate
bin/hadoop fs -ls
hadoop的核心思想是Google的三大论文,目前还没有完全体会其精髓。Hadoop 能用于什么情景,
在特定的前景下又应该如何优化,这些我还不是很清楚。希望大家能交流一下。
hadoop的核心思想是Google的三大论文,目前还没有完全体会其精髓。Hadoop 能用于什么情景,
在特定的前景下又应该如何优化,这些我还不是很清楚。希望大家能交流一下。