首页 > 代码库 > Hadoop2.2_集群搭建

Hadoop2.2_集群搭建

Hadoop集群搭建

  

目录结构

1. Centos安装之后基本配置

2. 安装和配置JDK

3. 集群网络环境介绍及快速部署

4. ssh免密码登录

5. 规划系统目录.

6. Hadoop集群配置

7. Hadoop集群启动

 

1. Centos安装之后基本配置

Ø 同步时间

root登陆

$ su -

$ ntpdate cn.pool.ntp.org

Ø 永久关闭防火墙(非常重要,一定要确认)

$ chkconfig iptables off (永久生效)

$ service iptables stop (临时有效)

clip_image004

Ø 关闭SELINUX,设置SELINUX=disabled

$vim /etc/selinux/config

clip_image006

Ø 检查机器名

$ hostname

clip_image007

Ø 修改机器名

root用户登陆,修改命令如下

$ vim /etc/sysconfig/network

clip_image008

Ø 修改/etc/hosts

$ vim /etc/hosts

clip_image009

2. 安装和配置JDK

Ø 下载解压JDK

在windows端下载jdk1.7,然后使用scp或者ftp软件传到Centos系统中/opt/下

下载到的文件是:jdk-7u65-linux-x64.tar.gz

切换到opt目录下,解压jdk-7u65-linux-x64.tar.gz

$ cd /opt/

$ tar -zxvf jdk-7u65-linux-x64.tar.gz

重命名jdk1.7.0_65为jdk1.7

$ mv jdk1.7.0_65/ jdk1.7 

Ø Java环境变量配置

root用户登陆,命令行中执行命令”vim /etc/profile”,并加入以下内容,配置环境变量(注意/etc/profile这个文件很重要,后面Hadoop的配置还会用到)。

1
2
3
4
5
6
7
8
9
10
< font size = "3" >#set java environment
 
export JAVA_HOME=/opt/jdk1.7
 
export JRE_HOME=/opt/jdk1.7/jre
 
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
</ font >

clip_image011

保存并退出,执行以下命令使配置生效

$ chmod +x /etc/profile

$ source /etc/profile

配置完毕,在命令行中使用命令“java -version”可以判断是否成功。在hadoop用户下测试java -version,一样成功。

clip_image013

3. ssh免密码登录

Ø 生成rsa密钥对

所有节点用hadoop用户登陆,并执行以下命令:

$ ssh-keygen -t rsa

这将在/home/hadoop/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。

$ su hadoop

$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/ hadoop /.ssh/id_rsa): 默认路径

Enter passphrase (empty for no passphrase): 回车,空密码

Enter same passphrase again:

Your identification has been saved in /home/ hadoop /.ssh/id_rsa.

Your public key has been saved in /home/ hadoop /.ssh/id_rsa.pub.

这将在/home/hd_space/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。

clip_image015

Ø 生成authorized_keys

$ cd /home/hadoop/.ssh/

$ cat id_rsa.pub >> authorized_keys

$ chmod 644 authorized_keys

Ø 将authorized_keys复制到datanode

使用SSH协议将namenode的公钥信息authorized_keys复制到所有DataNode的.ssh目录下。

$ scp authorized_keys data节点ip地址:/home/hd_space/.ssh

$ scp authorized_keys hadoop@datanode1:/home/hadoop/.ssh/authorized_keys

$ scp authorized_keys hadoop@datanode2:/home/hadoop/.ssh/authorized_keys

clip_image017

Ø 使用ssh命令测试是否成功

clip_image018

配置完毕,在namenode上执行“ssh NameNode,所有数据节点”命令,因为ssh执行一次之后将不会再询问。在各个DataNode上也进行“ssh NameNode,所有数据节点”命令。

4. 规划系统目录

安装目录和数据目录分开,且数据目录和hadoop的用户目录分开,如果需要重新格式化,则可以直接删除所有的数据目录,然后重建数据目录。

如果数据目录和安装目录或者用户目录放置在一起,则对数据目录操作时,存在误删除程序或者用户文件的风险。

完整路径

说明

/opt/hadoop

hadoop的程序安装主目录

/home/hadoop/hd_space/tmp

临时目录

/home/hadoop/hd_space/hdfs/name

namenode上存储hdfs名字空间元数据

/home/hadoop/hd_space/hdfs/data

datanode上数据块的物理存储位置

/home/hadoop/hd_space/mapred/local

tasktracker上执行mapreduce程序时的本地目录

/home/hadoop/hd_space/mapred/system

这个是hdfs中的目录,存储执行mr程序时的共享文件

Ø 开始建立目录

在NameNode下,root用户

$ rm -rf /home/hd_space

$ mkdir -p /home/hadoop/hd_space/tmp

$ mkdir -p /home/hadoop/hd_space/dfs/name

$ mkdir -p /home/hadoop/hd_space/dfs/data

$ mkdir -p /home/hadoop/hd_space/mapred/local

$ mkdir -p /home/hadoop/hd_space/mapred/system

$ chown -R hadoop:hadoop /home/hadoop/hd_space/

clip_image019

Ø 修改拥有着

修改目录/home/hadoop的拥有者(因为该目录用于安装hadoop,用户对其必须有rwx权限。)

$ chown -R hadoop:hadoop /home/hadoop

5. Hadoop集群配置

Hadoop用户登录。

下载hadoop-2.2.0(已编译好的64位的hadoop 2.2,可以加QQ群: 261039241,从群共享里下载),将其解压到/opt目录下.

clip_image021

Ø 配置/etc/profile

1
2
3
4
5
6
7
8
9
10
< font size = "3" >#set hadoop
 
export HADOOP_HOME=/opt/hadoop-2.2.0
 
export HADOOP_CONF_DIR=/opt/hadoop-2.2.0/etc/hadoop
 
export YARN_CONF_DIR=/opt/hadoop-2.2.0/etc/hadoop
 
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
</ font >

clip_image022

$ source /etc/profile

Ø 配置hadoop-env.sh

$ vim $HADOOP_CONF_DIR/hadoop-env.sh

加入:

export JAVA_HOME=/opt/jdk1.7

Ø yarn-env.sh

$ vim $HADOOP_CONF_DIR/yarn-env.sh

加入:

export JAVA_HOME=/opt/jdk1.7

Ø core-site.xml

$ vim $HADOOP_CONF_DIR/core-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< font size = "3" >< property >
 
   < name >fs.defaultFS</ name >
 
   < value >hdfs://namenode:9000</ value >
 
</ property >
 
< property >
 
   < name >hadoop.tmp.dir</ name >
 
   < value >/home/hadoop/hd_space/tmp</ value >
 
</ property >
</ font >

clip_image023

Ø hdfs-site.xml

$ vim $HADOOP_CONF_DIR/hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
< font size = "3" >< configuration >
   
   < property >
 
     < name >dfs.name.dir</ name >
 
     < value >/home/hadoop/hd_space/hdfs/name</ value >
 
   </ property >
 
   < property >
 
     < name >dfs.data.dir</ name >
 
     < value >/home/hadoop/hd_space/hdfs/data</ value >
 
   </ property >
 
   < property >
 
     < name >dfs.replication</ name >
 
     < value >3</ value >
 
   </ property >
 
</ configuration >
</ font >

clip_image025

Ø mapred-site.xml

$ vim $HADOOP_CONF_DIR/mapred-site.xml

1
2
3
4
5
6
7
8
9
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
69
70
71
72
< font size = "3" ><? xml version = "1.0" ?>
 
<? xml-stylesheet type = "text/xsl" href = "configuration.xsl" ?>
 
<!--
 
Licensed under the Apache License, Version 2.0 (the "License");
 
you may not use this file except in compliance with the License.
 
You may obtain a copy of the License at
 
http://www.apache.org/licenses/LICENSE-2.0
 
Unless required by applicable law or agreed to in writing, software
 
distributed under the License is distributed on an "AS IS" BASIS,
 
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
See the License for the specific language governing permissions and
 
limitations under the License. See accompanying LICENSE file.
 
-->
 
<!-- Put site-specific property overrides in this file. -->
 
< configuration >
 
   < property >
 
     < name >mapreduce.cluster.local.dir</ name >
 
     < value >/home/hadoop/hd_space/mapred/local</ value >
 
   </ property >
 
   < property >
 
     < name >mapreduce.cluster.system.dir</ name >
 
     < value >/home/hadoop/hd_space/mapred/system</ value >
 
   </ property >
 
   < property >
 
     < name >mapreduce.framework.name</ name >
 
     < value >yarn</ value >
 
   </ property >
 
   < property >
 
     < name >mapreduce.jobhistory.address</ name >
 
     < value >namenode:10020</ value >
 
   </ property >
 
   < property >
 
     < name >mapreduce.jobhistory.webapp.address</ name >
 
     < value > namenode:19888</ value >
 
   </ property >
 
</ configuration >
</ font >

clip_image027

Ø hdfs-site.xml

1
2
3
4
5
6
7
8
< font size = "3" >< property >
 
   < name >dfs.namenode.secondary.http-address</ name >
 
   < value >namenode:9001</ value >
 
</ property >
</ font >

Ø 配置slaves文件

删除localhost,加入所有datanode的主机名

datanode1

datanode2

clip_image028

6. 集群网络环境介绍及快速部署

集群包含三个节点:1个namenode,2个datanode,节点之间局域网连接,可以相互ping通。

所有节点均是Centos 6.5 64位系统,防火墙均禁用,sshd服务均开启并设置为开机启动。

Ø 拷贝虚拟机文件夹

关闭NameNode虚拟机,把NameNode文件夹,拷贝2份,并命名为DataNode1,,DataNode2。

clip_image029

Ø 设置虚拟机名称

用VMware打开每个DateNode,设置其虚拟机的名字

clip_image031

打开操作系统,当弹出对话框时,选择“I copy it”

clip_image033

Ø 修改hostname

$ vim /etc/sysconfig/network

分别修改为datanode1、datanode2

Ø Centos克隆后网卡问题

由于克隆原因,克隆出来的虚拟机默认连接eth1网卡,所以需要动手改为eth0

1)修改/etc/udev/rules.d/70-persistent-net.rules

拷贝eth1的硬件地址到eth0

删除eth1信息

clip_image035

2)配置/etc/sysconfig/network-scripts/ifcfg-eth0

将/etc/udev/rules.d/70-persistent-net.rules 中的ATTR地址拷贝到本文件的HWADDR中

DEVICE=”eth0″

BOOTPROTO=”static”

HWADDR=”00:0C:29:91:42:2C”

MTU=”1500″

NM_CONTROLLED=”yes”

ONBOOT=”yes”

IPADDR=192.168.152.101

NETMASK=255.255.255.0

GATEWAY=192.168.152.2

3)reboot

7. Hadoop集群启动

Ø 格式化

$ hadoop namenode -format 

—–因为配置了环境变量,此处不需要输入hadoop命令的全路径/hadoop/bin/hadoop

执行后的结果中会提示“dfs/namehas been successfully formatted”。否则格式化失败。

Ø 启动hadoop

$ start-dfs.sh

$ start-yarn.sh

启动成功后,分别在namenode和datanode所在机器上使用jps 命令查看,会在namenode所在机器上看到namenode,secondaryNamenode, ResourceManager

[hadoop@namenode hadoop]$ jps

9097 Jps

8662 SecondaryNameNode

8836 ResourceManager

8459 NameNode

clip_image036

会在datanode1所在机器上看到datanode,tasktracker.否则启动失败,检查配置是否有问题。

[root@datanode1 .ssh]# jps

4885 Jps

4623 DataNode

4736 NodeManager

clip_image037

datanode1所在机器上看到datanode,NodeManager.

Ø 查看集群状态

$ hdfs dfsadmin -report

clip_image038

停止hadoop

$ ./sbin/stop-dfs.sh

$ ./sbin/stop-yarn.sh

查看HDFS

http://192.168.1.150:50070/dfshealth.jsp

clip_image040