CentOs系统安装Hadoop集群

这里介绍一下CentOS系统下,搭建一个简单的Hadoop集群,这里以三台机器为例子。

1
2
3
100.100.100.0 #Master
100.100.100.1 #Slave1
100.100.100.2 #Slave2

1. 准备工作

检查Java环境

在安装Hadoop之前需要确保系统已经安装正确的Java环境和版本(不建议使用系统自带的OpenJDK)。检查方法如下,如果看到如下内容说明一切OK。

1
2
3
4
$ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

网络检查

CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。

在 CentOS 6.x 中,可以通过如下命令关闭防火墙:

1
2
sudo service iptables stop # 关闭防火墙服务
sudo chkconfig iptables off # 禁止防火墙开机自启,就不用手动关闭了

也可以这样关闭

1
2
3
4
setenforce 0 #临时禁用,不需要重启
iptables -F #清空iptables
vim /etc/sysconfig/selinux #修改SELINUX=disabled
chkconfig iptables off #重启后永久失效

在CentOS 7.x中,可以通过如下命令关闭防火墙

1
2
systemctl stop firewalld.service # 关闭firewall
systemctl disable firewalld.service # 禁止firewall开机启动

下载Hadoop包
这步简单,通过wget下载或者把你开发机上的tar包上传到服务器上都可以,如果是测试开发环境用,可以用最新版本,如果是生产环境,建议用他的稳定版本。

2.开始安装:
大家可以通过hostname来查看自己的主机名称,如果想修改主机名称可以通过

1
vim /etc/sysconfig/network

修改,修改之后通过hostname查看一下,如果没有生效可以通过使用 hostname master。当然你也可以不修改,就直接使用默认的主机名。这些都不影响,之所以修改名称是为了机器之间的关系更清楚。
修改完主机名称之后,我们依次修改

1
vim /etc/hosts

文件,把主机名和IP地址一一对应上。

1
2
3
100.100.100.0 master
100.100.100.1 slave1
100.100.100.2 slave2

完成这些之后,我们需要做的是SSH无密码验证登陆。

SSH无密码登陆

因为hadoop各个节点之间的管理都是通过ssh实现的,所以必须配置成SSH无密码登陆。
依次在每台机器上执行

1
ssh-keygen -t rsa -P ''

一路回车就可以,然后在master上执行

1
2
3
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp /home/frank/.ssh/authorized_keys 100.100.100.1:/home/frank/.ssh/authorized_keys
scp /home/frank/.ssh/authorized_keys 100.100.100.2:/home/frank/.ssh/authorized_keys

slave1上

1
2
3
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp /home/frank/.ssh/authorized_keys 100.100.100.0:/home/frank/.ssh/authorized_keys
scp /home/frank/.ssh/authorized_keys 100.100.100.2:/home/frank/.ssh/authorized_keys

slave2上

1
2
3
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp /home/frank/.ssh/authorized_keys 100.100.100.0:/home/frank/.ssh/authorized_keys
scp /home/frank/.ssh/authorized_keys 100.100.100.1:/home/frank/.ssh/authorized_keys

最后

1
chmod 400 ~/.ssh/authorized_keys

这步一定要做,不然是不能做到无密码登陆的。
现在可以做测试了,如果没问题的话,

1
ssh 100.100.100.1

就会直接登陆到slave1上了。
忙活了大半天,到现在才真正开始操作hadoop的安装
将三台机器上 你下载的hadoop文件进行解压

1
tar xzvf hadoop-2.7.3.tar.gz

将解压后的文件放到 /opt/app目录下(随意),到此可以说已经完成了hadoop的安装,下面要做的就是集群的配置。

3.集群配置

我们需要修改每台机器的 hadoop-2.7.3下面的etc/hadoop 目录下面的

1
2
3
4
5
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.mxl

hadoop-env.sh需要修改java 路径

1
export JAVA_HOME='/usr/local/java/jdk1.8.0_111'

core-site.xml

1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>file:/DATA/hadoop-data/hadoop/tmp/</value>
  <description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://100.100.100.0:8090</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
28
29
30
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.block.size</name>
<value>1073741824</value>
</property>
<property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/DATA/hadoop-data/hadoop/tmp/dfs/name</value>
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/DATA/hadoop-data/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>100.100.100.0:8084</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>100.100.100.0:8087</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

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>100.100.100.0:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>100.100.100.0:8082</value>
</property>
</configuration>

yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>100.100.100.0</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>100.100.100.0:11111</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>100.100.100.0:8081</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

然后将这几个配置文件分发到另外两台机器上。注意 file:/DATA/hadoop-data 目录要存在并且有写权限

4.启动Hadoop集群

在首次启动前需要执行

1
hdfs namenode -format

然后在master节点依次执行下面的脚本

1
2
3
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

启动成功之后,通过jps指令可以看到如下进程

1
2
3
4
5
6
7
37684 SecondaryNameNode
38423 JobHistoryServer
37912 ResourceManager
37354 NameNode
72138 Jps
37499 DataNode
38030 NodeManager

在slave节点可以看到如下进程

1
2
3
129443 NodeManager
26163 Jps
129256 DataNode

至此Hadoop集群就搭建成功了,通过浏览器访问你在配置文件里配置的,8090端口,8081端口可以看到Hadoop提供的相应的管理界面

-------------本文结束-------------
坚持原创技术分享,您的支持将鼓励我继续创作!
0%