这里介绍一下CentOS系统下,搭建一个简单的Hadoop集群,这里以三台机器为例子。
1 | 100.100.100.0 #Master |
1. 准备工作
检查Java环境
在安装Hadoop之前需要确保系统已经安装正确的Java环境和版本(不建议使用系统自带的OpenJDK)。检查方法如下,如果看到如下内容说明一切OK。
1 | java -version |
网络检查
CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。
在 CentOS 6.x 中,可以通过如下命令关闭防火墙:
1 | sudo service iptables stop # 关闭防火墙服务 |
也可以这样关闭
1 | setenforce 0 #临时禁用,不需要重启 |
在CentOS 7.x中,可以通过如下命令关闭防火墙
1 | systemctl stop firewalld.service # 关闭firewall |
下载Hadoop包
这步简单,通过wget下载或者把你开发机上的tar包上传到服务器上都可以,如果是测试开发环境用,可以用最新版本,如果是生产环境,建议用他的稳定版本。
2.开始安装:
大家可以通过hostname来查看自己的主机名称,如果想修改主机名称可以通过
1 | vim /etc/sysconfig/network |
修改,修改之后通过hostname查看一下,如果没有生效可以通过使用 hostname master。当然你也可以不修改,就直接使用默认的主机名。这些都不影响,之所以修改名称是为了机器之间的关系更清楚。
修改完主机名称之后,我们依次修改
1 | vim /etc/hosts |
文件,把主机名和IP地址一一对应上。
1 | 100.100.100.0 master |
完成这些之后,我们需要做的是SSH无密码验证登陆。
SSH无密码登陆
因为hadoop各个节点之间的管理都是通过ssh实现的,所以必须配置成SSH无密码登陆。
依次在每台机器上执行
1 | ssh-keygen -t rsa -P '' |
一路回车就可以,然后在master上执行
1 | cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys |
slave1上
1 | cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys |
slave2上
1 | cat ~/.ssh/id_rsa.pub >> ~/.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 | hadoop-env.sh |
hadoop-env.sh需要修改java 路径
1 | export JAVA_HOME='/usr/local/java/jdk1.8.0_111' |
core-site.xml
1 | <configuration> |
hdfs-site.xml
1 | <configuration> |
mapred-site.xml
1 | <configuration> |
yarn-site.xml
1 | <configuration> |
然后将这几个配置文件分发到另外两台机器上。注意 file:/DATA/hadoop-data 目录要存在并且有写权限
4.启动Hadoop集群
在首次启动前需要执行
1 | hdfs namenode -format |
然后在master节点依次执行下面的脚本
1 | start-dfs.sh |
启动成功之后,通过jps指令可以看到如下进程
1 | 37684 SecondaryNameNode |
在slave节点可以看到如下进程
1 | 129443 NodeManager |
至此Hadoop集群就搭建成功了,通过浏览器访问你在配置文件里配置的,8090端口,8081端口可以看到Hadoop提供的相应的管理界面