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完全分布式的搭建