Ubuntu 18.04系统Hadoop集群配置

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版本过新导致,可以不用理会

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章