一、环境搭建
1)安装JDK
hadoop是java编写的,首先自然是要安装jdk了,在ubuntu和debian上可以直接用apt-get install sun-java6-jdk安装即可。
2)安装SSH
可以安装open-ssh-server。
3)在namenode上面实现无密码登录
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
输入上面的命令回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。这两个是成对出
现,类似钥匙和锁。
再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_keys文件 ) :
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
完成后可以实现无密码录本机:
ssh localhost 。
若此时连接不上,检查sshd服务是否打开。可以用命令:service sshd start开启服务。
4)下载hadoop
这次我下载的是hadoop的1.2.1版本,应该是最新的稳定版。地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/。
二、hadoop配置
解压下载的hadoop.tar.gz文件,配置文件全部位于conf目录中。主要配置下面四个配置文件,具体配置参数的含义参见:http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html。
1)配置hadoop-env.xml
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26/
export HADOOP_SSH_OPTS="-p 1220"
其中只需要配置java路径,如果ssh端口默认不是22,请设置HADOOP_SSH_OPTS。
2)配置masters和slaves文件,默认都是localhost。我的这个hadoop只用了一台机器,所以不修改。
如果是多台机器,则在masters中配置master,slaves中配置其他节点ip。
3)配置core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:6990</value>
</property>
</configuration>
4)配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/name</value>
<description> </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data</value>
<description> </description>
</property>
</configuration>
5)配置mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:6991</value>
</property>
</configuration>
三、运行hadoop
1) 格式化文件系统
bin/hadoop namenode -format
2)启动hadoop
bin/start-all.sh
3)启动完成用命令jps查看,如果有如下几个进程,代表hadoop启动成功了。
3733 SecondaryNameNode
12592 Jps
3829 JobTracker
3501 NameNode
3942 TaskTracker
3616 DataNode
4)启动成功后,可以通过命令和WEB查看hadoop运行状态。
查看集群状态: $ hadoop dfsadmin -report
Hadoop 的 web 方式查看: http://localhost:50070
四、示例程序
hadoop最经典的示例当然是wordcount程序了,类似于其他语言中的helloworld。运行方法如下:
1)先在本地磁盘建立两个输入文件file01和file02:
$echo“hello world bye world”>file01
$echo“hello hadoop goodbye hadoop”>file02
2)在hdfs中建立一个input目录:$hadoop fs –mkdir input
3)将file01和file02拷贝到hdfs中:
$echo“hello world bye world”>file01
$echo“hello hadoop goodbye hadoop”>file02
2)在hdfs中建立一个input目录:$hadoop fs –mkdir input
3)将file01和file02拷贝到hdfs中:
bin/hadoop fs –copyFromLocal /home/hadoop/file0* input
4)执行wordcount:
bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input output
5)完成之后,查看结果:gzshishujuan@onlinegame-11-219:~/hadoop$ bin/hadoop fs -cat output/part-r-00000
bye 1
goodbye 1
hadoop 2
hello 2
world 2