Hadoop2.2.0完全分布式集群平台安装与设置-入门级手把手
参考的链接地址: Hadoop2.2.0完全分布式集群平台安装与设置(http://www.iteblog.com/archives/817)
书写本文旨在于从一个新手的角度,入门开始学习Hadoop,让我们一起进步吧。请看后给评论哦!感谢支持!
针对于在搭建过程中遇到的一些问题以及亲身入门级的过程体验如下(PS:大部分内容来自于以上网站,感谢自过往记忆):
1、搭建Hadoop完全分布式集群平台前提条件:
- 搭建环境的机器配置:
为了学习,还是需要花些血本的,首先需要硬件上的支持。基本配置如下: CPU 型号:Intel 酷睿i5 4570 CPU 频率:3.2GHz 内存容量:8GB DDR3 1600MHz 硬盘容量:1TB 7200转 显卡芯片:Intel GMA HD 4000 共享内存容量 光驱类型:DVD-ROM 显示器:P2214H 有线网卡:1000Mbps以太网卡
以上几个参数中需要注意的问题:CPU: 最好是现在的i7,当然根据自身经济条件了。此处需要注意的是CPU需要支持虚拟化(安装VMware或者是CDH4安装)。 内存:最好是8G以上内存。如果在一台机子上模拟时,VMware的虚拟机配置的内存就可以比较大。如我配置的是三台虚拟机,每个都使用2G内存 硬盘:1TB以上,Hadoop模拟数据时,至少硬盘容量要够的。我的每台虚拟机使用150G硬盘。仨台就450G了 网卡:网卡很关键,本来是想搭建完全的Hadoop服务器的模拟版的,但是由于我的网卡买回来后发现实100Mbps的配置不了CDH4的安装方式。只能勉为其难的使用win 7 64位的,安装VMware,然后三台Red Hat Linux 5 64bit 的虚拟机。
- 下载安装jdk6或其以上版本(如果是64位系统,请安装Linux版本的64位系统)
Oracle sun的官网下载,此处不在嗷述。下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 安装SSH
安装的Linux的系统是Red Hat Linux 5 64bit 应该就不需要安装SSH,已经安装过了。如果没有请参考:http://www.iteblog.com/archives/780
- 下载安装Hadoop 2.2.0
$ tar xzvf hadoop-2.2.0.tar.gz
$ mv hadoop-2.2.0 /opt
$ ln -s /opt/hadoop-2.2.0 /opt/hadoop
1
[zl01@master
~]$
tar- zxvf hadoop-2.2.0.tar.gz
之后将会在hadoop文件夹下面生成hadoop-2.2.0文件夹,运行下面的命令
01
02
03
04
05
06
07
08
09
10
11
12
13
14
[root@node1
local]# cd /opt/hadoop-2.2.0
[root@node1 hadoop]# ll
total 108
drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:03 bin
drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:01 datablock
drwxr-xr-x 3 zl01 zl01 4096 Feb 13 09:01 etc
drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:01 include
drwxr-xr-x 3 zl01 zl01 4096 Feb 13 09:01 lib
drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:01 libexec
-rw-r--r-- 1 zl01 zl01 15164 Feb 13 09:01 LICENSE.txt
drwxr-xr-x 3 zl01 zl01 4096 Feb 13 17:16 logs
-rw-r--r-- 1 zl01 zl01 101 Feb 13 09:01 NOTICE.txt
-rw-r--r-- 1 zl01 zl01 1366 Feb 13 09:03 README.txt
drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:01 sbin
drwxr-xr-x 4 zl01 zl01 4096 Feb 13 09:03 share
显示出刚刚解压文件的文件夹。
安装Hadoop成功后文件图如下:

注意:以上安装时,请使用同一个用户,如我是用的是zl01。如果没有权限时,请使用 su - root 命令切换到root权限,创建目录,但是需要注意到是,以后使用Hadoop的时候如果是用zl01,则Hadoop-2.2.0 的所有者应该是zl01. 使用chown zl01 /opt/hadoop-2.2.0 命令。
$ tar xzvf hadoop-2.2.0.tar.gz $ mv hadoop-2.2.0 /opt $ ln -s /opt/hadoop-2.2.0 /opt/hadoop
|
1
|
[zl01@master
~]$
tar- zxvf hadoop-2.2.0.tar.gz |
之后将会在hadoop文件夹下面生成hadoop-2.2.0文件夹,运行下面的命令
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
[root@node1
local]# cd /opt/hadoop-2.2.0total 108 drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:03 bin drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:01 datablock drwxr-xr-x 3 zl01 zl01 4096 Feb 13 09:01 etc drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:01 include drwxr-xr-x 3 zl01 zl01 4096 Feb 13 09:01 lib drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:01 libexec -rw-r--r-- 1 zl01 zl01 15164 Feb 13 09:01 LICENSE.txt drwxr-xr-x 3 zl01 zl01 4096 Feb 13 17:16 logs -rw-r--r-- 1 zl01 zl01 101 Feb 13 09:01 NOTICE.txt -rw-r--r-- 1 zl01 zl01 1366 Feb 13 09:03 README.txt drwxr-xr-x 2 zl01 zl01 4096 Feb 13 09:01 sbin drwxr-xr-x 4 zl01 zl01 4096 Feb 13 09:03 share |
显示出刚刚解压文件的文件夹。
安装Hadoop成功后文件图如下:
2、配置一台机器上的环境
- 设置环境变量
当前用户为zl01, 配置环境变量:
vi /etc/profile
将文件的最后添加如下内容:
JAVA_HOME=/usr/local/java/jdk1.6.0_45
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
说明:JAVA_HOME为你安装的jdk的目录
- 设置hostname和hosts
1、配置hosts
使用: vi /etc/hosts 命令编辑如下:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.200 master
192.168.1.201 slave1
192.168.1.202 slave2
192.168.1.201 node1
192.168.1.202 node2
:wq 保存并退出.
2、配置hostname
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.1.200 master 192.168.1.201 slave1 192.168.1.202 slave2 192.168.1.201 node1 192.168.1.202 node2
:wq 保存并退出.
使用: vi /etc/hostname
应该是一个新的文件 此时只需要配置你的主机名称如: master
设置成永久的:
vi /etc/sysconfig/network
#yourname是你的主机名
HOSTNAME = yourname验证是否配置成功:使用命令: hostname 进行查看
3、配置Hadoop环境
修改Hadoop的配置文件
修改Hadoop的hadoop-env.sh配置文件,设置jdk所在的路径:
1
2
3
4
5
6
[zl01@master
~]$
vi etc/hadoop/hadoop-env.sh
在里面找到JAVA_HOME,并将它的值设置为你电脑jdk所在的绝对路径
#
The java implementation to use.
export
JAVA_HOME=${JAVA_HOME}
依次修改core-site.xml、yarn-site.xml、mapred-site.xml和hdfs-site.xml配置文件
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
----------------core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://master:8020</value>
<final>true</final>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/wyp/cloud/tmp/hadoop2.0</value>
</property>
-------------------------
yarn-site.xml
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
------------------------
mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>file:/opt/cloud/hadoop_space/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>file:/opt/cloud/hadoop_space/mapred/local</value>
<final>true</final>
</property>
-----------
hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/cloud/hadoop_space/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/cloud/hadoop_space/dfs/data</value>
<description>Determines
where on the local
filesystem
an DFS data node should store its blocks.
Ifthisis
a comma-delimited list of directories,
then
data will be stored in all named
directories,
typically on different devices.
Directories
that donot
exist are ignored.
</description>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
配置好Hadoop的相关东西之后,就可以克隆了。因为三台的Hadoop的配置文件是相同的。所以最好在克隆之前配置好就可以了。
4、克隆虚拟机
修改Hadoop的配置文件
修改Hadoop的hadoop-env.sh配置文件,设置jdk所在的路径:
|
1
2
3
4
5
6
|
[zl01@master
~]$
vi etc/hadoop/hadoop-env.sh 在里面找到JAVA_HOME,并将它的值设置为你电脑jdk所在的绝对路径 #
The java implementation to use.export
JAVA_HOME=${JAVA_HOME} |
依次修改core-site.xml、yarn-site.xml、mapred-site.xml和hdfs-site.xml配置文件
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
----------------core-site.xml<property> <name>fs.default.name</name> <value>hdfs://master:8020</value> <final>true</final></property><property> <name>hadoop.tmp.dir</name> <value>/home/wyp/cloud/tmp/hadoop2.0</value></property> -------------------------
yarn-site.xml
<property> <name>yarn.resourcemanager.address</name> <value>master:8032</value></property><property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value></property><property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value></property><property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value></property><property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value></property><property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value></property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value></property> ------------------------
mapred-site.xml<property> <name>mapreduce.framework.name</name> <value>yarn</value></property> <property> <name>mapred.system.dir</name> <value>file:/opt/cloud/hadoop_space/mapred/system</value> <final>true</final></property> <property> <name>mapred.local.dir</name> <value>file:/opt/cloud/hadoop_space/mapred/local</value> <final>true</final></property> -----------
hdfs-site.xml <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/cloud/hadoop_space/dfs/name</value> <final>true</final></property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/cloud/hadoop_space/dfs/data</value> <description>Determines
where on the local filesystem
an DFS data node should store its blocks. Ifthisis
a comma-delimited list of directories, then
data will be stored in all named directories,
typically on different devices. Directories
that donot
exist are ignored. </description> <final>true</final></property><property> <name>dfs.replication</name> <value>1</value></property> <property> <name>dfs.permissions</name> <value>false</value></property> |
配置好Hadoop的相关东西之后,就可以克隆了。因为三台的Hadoop的配置文件是相同的。所以最好在克隆之前配置好就可以了。
以上安装配置是使用一台虚拟机即可在安装完成之后,其他两台仅需要使用VMware的clone功能,克隆两台虚拟机即可。效果图如下:
1、先设定电脑的IP为静态地址,Linux静态IP地址设置步骤如下:
然后设置IP:
node1和node2的IP设置时,如果network Configuration中有多个网卡显示,都删除掉,然后新建即可。
同样需要让IP地址生效:
|
1
|
zl01@master:~$service
network restart |
此处需要的是root权限,然后输入ifconfig来检验IP设置是否生效。
2、设置node1和node2 主机的hostname。如上面设置hostname方法。
其实就是上面三台电脑的静态IP地址和其hostname的对应关系。检验是否修改生效,可以用ping来查看:
|
1
2
3
4
5
6
7
8
9
|
[zl01@master~]$
ping node1PING
node (192.168.1.201)56(84)
bytes of data.64bytes
from node (192.168.1.201):
icmp_seq=1ttl=64time=0.541ms64bytes
from node (192.168.1.201):
icmp_seq=2ttl=64time=0.220ms^C---
node ping statistics ---2packets
transmitted, 2received,0%
packet loss, time 1000msrtt
min/avg/max/mdev = 0.220/0.380/0.541/0.161ms[zl01@master~]$ |
如果上面的命令可以ping通,说明设置生效了。
3、设置SSH无密码登陆
检验是否可以从master无密码登录node1和node2,可以用下面的命令:
|
1
2
3
4
5
6
7
8
|
[zl01@master~]$
ssh node1The
authenticity of host ‘node
(192.168.1.201)‘
can‘t be established.RSA
key fingerprint is ae:99:43:f0:cf:c6:a9:82:6c:93:a1:65:54:70:a6:97.Are
you sure you want to continueconnecting
(yes/no)? yesWarning:
Permanently added ‘node1,192.168.1.201‘(RSA)to
the list of known hosts.Last
login: Wed Nov 614:54:552013from
master[wyp@node1~]$ |
如果是第一次登陆就需要验证一下,输入yes就可以了。此时已经登陆到node1的机器上了,注意,登陆成功后的所有操做就是node1节点上的了,请勿误操作。只是验证下就可以退出了。PS:如果 ssh node1 命令还是需要输入密码,即出现password: 此时请切换到root 然后再试一下。如果出现以上界面,就说明创建用户的密钥时,使用的用户是root. 请注意区分用户。
如果是第二次登陆,信息如下:
[root@master ~]# ssh node1
Last login: Thu Feb 13 16:35:42 2014 from master
[root@node1 ~]#
9、查看Hadoop是否运行成功
首先在master上面格式化一下HDFS,如下命令
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[zl01@master
~]$
cd $HADOOP_HOME[zl01@master
hadoop]$
hdfs namenode -format13/10/2816:47:33INFO
namenode.NameNode: STARTUP_MSG: /************************************************************ ..............此处省略好多文字...................... ************************************************************/13/10/2816:47:33INFO
namenode.NameNode: registered UNIX signal handlersfor[TERM,
HUP, INT]Formatting
using clusterid: CID-9931f367-92d3-4693-a706-d83e120cacd613/10/2816:47:34INFO
namenode.HostFileManager: read includes:HostSet()13/10/2816:47:34INFO
namenode.HostFileManager: read excludes:HostSet() ..............此处也省略好多文字...................... 13/10/2816:47:38INFO
util.ExitUtil: Exiting with status 013/10/2816:47:38INFO
namenode.NameNode: SHUTDOWN_MSG: /************************************************************SHUTDOWN_MSG:
Shutting down NameNode at wyp/192.168.142.138************************************************************/[zl01@master
hadoop]$ |
在master中启动 namenode 和 resourcemanager
|
1
2
|
[zl01@master
hadoop]$
sbin/hadoop-daemon.sh start namenode[zl01@master
hadoop]$
sbin/yarn-daemon.sh start resourcemanager |
在node1和node2中启动datanode 和 nodemanager
|
1
2
|
[zl01@master
hadoop]$
sbin/hadoop-daemon.sh start datanode[zl01@master
hadoop]$
sbin/yarn-daemon.sh start nodemanager |
检查Hadoop集群是否安装好了,在master上面运行jps,如果有NameNode、ResourceManager二个进程,说明master安装好了。
|
1
2
3
|
[zl01@master
hadoop]$
jps2016NameNode2602ResourceManager |
在node1(node2)上面运行jps,如果有DataNode、NodeManager二个进程,说明node1(node2)安装好了。
|
1
2
3
|
[zl01@master
hadoop]$
jps7889DataNode7979NodeManager |
恭喜各位已经安装好了!
原文:http://blog.csdn.net/z_play_du/article/details/19189747