Hadoop 2.6.0 集群部署说明

环境准备

软件环境

OS: Ubuntu 14.04 LTS
Java: jdk1.7.0_79
Hadoop: hadoop-2.6.0

系统环境

192.168.0.19 Master
192.168.0.25 Slave1
192.168.0.26 Slave2

安装系统时最好新建名为hadoop的用户以便区分

修改hostname

选定你的机器中一台作为Master,其余的分别为Slave1Slave2,以此类推

1
sudo nano /etc/hostname

在弹出的编辑器中修改好主机名后按Ctrl+X

修改hosts

在每台机器的hosts中加入系统环境中的IP地址以便访问

1
sudo nano /etc/hosts

在弹出的编辑窗口中加入下面配置

1
2
3
192.168.0.19 Master
192.168.0.25 Slave1
192.168.0.26 Slave2

这里需要把hosts中原来的127.0.1.1 ubuntu这一行去掉
完成后ctrl+x并在提示中输入y回车

到此建议重启下所有机器使得上面的配置生效
重启完成后在Master机器上ping一下Slave1Slave2看是否正常

更新apt

新装的ubuntu最好在每台机器上执行下apt更新,否则可能会导致部分软件无法安装

1
sudo apt-get update

安装SSH,配置为免密码登陆

在每台机器上安装ssh server

1
sudo apt-get install openssh-server

安装后,可以使用ssh命令登陆本机:

1
ssh localhost

会提示选择yes/no,选择yes,随后输入本机密码进入ssh
这样证明安装成功,先退出ssh

1
exit    # 退出ssh

Master节点上执行下面命令

1
2
3
cd ~/.ssh           # 如果没有该目录,先执行一次ssh localhost
ssh-keygen -t rsa # 一直按回车就可以,生成的密钥保存为.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 加入授权

完成后可以使用ssh Master验证一下,这时登陆ssh不再需要密码了,同样记得退出

1
exit    # 退出ssh

Master公匙传输到Slave1节点,过程中会要求输入Slave1hadoop用户的密码

1
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

Slave1节点上将ssh公匙保存到相应位置

1
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Slave2Slave1,也需要将Master公匙传到Slave2并保存到相应位置
这时Masterssh Slave1Slave2就不再需要密码了

1
ssh Slave1

拷贝安装文件

Master机器上用户根目录下新建一个叫workspace的文件夹

1
sudo mkdir workspace

将下载好的hadoop-2.6.0.tar.gzjdk-7u79-linux-x64.tar.gz拷贝至该文件夹

安装JDK

使用命令行进入workspace文件夹并解压jdk安装包

1
2
cd workspace                                # 进入workspace文件夹
sudo tar -zxvf jdk-7u79-linux-x64.tar.gz # 回车后输入用户密码开始解压

解压后可能权限会有问题,保险起见对jdk目录重新赋权

1
sudo chmod -R 777 jdk1.7.0_79

安装Hadoop

使用命令行进入workspace文件夹并解压hadoop安装包

1
2
cd workspace                                # 进入workspace文件夹
sudo tar -zxvf hadoop-2.6.0.tar.gz # 回车后输入用户密码开始解压

解压后可能权限会有问题,保险起见对jdk目录重新赋权

1
sudo chmod -R 777 hadoop-2.6.0

完成后将Master上的workspace拷贝至Slave1Slave2

1
2
scp -r ~/workspace hadoop@Slave1:/home/hadoop/
scp -r ~/workspace hadoop@Slave2:/home/hadoop/

设置环境变量

在所有机器上进行下面操作

1
sudo nano /etc/profile

在打开的文本文件最后面加入

1
2
export JAVA_HOME=/home/hadoop/workspace/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin

完成后ctrl+x并在提示中输入y回车,然后重启所有机器

配置Hadoop

首先进入hadoop配置文件目录

1
/home/hadoop/workspace/hadoop-2.6.0/etc/hadoop

修改slaves文件

salves文件中的localhost删除并加入所有Slave的主机名

1
2
Slave1
Slave2

配置JDK路径

在很多时候虽然配置了JAVA_HOME,但启动dfs的时候还是会报找不到JAVA_HOME的错,保险起见这里直接设置JDK安装路径,打开hadoop-env.sh找到

1
export JAVA_HOME=${JAVA_HOME}

将其修改为JAVA_HOME的绝对路径

1
export JAVA_HOME=/home/hadoop/workspace/jdk1.7.0_79

修改core-site.xml

configuration节点中加入下面内容

1
2
3
4
5
6
7
8
9
10
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
<description>Namenode RPC交互端口</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/workspace/hadoop-2.6.0/tmp</value>
<description>hadoop文件系统依赖的基础配置</description>
</property>

修改hdfs-site.xml

configuration节点中加入下面内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/workspace/hadoop-2.6.0/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/workspace/hadoop-2.6.0/tmp/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

修改mapred-site.xml

默认情况该文件并不存在,但有一个叫mapred-site.xml.template的文件,可以拷贝一个出来然后将文件名修改成mapred-site.xml,同样在configuration节点中加入下面内容

1
2
3
4
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

修改yarn-site.xml

configuration节点中加入下面内容

1
2
3
4
5
6
7
8
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

到此最进本的配置就已经完成,然后将这些配置复制到其他Slave节点

1
2
3
4
scp -r ~/workspace/hadoop-2.6.0/etc hadoop@Slave1:/home/hadoop/workspace/hadoop-2.6.0
scp -r ~/workspace/hadoop-2.6.0/etc hadoop@Slave2:/home/hadoop/workspace/hadoop-2.6.0
scp -r ~/workspace/hadoop-2.6.0/tmp hadoop@Slave1:/home/hadoop/workspace/hadoop-2.6.0
scp -r ~/workspace/hadoop-2.6.0/tmp hadoop@Slave1:/home/hadoop/workspace/hadoop-2.6.0

启动Hadoop

第一次启动需要先格式化namenode

1
2
cd ~/workspace/hadoop-2.6.0         #进入hadoop安装目录
bin/hdfs namenode -format #格式化namenode

格式化完成后启动hadoop

1
2
sbin/start-dfs.sh
sbin/start-yarn.sh

启动成功后通过jps命令查看进程

1
2
3
4
hadoop@Master:~/workspace/hadoop-2.6.0$ jps
5285 Jps
5171 SecondaryNameNode
4958 NameNode

通过bin/hdfs dfsadmin -report查看DataNode是否都正常启动

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
hadoop@Master:~/workspace/hadoop-2.6.0$ bin/hdfs dfsadmin -report
Configured Capacity: 132898217984 (123.77 GB)
Present Capacity: 116339261440 (108.35 GB)
DFS Remaining: 116339212288 (108.35 GB)
DFS Used: 49152 (48 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Live datanodes (2):

Name: 192.168.0.25:50010 (Slave1)

Hostname: Slave1
Decommission Status : Normal
Configured Capacity: 66449108992 (61.89 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 8309112832 (7.74 GB)
DFS Remaining: 58139971584 (54.15 GB)
DFS Used%: 0.00%
DFS Remaining%: 87.50%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Jul 06 08:30:19 PDT 2015


Name: 192.168.0.26:50010 (Slave2)

Hostname: Slave2
Decommission Status : Normal
Configured Capacity: 66449108992 (61.89 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 8249843712 (7.68 GB)
DFS Remaining: 58199240704 (54.20 GB)
DFS Used%: 0.00%
DFS Remaining%: 87.58%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Jul 06 08:30:19 PDT 2015

也可通过WEB查看各种信息

1
2
http://Master:8088/     #Hadoop主页默认端口为8088,任务进度也可以在此查看
http://Master:50070/ #查看Namenode及Datanode信息

最后停止服务

1
2
sbin/stop-dfs.sh
sbin/stop-yarn.sh

到这里基本配置完成,这是最基本最小的集群配置方式,仅仅限于让服务”跑起来”了,要用于实际生产环境中还会涉及到很多很多的配置项,各种调优等参数等问题
To be bontinued …