hadoop 单机、伪分布式及集群下的运行测试总结

最近老师叫找几个并行框架来测试一下,想用于分布式图像渲染。
之前了解过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 能用于什么情景,
在特定的前景下又应该如何优化,这些我还不是很清楚。希望大家能交流一下。


你可能感兴趣的:(hadoop,集群,Google,测试,input,output)