20190627-hadoop完全分布式环境搭建

本文搭建了一个由三节点(master、slave1、slave2)构成的Hadoop完全分布式集群(区别单节点伪分布式集群),并通过Hadoop分布式计算的一个示例测试集群的正确性。

本文集群三个节点基于三台虚拟机进行搭建,节点安装的操作系统为Centos7(yum源),Hadoop版本选取为2.5.2。

1、基础集群的搭建

2、集群网络配置

    开启虚拟机,修改配置文件 输入如下命令

ls  -l  /etc/sysconfig/network-scripts/ifcfg-ens33

vi /etc/sysconfig/network-scripts/ifcfg-ens33


TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

UUID=2fd4e3fc-509d-47b2-a833-e55f360a4661

DEVICE=ens33

ONBOOT=yes

IPADDR=192.168.4.110

NETMASK=255.255.255.0

GATEWAY=192.168.4.100

DNS1=8.8.8.8

DNS2=8.8.8.4


需要修改的地方有:

BOOTPROTO=static#dhcp改为static(修改)

ONBOOT=yes#开机启用本配置,一般在最后一行(修改)

IPADDR=192.168.4.110 #静态IP(增加)

GATEWAY=192.168.4.100 #默认网关,虚拟机安装的话,通常是2,也就是VMnet8的网关设置(增加)

NETMASK=255.255.255.0#子网掩码(增加)

#DNS1=8.8.8.8 

重启网卡

service network restart

3、集群SSH免密登陆设置

3.1  创建hadoop用户

为三个节点分别创建相同的用户hadoop,并在以后的操作均在此用户下操作,操作如下:

#useradd -m hadoop

#passwd hadoop

为hadoop添加sudo权限,切换到root用户

#visudo

在该行root ALL=(ALL) ALL下添加hadoop ALL=(ALL) ALL保存后退出,并切换回hadoop用户

#su hadoop

注意事项:三个节点的用户名必须相同,不然以后会对后面ssh及hadoop集群搭建产生巨大影响

3.2  hosts文件设置

为了不直接使用IP,可以通过设置hosts文件达到ssh  slave1这样的的效果(三个节点设置相同)

$sudo vim /etc/hosts

在文件尾部添加如下行,保存后退出:

192.168.4.110  master

192.168.4.120  slave1

192.168.4.130  slave2


#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

注意事项:不要在127.0.0.1后面添加主机名,如果加了master,会造成后面hadoop的一个很坑的问题,在slave节点应该解析出masterIP的时候解析出127.0.0.1,造成hadoop搭建完全正确,但是系统显示可用节点一直为0。

3.3  hostname修改

centos7默认的hostname是localhost,为了方便将每个节点hostname分别修改为master、slave1、slave2(以下以master节点为例)。

$sudo hostnamectl set-hostname master

重启terminal,然后查看:$hostname

3.3  ssh设置

设置master节点和两个slave节点之间的双向ssh免密通信,下面以master节点ssh免密登陆slave节点设置为例,进行ssh设置介绍(以下操作均在master机器上操作):

[在master节点设置完后,登录slave1、slave2到节点分别进行设置]

首先生成master的rsa密钥:$ssh-keygen -t rsa

设置全部采用默认值进行回车

将生成的rsa追加写入授权文件:$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

给授权文件权限:$chmod 600  ~/.ssh/authorized_keys

进行本机ssh测试:$ssh master正常免密登陆后所有的ssh第一次都需要密码,此后都不需要密码

将master上的authorized_keys传到slave1

sudo scp ~/.ssh/id_rsa.pub hadoop@slave1:~/ 

登陆到slave1操作:$ssh slave1输入密码登陆 

$cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

修改authorized_keys权限:$chmod 600  ~/.ssh/authorized_keys

退出slave1:$exit

进行免密ssh登陆测试:$ssh slave1

4、java安装

目的:hadoop是基于Java的,所以要安装配置Java环境(三个节点均需要操作,以下以master节点为例)

下载并安装:$sudo yum install java-1.8.0-openjdk  java-1.8.0-openjdk-devel

验证是否安装完成:$java -version

配置环境变量,修改~/.bashrc文件,添加行: export JAVA_HOME=/usr/lib/jvm/java-1.8.0

使环境变量生效:$source ~/.bashrc

5、Hadoop安装配置

目的:获得正确配置的完全分布式Hadoop集群(以下操作均在master主机下操作)

安装前三台节点都需要需要关闭防火墙和selinux

$sudo systemctl stop firewalld.service

$sudo systemctl disable firewalld.service

5.1  Hadoop安装

首先在master节点进行hadoop安装配置,之后使用scp传到slave1和slave2。

下载Hadoop二进制源码至master,下载地址,并将其解压在~/ 主目录下

$tar -xvf ~/hadoop-2.5.2.tar -C ~/

$mv ~/hadoop-2.5.2/* ~/hadoop/

5.2  Hadoop的master节点配置

配置hadoop的配置文件core-site.xml  hdfs-site.xml  mapred-site.xml  yarn-site.xml  slaves(都在~/hadoop/etc/hadoop文件夹下)

$cd ~/hadoop/etc/hadoop

$vim core-site.xml其他文件相同,以下为配置文件内容:

1.core-site.xml

<configuration>

  <property>

    <name>fs.default.name</name>

    <value>hdfs://master:9000</value>

  </property>

  <property>

    <name>hadoop.tmp.dir</name>

    <value>file:/home/hadoop/hadoop/tmp</value>

  </property>

</configuration>

2.hdfs-site.xml

<configuration>

  <property>

    <name>dfs.replication</name>

    <value>2</value>

  </property>

  <property>

    <name>dfs.namenode.name.dir</name>

    <value>file:/home/hadoop/hadoop/tmp/dfs/name</value>

  </property>

  <property>

    <name>dfs.datanode.data.dir</name>

    <value>file:/home/hadoop/hadoop/tmp/dfs/data</value>

  </property>

  <property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>master:9001</value>

  </property>

</configuration>

3.mapred-site.xml

<configuration>

  <property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

  </property>

</configuration>

4.yarn-site.xml

<configuration>

  <property>

    <name>yarn.resourcemanager.hostname</name>

    <value>master</value>

  </property>

  <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

  </property>

  <property>

    <name>yarn.log-aggregation-enable</name>

    <value>true</value>

  </property>

  <property>

    <name>yarn.log-aggregation.retain-seconds</name>

    <value>604800</value>

  </property>

</configuration>

5.slaves

slave1

slave2

5.3  Hadoop的其他节点配置

此步骤的所有操作仍然是在master节点上操作,以master节点在slave1节点上配置为例

复制hadoop文件至slave1:$scp -r ~/hadoop hadoop@slave1:~/

5.4  Hadoop环境变量配置

配置环境变量,修改~/.bashrc文件,添加行(每个节点都需要此步操作,以master节点为例):

#hadoop environment vars

export HADOOP_HOME=/home/hadoop/hadoop

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

使环境变量生效:$source ~/.bashrc

6、Hadoop启动

格式化namenode:$hadoop namenode -format

启动hadoop:$start-all.sh

master节点查看启动情况:$jps

19218 NameNode

21476 Jps

19563 ResourceManager

19420 SecondaryNameNode

slave1节点查看启动情况:$jps

16949 Jps

15213 DataNode

15343 NodeManager

slave2节点查看启动情况:$jps

16949 Jps

15213 DataNode

15343 NodeManager

Web浏览器输入127.0.0.1:50070,查看管理界面


7、Hadoop集群测试

目的:验证当前hadoop集群正确安装配置

本次测试用例为利用MapReduce实现wordcount程序

生成文件testWordCount:$echo "My name is Xie PengCheng. This is a example program called WordCount, run by Xie PengCheng " >> testWordCount

创建hadoop文件夹wordCountInput:$hadoop fs -mkdir /wordCountInput

将文件testWordCount上传至wordCountInput文件夹:$hadoop fs -put testWordCount /wordCountInput

执行wordcount程序,并将结果放入wordCountOutput文件夹:$hadoop jar ~/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar wordcount /wordCountInput /wordCountOutput

注意事项:/wordCountOutput文件夹必须是没有创建过的文件夹

查看生成文件夹下的文件:$hadoop fs -ls /wordCountOutput

在output/part-r-00000可以看到程序执行结果:hadoop fs -cat /wordCountOutput/part-r-00000


My 1

PengCheng 1

PengCheng. 1

This 1

WordCount, 1

Xie 2

a 1

by 1

called 1

example 1

is 2

name 1

program 1

run 1



问题纪录:

Centos7 开机黑屏-启动命令行模式

1、在图形界面下单击鼠标右键,选择“Konsole”;

2、 获取当前系统启动模式,输入:systemctl get-default

3、查看配置文件, cat /etc/inittab

4、通过以上显示,目前系统为命令行模式

更改模式命令:systemctl set-default graphical.target 由命令行模式更改为图形界面模式

                        systemctl set-default multi-user.target 由图形界面模式更改为命令行模式

5、更改后验证是否正确 shutdown -r now

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

推荐阅读更多精彩内容