Hadoop3.2完全分布式环境搭建(4台主机)

前言

上一篇文章《Hadoop3.2.0环境搭建(Ubuntu18.04)》详细讲述了一台主机搭建的伪分布式模式的Hadoop,在本文我们在这个基础上搭建使用四台主机的完全分布式环境。

实验环境

主机系统:windows 10
虚拟机:VMware12( Ubuntu18.04)
软件版本:Hadoop 3.2.0 (jdk 1.8.0_131)

1、环境搭建

1.1配置第一台主机的环境

1.1.1设置静态IP

首先我们设置静态IP,这样可以保证每次开机都能得到固定IP,我们才可以方便连接各个主机。修改上网模式为“桥接”模式:
编辑(E)--->虚拟网络编辑器
打开如下界面,需要点击“DHCP设置”才可以得到VMnet0,然后选择网卡


改变上网模式为“桥接”

启动主机1,然后修改IP

查看上网网卡
$:ip a

根据结果,我们选择修改ens33网卡

$:sudo vim /etc/network/interfaces

在末尾添加如下信息:
auto ens33
iface ens33 inet static
address 192.168.199.101
netmask 255.255.255.0
gateway 192.168.199.1

其中需要注意的是address和gateway的频段一致即可,这两个可以更改为其他参数。

1.1.2配置网络通信参数
更改主机名
$:sudo vim /etc/hostname

修改为 " data1"
(没有"")

为了使4台主机网路可以得知彼此的主机名和IP,我们需要编辑hosts文件,hosts文件可以用于补充或者取代网络中DNS的功能,用于存储计算机网络中各节点的信息,负责将主机名映射到对应的IP地址。

接下来我们需要
$: sudo vim /etc/hosts

在127.0.1.1对下一行添加如下信息:
192.168.199.100 master
192.168.199.101 data1
192.168.199.102 data2
192.168.199.103 data3
1.1.3配置hadoop

我们修改伪分布式的hadoop配置,因为有多台主机,我们不能再使用localhost,必须指定主机名,在这里我们指定主机名为master。

$:sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml 

修改为如下配置:
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9820</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/<username>/hadoop/tmp</value>
    </property>

修改yarn-site.xml文件:

$:sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml 

修改为如下配置:
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    <!--ResourceManager主机与NodeManager的连接地址为8025-->
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8025</value>
    </property>
    <!--ResourceManager与ApplicationManager的连接地址为8030-->
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <!--ResourceManager与客户端的连接地址为8050-->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8050</value>
    </property>

mapred-site.xml 不用修改,依然采用伪分布式的配置(需要提醒的是hadoop2.0以后的版本采用YARN 作为资源管理器替代了单独存在的 JobTracker 与 TaskTracker,这里不需要设置这两个任务)。

$:sudo vim /usr/local/hadoop/etc/hadoop/mapred-site.xml 

参数如下:
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>

接下来编辑hdfs-site.xml文件,伪分布式只要一台主机同时兼顾NameNode和DataNode,在这里data1主机只用来用作DataNode,需要删除NameNode的设置。

$:sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml 

信息修改如下:
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/<username>/hadoop/hadoop_data/hdfs/datanode</value>
    </property>

修改完后我们关闭主机data1。

1.2创建多台虚拟机

1.2.1克隆主机

由于笔者是基于学习的目的,也没有那么多真实的主机,只能使用虚拟机来代替,但是里面涉及的技术完全可以直接使用在真实主机上。
为了节省时间我们使用已经搭建了伪分布式的主机来创建其余主机,具体流程如下图:


克隆主机

根据流程选择 “完全克隆模式” ,一直next即可。
由于克隆模式创建的新主机和被拷贝主机配置是一样的,我们需要对MAC地址和IP地址进行更新,这里先更新MAC地址。


更改MAC地址

根据上述流程我们克隆另外3台主机(data2、data3、master),配置完后我们就可得到4台主机,接下来我们需要登录主机来更新上网环境。
这里需要说明4台主机的物理配置(主要是内存),由于笔者的电脑内存是16G,因而配置如下:
1、物理内存16G:建议master(4G)、data1/data2/data3(2G)

2、物理内存8G:建议master(2G)、data1/data2/data3(1G)

1.2.2更新网络配置

在这里同时配置data2、data3、master三台主机,首先修改IP地址。

$:sudo vim /etc/network/interfaces

接下来分别修改address参数
data2:
192.168.199.102
data3:
192.168.199.103
master:
192.168.199.100

接下来修改主机名。

$:sudo vim /etc/hostname

data2主机修改为 " data2"
data3主机修改为 " data3"
master主机修改为 " master"
(没有"")

启动主机应该可以查看到ip地址的改变

1.2.3修改hadoop配置

这里主要是修改master主机
首先是hdfs-site.xml文件,master主机作为NameNode

$:sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml 

信息修改如下:
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/<username>/hadoop/hadoop_data/hdfs/namenode</value>
    </property>

接下来需要告诉Hadoop系统哪一台服务器是NameNode,哪一些服务器是DataNode。这个很重要!由于网上很多教程都是Hadoop2.0的,指出需要创建和修改masters和slaves文件,但是Hadoop3.0及以后的系统都没有了slaves文件(笔者在这里折腾了一个晚上。。。是个巨坑!)。

创建和修改masters文件,指定master主机为NameNode
$:sudo vim /usr/local/hadoop/etc/hadoop/masters
增加主机名 (没有"")
"master"

创建和修改workers文件,指定data1/data2/data3为DataNode
$:sudo vim /usr/local/hadoop/etc/hadoop/workers
增加主机名(没有"")
"
data1
data2
data3
"

重启master、data1、data2、data3。

1.2.4通过master连接data1/data2/data3

首先测试一下是否可以通过master访问其他服务器,这里以data1为例。

$:ssh data1

首次登陆需要根据提示输入yes,连接成功可以发现master名字改变为data1

推出远程登陆
$:exit

接下来启动Hadoop,首先格式化HDFS目录

$:/usr/local/hadoop/bin/hdfs namenode -format

启动HDFS和YARN,有两个方法:

方法一:
分别启动
$:/usr/local/hadoop/sbin/start-dfs.sh
$:/usr/local/hadoop/sbin/start-yarn.sh

方法二:
同时启动
$:/usr/local/hadoop/sbin/start-all.sh

可以通过jps查看结果:

master结果

通过远程登陆登陆data1可以查看进程也已经启动了
data1结果

接下来可以登陆http://master:8088/可以查看ResourceManager Web界面,我们点击Nodes发现4个节点已经启动了
ResourceManager Web界面节点启动情况

登陆http://master:9870/打开NameNode Web界面。可以发现LiveNode有3个Live节点
LiveNode节点

点击Datanodes标签可以发现当前有3个启动的Datanode
Datanode节点

至此,实验完毕,我们可以停止Hadoop系统

$:/usr/local/hadoop/sbin/start-all.sh

总结

笔者发现网上很多教程都是Hadoop2.0版本的,因此在使用3.0或以上版本时会遇到很多不同(又是一路坑T^T...),但是大家遇到困难时,多点看看Log文件,查查网上资料,翻翻书本还是可以得到解决问题的思路,祝大家有所收获!

附录

hadoop3.0后一些默认端口发生改变,比较重要的如下:

HDFS组件:
Namenode 端口:

https服务的端口:50470 --> 9871
http服务的端口:50070 --> 9870
接收Client连接的RPC端口,用于获取文件系统metadata信息:8020 --> 9820

Datanode 端口:

ipc服务的端口:50020 --> 9867
datanode服务端口,用于数据传输:50010 --> 9866
https服务的端口:50475 --> 9865
http服务的端口:50075 --> 9864

Secondary NN 端口:

SNN HTTP:50091 --> 9869
SNN HTTP UI:50090 --> 9868

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352