Hadoop集群配置
本文档演示采用Ubuntu 18.04系统,下载地址:http://mirrors.aliyun.com/ubuntu-releases/18.04
桌面虚拟计算机软件采用VMware workstation 15.5.0
参考:https://www.cnblogs.com/guangluwutu/p/9705136.html
Java和Hadoop安装及环境变量配置请参考其他教程(注意jdk及Hadoop版本不同导致的安装目录不同的问题),请完成后再进行Hadoop集群配置。
如无特别说明,则该操作是在主机上完成
前置准备
可选:拍摄快照,如配置失败可方便回滚
更新apt:
sudo apt-get update
安装net-tools:
sudo apt install net-tools
完整克隆若干份已经安装配置好java和Hadoop的虚拟机作为从机
网络配置
修改主机名(主机和从机都要操作)
sudo gedit /etc/hostname
删除原本的主机名
将主机的主机名修改为master或其他
将从机1的主机名修改为slave1或其他
以此类推
例:
master
保存后重启
将虚拟机改为静态IP(主机和从机都要操作)
ifconfig
记录下inet和netmask
依次点击
修改losts
sudo gedit /etc/hosts
在末尾添加:
主机inet 主机主机名
从机1inet 从机1主机名
……
例:
192.168.159.130 master
192.168.159.131 salve1
配置SSH无密码登陆节点
安装及启动SSH服务(主机和从机都要操作)
安装服务(一路回车即可):
sudo apt-get install openssh-server
启动服务:
sudo /etc/init.d/ssh restart
关闭防火墙:
sudo ufw disable
执行以下命令看是否成功运行:
ps -e | grep ssh
如果成功会出现如下俩个进程:
生成SSH公钥
cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa* # 删除之前生成的公匙(如果有)
ssh-keygen -t rsa # 一直按回车就可以
让 master 节点可以无密码 SSH 本机:
cat ./id_rsa.pub >> ./authorized_keys
验证:
ssh 主机主机名
如成功会出现如下字符:
退出:
exit
传输公钥(过程中需要输入从机的密码)
scp ~/.ssh/id_rsa.pub 从机用户名@从机主机名:/home/从机用户名/
例:
scp ~/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/
把公钥加入授权(在从机操作)
mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
验证:
ssh 从机主机名
如成功会出现如下字符:
退出:
exit
配置分布式集群环境
修改配置文件
修改slaves:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/slaves
此文件记录的是将要作为 Datanode 节点的名字,将从机主机名写入。如果想让主机同时作为 Datanode 节点则保留localhost。
从机1主机名
从机2主机名
……
例:
slave1
修改core-site.xml:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/core-site.xml
覆盖<configuration>标签:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
修改hdfs-site.xml:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
dfs.replication为从机数量,请根据实际更改
覆盖<configuration>标签:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
修改mapred-site.xml:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/mapred-site.xml
可能默认文件名为 mapred-site.xml.template ,此时需要重命名:
mv mapred-site.xml.template mapred-site.xml
覆盖<configuration>标签:
<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:
sudo gedit /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/yarn-site.xml
覆盖<configuration>标签:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
将主机的/usr/local/hadoop文件夹传输到从机:
在主机执行:
cd /usr/local
sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件
sudo rm -r ./hadoop//hadoop-2.9.2/logs/* # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先压缩再复制
cd ~ #跳转到有压缩包的路径下
scp ./hadoop.master.tar.gz 从机主机名:/home/从机用户名
例:
scp ./hadoop.master.tar.gz slave1:/home/hadoop
在从机执行:
sudo rm -r /usr/local/hadoop
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R 从机用户名 /usr/local/hadoop
例:
sudo chown -R hadoop /usr/local/hadoop
启动Hadoop
首次启动需要格式化:
hdfs namenode -format
启动:
start-all.sh
mr-jobhistory-daemon.sh start historyserver
验证(主机和从机都要操作):
jps
如成功,NameNode节点应有NameNode、ResourceManager、SecondrryNameNode、JobHistoryServe 4个进程,DataNode节点应有DataNode、 NodeManager 2个进程,缺一不可。
主机:
从机:
检查DataNode节点数量:
hdfs dfsadmin -report
若成功,则Live datanode数量与实际数量相等。
附录
从机没有DataNode进程解决方案
原因
主机和从机的clusterID不一致
解决方法
将主机和从机的/usr/local/hadoop/tmp文件夹和/usr/local/hadoop/hadoop-2.9.2/logs文件夹删除,主机再次格式化即可解决问题
WARNING: An illegal……原因
JDK版本过新导致,可以不用理会