Hadoop搭建

这里以虚拟机为例,介绍Hadoop2.7.1的搭建过程

一、更新、升级、安装ssh服务

更新:

1
sudo apt-get update (也可以先更改下软件源,在source.list里面,因为国内属网易163软件源最快,具体命令为sudo gedit/etc/apt/source.list)

升级:

1
sudo apt-get upgrade

安装SSH服务

1
$ sudo apt-get install ssh

(如果安装不成功,可以打开hosts文件,删掉里面ipv6的地址,这个不是必要的,但是本次使用的虚拟机就是因为这个问题,原因尚不明确。虽然用的是虚拟机,但是也出现过很多bug)

查看是否安装好了SSH服务可以用命令:

1
which ssh

如下所示:

再用ssh localhost 查看是否可以运行。如上图所示,可以登陆本机,说明SSH安装成功。

二、安装JDK

我这里是在官网下载的jdk-7u79-linux-x64.tar.gz,因为我用的是64版本Ubuntu,由于是虚拟机,可以先在一台机器上安装好SSH、hadoop、JDK,然后再克隆,可以节省很多时间。

将jdk复制到所要安装的目录下,为了方便区分,我这里在usr目录下新建一个soft文件夹:

1
sudo mkdir/usr/soft

然后解压:

1
sudo tar–zxvf jdk-7u79-linux-x64.tar.gz

然后添加环境变量:

这里的environment相当于Windows下的系统全局变量。

在里面添加JAVA的路径:

1
JAVA_HOME=/usr/soft/jdk1.7.0_79

PATH后面加上:和其路径

1
PATH=....:/usr/soft/jdk1.7.0_79/bin

先按ctrl O 保存,回车,然后按ctrlX退出编辑。

三、安装Hadoop

安装Hadoop的原理和java一样,先将Hadoop压缩包复制到/usr/soft目录下,这里前面要加上sudo,然后解压

解压完成后可以看到:

添加环境变量:

同安装java-JDK一样,sudo nano /etc/environment

然后添加:

1
2
3
4
5
HADOOP_INSTALL=/usr/soft/hadoop-2.7.1
:/usr/soft/hadoop-2.7.1/bin
:/usr/soft/hadoop-2.7.1/sbin

之所以添加bin和sbin目录,是因为用的2.7.1版本Hadoop,两个目录分别存放不同的执行文件,后面可以看到。

按ctrl O 保存,回车,然后按ctrlX退出编辑。

四、创建一个名为hadoop的用户和用户组,修改机器名(每台机器均要创建相同的用户名和密码)(可选,因为用的是虚拟机,只是用来装hadoop,所以没有必要再另外建一个用户,这里就用的本机用户,用户名为ma)

1、用nano打开etc下的sudoers文件

1
$ sudo nano /etc/sudoers

在rootALL=(ALL)ALL 下面添加如下一行:

1
hadoopALL=(ALL) ALL

先按ctrl O 保存,回车,然后按ctrlX退出编辑。

此时可以通过命令java -version查看java是否安装成功

通过命令hadoop version查看hadoop是否安装成功(注意这里没有-)

如果没有也不用担心,重启一下就行了。

五、克隆虚拟机:

关闭虚拟机,选中虚拟机,邮件选择“管理”-“克隆”,然后选择完整克隆

一共克隆三台,比直接装虚拟机然后安装环境快多了。

六、修改机器名和/etc/hosts文件(每台机器都修改,hosts内容一样,所以只需要修改一台,然后复制粘贴)

这里先查询每台机子的IP地址,可以用ifconfig命令:

然后记下每个机子的IP


1
2
3
4
5
6
7
ma 192.168.255.133
sla1 192.168.255.135
sla2 192.168.255.134
sla3 192.168.255.136

然后添加到hosts文件中:

命令:

1
sudo nano /etc/hosts

并删除里面的ipv6地址。

添加后先按ctrl O 保存,回车,然后按ctrlX退出编辑。

然后修改机器名:

1
2
3
$sudo nano /etc/hostname

对每台都要改。添加后先按ctrl O 保存,回车,然后按ctrlX退出编辑。

七、配置每台电脑无密码访问

首先在每台电脑上生成密钥:

1
$ssh-keygen -t rsa –P ‘’ (生成RSA公钥,因为是无密码,注意这里是两个单引号)

注意:生成密钥的位置就在/home/ma/.ssh 这个文件夹下。.ssh是个隐藏文件夹,需要 ctrlh 才能看到。

然后在每台电脑上生成密钥文档authorized_keys

1
2
3
$ cd ~/.ssh
$ cp id_rsa.pub authorized_keys (将RSA公钥id_rsa.pub存储为授权密钥文档authorized_keys)

然后将sla1 sla2 sla3的authorized_keys中的内容复制给ma:

可以先复制,再追加,也可以直接打开图形界面AltF7,再用鼠标复制粘贴即可。

1
2
3
scp authorized_keys ma:/tmp(sla完成)
sudo cat /tmp/authorized_keys ~/.ssh/authorized_keys

最后cat一下是否都添加了

然后再通过scp命令复制给3个sla,命令不再赘述。

然后修改所有机器的authuorized_keys权限

1
$ chmod 644 authorized_keys (修改密钥权限)

之后测试一下登陆slave机器

1
2
3
$ ssh sla1
$ ssh sla2

第一次只需要按yes,之后直接无密码访问。

八、配置hadoop

1、hadoop运行环境变量设置

先进入hadoop目录


1
$ sudo nanohadoop-env.sh

在里面添加java的目录

1
export HADOOP_HOME= /usr/soft/jdk1.7.0_79

配置hadoop云计算系统设置文档

直接用nano命令,如core-site.xml则是:sudo nano core-site.xml,最后按ctrl O 保存,回车,然后按ctrlX退出编辑。

配置core-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
?xmlversion=1.0?
!--core-site.xml --
configuration
property
namefs.defaultFS/name
valuehdfs://ma//value
/property
/configuration

配置HDFS分布式文档系统设置文档——hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ sudo nanohdfs-site.xml
?xmlversion=1.0?
!--hdfs-site.xml --
configuration
property
namedfs.replication/name
value3/value
/property
/configuration

配置Map/Reduce程序设置文档­­——mapred-site.xml(这里没有mapred-site.xml文档,但是有mapred-site.xml.template,可以先复制一份,再改为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
$ sudo geditmapred-site.xml
configuration
property
namemapreduce.framework.name/name
valueyarn/value
/property
/configuration
配置yarn:
?xmlversion=1.0?
!--yarn-site.xml --
configuration
property
nameyarn.resourcemanager.hostname/name
valuema/value
/property
property
nameyarn.nodemanager.aux-services/name
valuemapreduce_shuffle/value
/property
/configuration

4、复制hadoop安装文件

1
2
3
4
5
$ scp –r/usr/soft/hadoop-2.7.1 sla1:/usr/soft/(复制到sla1的/soft文件夹下)
$ scp –r/usr/soft/hadoop-2.7.1 sla2:/usr/soft/(复制到sla2的/soft文件夹下)
$ scp –r/usr/soft/hadoop-2.7.1 sla3:/usr/soft/(复制到sla3的/soft文件夹下)

九、集群搭建完成、启动hadoop云计算系统

设置到这里,就已经完成hadoop云计算平台系统的搭建工作了,现在可以直接启动这个拥有4个节点(master、slave1、slave2,slave3)的hadoop实验平台。

1、式化hadoop

命令:hadoop namenode–format

2、启动ssh守护程序

1
$ start-all.sh

3、查看hadoop云计算系统运行状况

可以通过jps命令查看运行状况:

由图可知:这里有一个名称节点namenode,三个数据节点datanode,由于未分配辅助名称节点,所以secondaryNamenode还在主机ma上,三个数据节点已经分配给sla1、sla2、sla3三个主机。

说明hadoop的namenode和datanode已经启动成功。

4、关闭hadoop云计算系统

关闭只需要一条指令:

1
$ stop-all.sh

也可以分别关闭,只需要将all改成yarn或者namenode等。

以下是一些配置文件的内容及意义,未配置则选择默认配置。

注:Hadoop搭建主要步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
安装jdk
安装hadoop
配置环境变量
[/etc/environment]
JAVA_HOME=/usr/soft/jdk1.7.0_79
PATH=....:/usr/soft/jdk1.7.0_79/bin
[/etc/environmnet]
...
HADOOP_INSTALL=/usr/soft/hadoop-2.7.1
:/usr/soft/hadoop-2.7.1/bin
:/usr/soft/hadoop-2.7.1/sbin

【可选】:{

新建用户

修改权限拥有

}

安装ssh

配置ssh

修改host

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
ip取决于电脑IP:
ma 192.168.255.133
sla1 192.168.255.135
sla2 192.168.255.134
sla3 192.168.255.136名称自定
无密码访问
配置hadoop
!-- core-site.xml --
configuration
property
namefs.defaultFS/name
valuehdfs://ma//value
/property
/configuration
A typical hdfs-site.xml
!-- hdfs-site.xml --
configuration
property
namedfs.replication/name
value3/value
/property
property
namedfs.secondary.http.address/name
valuema:50090/value
/property
/configuration
mapreduce:
configuration
property
namemapreduce.framework.name/name
valueyarn/value
/property
/configuration
A typical yarn-site.xml file
?xml version=1.0?
!-- yarn-site.xml --
configuration
property
nameyarn.resourcemanager.hostname/name
valuema/value
/property
property
nameyarn.nodemanager.aux-services/name
valuemapreduce_shuffle/value
/property
/configuration

式化HDFS

启动

验证jps

1
source /etc/profile

单词计数

启动命令:

1
hadoop jar /usr/soft/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output

孤芳自赏,不必捧场。
分享