Hadoop部署详细说明——单机部署

我们在之前的文章中已经说明了怎样进行ssh免密钥登录,现在详细的来说一下Hadoop的详细部署。

一、硬件、软件准备

三台PC机,Ubuntu10.04,Java环境

二、安装过程

安装ssh、设置免密码登录

$ sudo apt-get install ssh
$ sudo apt-get install rsync

这个之前我们已经说过如何使用ssh免密码登录,这样,我们才能使用Hadoop脚本管理远端Hadoop远端的守护进程。

安装Hadoop

hadoop包含三个部分:

Hadoop Common,HDFS,Hadoop MapReduce

(1)下载Hadoop稳定的发行版本。下载地址http://hadoop.apache.org/common/releases.html

(2)配置Hadoop环境变量

sudo vim /etc/profile

在profile最后添加的内容

HADOOP_HOME=/home/blueline/hadoop-0.20.0
export HADOOP_HOME
export HADOOP=$HADOOP_HOME/bin
export PATH=$HADOOP:$PATH

(3)修改hadoop配置文件
hadoop配置文件,在hadoop的conf文件夹中,hadoop的所有配置文件都在里面,这里主要关注以下几个配置文件

hadoop-env.sh

根据提示添加JAVA环境变量JAVA_HOME

# The java implementation to user. Required.
export JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_23

Hadoop单机部署有两种模式:本地模式,伪分布式模式

本地模式

 默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。

 下面的实例将已解压的 conf 目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output

在用户目录下创建一个工作路径test,在~/test目录下建立输入目录input

$ mkdir input
$ cp ~/hadoop-0.20.2/conf/*.xml input

执行下面的查找

 $ egrep dfs[a-z.]+ input/*

输出如下:

input/hadoop-policy.xml:    dfsadmin and mradmin commands to refresh the security policy in-effect.


运行hadoop命令:

hadoop jar ~/hadoop-0.20.2/hadoop-0.20.2-examples.jar grep input output

这个过程我们会看到整个过程产生了一些输出日志,这些日志体现了基本的MapReduce的过程,我们看到了JobClient,MapTask的一些输出日志等等

打开输出结果

 $ cat output/*

结果:

 1       dfsadmin


伪分布式模式

Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。

继续配置配置文件

core-site.xml

添加如下配置

<configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
   </property>
</configuration>


hdfs-site.xml

添加如下配置

<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/lighttpd/hadoopfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/lighttpd/hadoopfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>


实现SSH免密码登录

具体怎么做看之前的博文有提到


启动伪分布式hadoop

(1)格式化一个新的文件系统,挂载在~/test下

hadoop namenode -format 

(2)因为我们把hadoop的已经配置到环境变量中了,所以我们可以在任何目录下执行hadoop的start-all.sh,启动hadoop守护进程

start-all.sh

这时候可以用jps命令查看Hadoop守护进程,我们可以分别看到如图的5个守护进程

同时我们可以浏览一下NameNode和JobTracker的Web接口,分别是

NameNode--   http://localhost:50070
JobTracker-- http://localhost:50030

如下图所示:


我们还使用之前单机部署的那个范例,将hadoop的conf复制到本地文件系统中

hadoop fs -put ~/hadoop-0.20.2/conf input

运行示例程序wordcount

bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output

然后,从分布式文件系统中吧output拷贝出来

hadoop fs -get output ~/output

在本地文件系统可以查看output中的内容

/_logs/history/*

如图:


同样,我们也可以在分布式文件系统中查看我们的输出文件

hadoop fs -cat output/_logs/history/*

完成全部操作之后,执行

stop-all.sh


这时候,我们可以说,hadoop的单机部署的两种不同模式我们都已经成功搭建了,之后我们来尝试一下hadoop完全分布式的搭建


posted @ 2011-10-14 04:02  RichardHu  阅读(3858)  评论(0编辑  收藏  举报