Hadoop是Apache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook和Yahoo等等。对于我来说,最近的一个使用点就是服务集成平台的日志分析。服务集成平台的日志量将会很大,而这也正好符合了分布式计算的适用场景(日志分析和索引建立就是两大应用场景)。
今天我们来实际搭建一下Hadoop 2.2.0版,实战环境为目前主流服务器操作系统CentOS 5.8系统。
一、实战环境
1
2
3
4
5
6
|
系统版本:CentOS
5.8
x86_64
JAVA版本:JDK-
1.7
.0_25
Hadoop版本:hadoop-
2.2
.
0
192.168
.
149.128
namenode (充当namenode、secondary namenode和ResourceManager角色)
192.168
.
149.129
datanode1 (充当datanode、nodemanager角色)
192.168
.
149.130
datanode2 (充当datanode、nodemanager角色)
|
二、系统准备
1、Hadoop可以从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,所以如果需要在64位系统上部署则需要单独下载src 源码自行编译。(如果是真实线上环境,请下载64位hadoop版本,这样可以避免很多问题,这里我实验采用的是32位版本)
1
2
3
4
|
Hadoop下载地址
http:
//apache.claz.org/hadoop/common/hadoop-2.2.0/
Java 下载下载
http:
//www.oracle.com/technetwork/java/javase/downloads/index.html
|
2、我们这里采用三台CnetOS服务器来搭建Hadoop集群,分别的角色如上已经注明。
第一步:我们需要在三台服务器的/etc/hosts里面设置对应的主机名如下(真实环境可以使用内网DNS解析)
[root@node1 hadoop]# cat /etc/hosts
1
2
3
4
5
6
|
# Do not remove the following line, or
var
ious programs
# that require network functionality will fail.
127.0
.
0.1
localhost.localdomain localhost
192.168
.
149.128
node1
192.168
.
149.129
node2
192.168
.
149.130
node3
|
(注* 我们需要在namenode、datanode三台服务器上都配置hosts解析)
第二步:从namenode上无密码登陆各台datanode服务器,需要做如下配置:
1
2
3
4
|
在namenode
128
上执行ssh-keygen,一路Enter回车即可。
然后把公钥/root/.ssh/id_rsa.pub拷贝到datanode服务器即可,拷贝方法如下:
ssh-copy-id -i .ssh/id_rsa.pub root@
192.168
.
149.129
ssh-copy-id -i .ssh/id_rsa.pub root@
192.168
.
149.130
|
三、Java安装配置
1
2
3
4
5
|
tar -xvzf jdk-7u25-linux-x64.tar.gz &&mkdir -p /usr/java/ ; mv /jdk1.
7
.0_25 /usr/java/ 即可。
安装完毕并配置java环境变量,在/etc/profile末尾添加如下代码:
export JAVA_HOME=/usr/java/jdk1.
7
.0_25/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVE_HOME/lib/dt.jar:$JAVE_HOME/lib/tools.jar:./
|
保存退出即可,然后执行source /etc/profile 生效。在命令行执行java -version 如下代表JAVA安装成功。
1
2
3
4
|
[root@node1 ~]# java -version
java version
"1.7.0_25"
Java(TM) SE Runtime Environment (build
1.7
.0_25-b15)
Java HotSpot(TM)
64
-Bit Server VM (build
23.25
-b01, mixed mode)
|
(注* 我们需要在namenode、datanode三台服务器上都安装Java JDK版本)
四、Hadoop版本安装
官方下载的hadoop2.2.0版本,不用编译直接解压安装就可以使用了,如下:
第一步解压:
1
2
|
tar -xzvf hadoop-
2.2
.
0
.tar.gz &&mv hadoop-
2.2
.
0
/data/hadoop/
(注* 先在namenode服务器上都安装hadoop版本即可,datanode先不用安装,待会修改完配置后统一安装datanode)
|
第二步配置变量:
1
2
3
4
5
|
在/etc/profile末尾继续添加如下代码,并执行source /etc/profile生效。
export HADOOP_HOME=/data/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin/
export JAVA_LIBRARY_PATH=/data/hadoop/lib/
native
/
(注* 我们需要在namenode、datanode三台服务器上都配置Hadoop相关变量)
|
五、配置Hadoop
在namenode上配置,我们需要修改如下几个地方:
1、修改vi /data/hadoop/etc/hadoop/core-site.xml 内容为如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?xml version=
"1.0"
?>
<?xml-stylesheet type=
"text/xsl"
href=\'#\'" Put site-specific property overrides
in
this
file. -->
<configuration>
<property>
<name>fs.
default
.name</name>
<value>hdfs:
//192.168.149.128:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<description>A base
for
other temporary directories.</description>
</property>
</configuration>
|
2、修改vi /data/hadoop/etc/hadoop/mapred-site.xml内容为如下:
1
2
3
4
5
6
7
8
|
<?xml version=
"1.0"
?>
<?xml-stylesheet type=
"text/xsl"
href=\'#\'" Put site-specific property overrides
in
this
file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>
192.168
.
149.128
:
9001
</value>
</property>
</configuration>
|
3、修改vi /data/hadoop/etc/hadoop/hdfs-site.xml内容为如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<?xml-stylesheet type=
"text/xsl"
href=\'#\'" /name>
<value>/data/hadoop/data_name1,/data/hadoop/data_name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data_1,/data/hadoop/data_2</value>
</property>
<property>
<name>dfs.replication</name>
<value>
2
</value>
</property>
</configuration>
|
4、在/data/hadoop/etc/hadoop/hadoop-env.sh文件末尾追加JAV_HOME变量:
1
|
echo
"export JAVA_HOME=/usr/java/jdk1.7.0_25/"
>> /data/hadoop/etc/hadoop/hadoop-env.sh
|
5、修改 vi /data/hadoop/etc/hadoop/masters文件内容为如下:
1
|
192.168
.
149.128
|
6、修改vi /data/hadoop/etc/hadoop/slaves文件内容为如下:
1
2
|
192.168
.
149.129
192.168
.
149.130
|
如上配置完毕,以上的配置具体含义在这里就不做过多的解释了,搭建的时候不明白,可以查看一下相关的官方文档。
如上namenode就基本搭建完毕,接下来我们需要部署datanode,部署datanode相对简单,执行如下操作即可。
1
|
for
i
in
`seq
129
130
` ;
do
scp -r /data/hadoop/ root@
192.168
.
149
.$i:/data/ ; done
|
自此整个集群基本搭建完毕,接下来就是启动hadoop集群了。
六、启动hadoop并测试
在启动hadoop之前,我们需要做一步非常关键的步骤,需要在namenode上执行如下命令初始化name目录和数据目录。
1
|
cd /data/hadoop/ ; ./bin/hadoop namenode -format
|
那如何算初始化成功呢,如下截图成功创建name目录即正常:
然后启动hadoop所有服务,如下命令:
1
|
[root@node1 hadoop]# ./sbin/start-all.sh
|
我们还可以查看相应的端口是否启动:netstat -ntpl
访问如下地址:http://192.168.149.128:50070/
访问地址:http://192.168.149.128:8088/
搭建完成后,我们简单的实际操作一下,如下图:
自此hadoop基本搭建完毕,接下来还有更深更多的东西需要去了解和学习,希望和大家一起学习,进步,分享、快乐。