hadoop集群搭建

系统及软件版本

  • ubuntu server 16.10
  • jdk 1.8.0_111
  • hadoop 2.7.3

集群配置

IP及域名分配

主机名 ip
master 192.168.2.100
slave1 192.168.2.101
slave2 192.168.2.102

集群搭建在VM虚拟机上,各虚拟机采用nat方式连接,子网ip:192.168.2.0,主机名配置在各虚拟机host文件中。(提示:一台机器配置好后,复制三份即可) 使用虚拟机的时候,注意要将虚拟机改为静态ip,避免重启后ip改变,导致host配置失效。

用户

单独建立hadoop用户,用于运行hadoop进程

软件安装

jdk 和 Hadoop安装

jdk安装路径:/usr/bin/java/jdk1.8.0_111
Hadoop安装路径:/home/hadoop/hadoop/hadoop-2.7.3(hadoop用户的主目录即可)
/etc/profile文件中追加以下代码:

1
2
3
4
export JAVA_HOME=/usr/bin/java/jdk1.8.0_111
export JRE_HOME=$JAVA_HOME/jre
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin

Hadoop配置

Hadoop的配置文件都在$HADOOP_HOME/etc/hadoop 目录下,以下操作均在该目录下执行。

hadoop-env.sh

找到该文件里的JAVA_HOME配置项,并指定jdk的绝对路径(必须是绝对路径):

1
export JAVA_HOME=/usr/bin/java/jdk1.8.0_111

core-site.xml

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>

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
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50070</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>

</configuration>

mapred-site.xml

该文件在原始压缩文件里没有,可以通过mv mapred-site.xml.template mapred-site.xml创建。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>

yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-service</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-service.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

masters

该文件用于配置主节点信息,每行配置一个主机名称。该文件在原始压缩文件里没有,需要新建一个。

1
slave1

slaves

该文件用于配置从节点信息,每行配置一个主机名称。

1
2
slave1
slave2

以上配置结束后,就可以将虚拟机复制两份,并将ip,分别指定为192.168.2.101192.168.2.102

ssh配置

生成ssh密钥,执行以下命令,一路回车即可。

1
ssh-keygen -t rsa

将公钥拷贝到其它机器上,实现免密码登录:

1
2
3
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

这样会在每台机器的hadoop用户主目录下的.ssh目录下生成一个authorized_keys文件,该文件就记录了刚才生成的公钥内容。

启动

使用hadoop用户登录。
第一次启动需要格式化,在$HADOOP_HOME目录下执行:

1
./bin/hdfs namenode -format

启动hdfs:

1
./sbin/start-dfs.sh

启动hdfs命令执行结果显示如下:

1
2
3
4
5
6
Starting namenodes on [master]
master: starting namenode, logging to /home/hadoop/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-ubuntu.out
slave1: starting datanode, logging to /home/hadoop/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-ubuntu.out
slave2: starting datanode, logging to /home/hadoop/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-ubuntu.out
Starting secondary namenodes [slave1]
slave1: starting secondarynamenode, logging to /home/hadoop/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-ubuntu.out

启动yarn:

1
./sbin/start-yarn.sh

启动yarn命令执行结果显示如下:

1
2
3
4
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-ubuntu.out
slave1: starting nodemanager, logging to /home/hadoop/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-ubuntu.out
slave2: starting nodemanager, logging to /home/hadoop/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-ubuntu.out

使用jps命令查看进程是否启动,显示以下内容表示启动成功:

1
2
3
1257 NameNode
1530 ResourceManager
1787 Jps

通过浏览器查看hdfs:192.168.2.100:50070
Image of Yaktocat

通过浏览器查看yarn:192.168.2.100:8088
Image of Yaktocat

结束。

hadoop