一. 配置信息
每个云服务器统一安装CentOS7.6,
Hadoop版本hadoop-3.1.3;
java版本(jdk):1.8.0_212;
二.搭建步骤
- 配置host
通过:vim /ect/hostname ;配置主机信息;
vim /etc/hosts 添加所有的服务器ip,注意区分本地服务器用私网ip,访问其他服务器使用公网ip;
- 解压文件
tar -zxvf xxxx -C /opt/xxxx - 配置环境变量
解压后,需要将hadoop和jdk添加到环境变量中
在/etc/profile.d下新建一个脚本文件,添加如下指令
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
让配置信息生效:source /etc/profile/
以上信息表示文件所在路径,以及使用java及hadoop时,一些指令;注意路径需要与自己解压的路径保存一致
通过:hadoop version和java -version查看是否安装完成,安装完成会跳出,如下信息:
hadoop配置
- 各大平台都可以找到详细的环境配置,这边仅仅列举使用到的步骤,具体配置可自行搜索。
- 每台服务都安装上hadoop以及jdk后,就需要配置hadoop的master和slave
① ssh免密登入:~/.ssh文件下:ssh-keygen -t rsa。将公钥拷贝到其他服务下:ssh-copy-id 服务器名称
② 集群配置
注意:NameNode 和 SecondaryNameNode 不要安装在同一台服务器。ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。
这里主要就是配置:
- vim hadoop路径/etc/hadoop/core-site.xml;
- vim hadoop路径/etc/hadoop/hdfs-site.xml;
- vim hadoop路径/etc/hadoop/yarn-site.xml;
- vim hadoop路径/etc/hadoop/mapred-site.xml;
以及在hadoop路径/etc/hadoop/workers下添加你的集群信息。配置好以后可以通过rsync将配置文件分法到各个服务器上;
③测试
- 第一次启动,对集群格式化:(确保路径下没有data和logs,有的话rm -rf 删除)。输入
hdfs namenode -format # 对集群格式化
- 在master上启动hdfs:sbin/start-dfs.sh
- 在配置了ResourceManager的节点启动:sbin/start-yarn.sh
启动后通过jps检查每台服务器是否已经开启NodeManager和datanode如图:
- 启动以后我们可以通过对应的端口在流量器中直接访问,如果成功打开则说明我们的集群搭建成功了。
hdfs的端口一般时9870,YARN的ResourceManager的端口为8088,显示如下图:
三 问题记录
- 启动集群后,无法访问对应端口:
首先,查看对应端口是否已经启动。在终端输入:netstat -tunpl,查看IP已经端口号是否存在。若都开启了,检查一下每台服务的防火墙是否已经关闭了:
sudo systemctl stop firewalld
sudo systemctl disable firewalld.service
若都没问题,检查集群配置信息是否有拼写错误,以及主机名称是否编写正确,或者尝试ip直接访问。
- 8088 端口连接不上
vim /etc/hosts 注释如下代码:
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 slave1
四 总结
- 在服务器配置初期,由于使用完全分步式,会遇到服务器防火墙或云盾将其他平台服务器IP访问的22端口屏蔽的情况。
- 本人就因为ip被平台云顿拦截,ping可以通,但是ssh总是失败。经过几个小时的纠结,发现其他服务器的ip被阿里云的云盾拦截了。这时候首先将其他服务器的IP添加服务器的白名单中,具体操作如下:
选择右上角用户头像,选择“安全管控”
进入后,左侧选择白名单:IP白名单
点击右侧的添加按键,将其他平台服务器的ip添加:
添加完成后,就可以看到添加的ip。此时,通过其他服务器ssh访问本服务就不会有问题了。
- 对于一些有shell开发经验的人来说,可以先在阿里云主机端新开一端口,通过其他服务器ssh切换,查看是否可以成功,如果成功,则说明是IP的端口被云盾拦截了。如果没有解决,可以联系人工客服协同解决,我就多次麻烦客服,
- 本次云平台的使用,虽然只是简单的搭建了hadoop集群,但是还是学习到了很多服务器的使用操作,巩固了shell和linux的一些基本操作技能。
- 希望阿里云可以越做越好,推出更多的学生或新老人优惠活动。