Hadoop 环境部署

Hadoop 集群部署

一、 虚拟机准备

1.1 安装 centos7

1.2 系统环境设置

1.2.1 网络设置

设置静态IP

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=39738e52-0a98-4ed4-8db1-971b2b90584c
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.63.101
NETMASK=255.255.255.0
GATEWAY=192.168.63.2
DNS1=114.114.114.114

重启网络服务

systemctl restart network

1.2.2 主机名设置

设置注解名

hostnamectl set-hostname hadoop101

1.2.3 关闭防火墙

查看放防火墙状态

systemctl status firewalld.service

关闭防火墙(临时,重启后失效)

systemctl stop firewalld

禁用防火墙

systemctl disable firewalld

查看防火墙是否开机自启

chkconfig --list|grep network(RHLE6)

开启防火墙(临时)

systemctl start firewalld

启动防火墙

systemctl enable firewalld

1.2.4 修改hosts 文件

vim /etc/hosts

在里面追加

192.168.63.101 hadoop01
192.168.63.102 hadoop02
192.168.63.103 hadoop03
192.168.63.104 hadoop04

注意:IP 跟自己设置的静态IP地址一致

二、JDK 安装

OS:Centos7

java:jdk1.8.0_211

进入Linux 系统,在opt 目录下创建 software\module 两个文件夹

cd /opt
mkdir software
mkdir module

通过ftp工具将从Oracle下载的jdk tar 包上传至software文件夹下。

上传JDK.jpg

进入到/opt/software 文件夹中,将jdk解压缩至/opt/module文件夹

cd /opt/software
tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/module

解压完成后,进入到module,将JDK解压的目录copy一下

cd /opt/module
pwd

配置JDK环境变量

vi /etc/profile

在文件的最后,添加JAVA_HOME


JDK环境设置.jpg
## JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

刷新配置文件

source /etc/profile

查看JDK是否安装成功

java -version

如果出现以下内容,说明JDK安装成功


JDK校验.jpg

三、Hadoop集群 安装

3.1 准备4个虚拟机节点

通过VMware克隆出4个服务器节点


vm克隆-1.png
vm克隆-2.jpg
vm克隆-3.jpg
vm克隆-4.jpg
vm克隆-5.jpg
vm克隆-6.jpg

3.1.2 环境配置

请参考第一章 1.2 节。

3.1 上传hadoop 安装包

通过FTP工具,将hadoop 安装包上传到其中一台服务器(63.101)的 /opt/software 目录下

3.2 安装hadoop

version : hadoop-2.7.7

3.2.1 解压hadoop 安装包

将hadoop 安装包解压到 /opt/module 目录下

cd /opt/software
tar -zxvf hadoop-2.7.7.tar.gz -C /opt/module

3.2.2 配置hadoop 环境变量

在 /etc/profile 文件的后面追加Hadoop的环境变量

vi /etc/profile

追加内容

export HADOOP_HOME=/opt/module/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
hadoop环境配置.jpg

刷新配置

source /etc/profile

校验配置是否生效


hadoop环境校验.jpg

3.2.3 资源同步

使用 rsync 命令将101服务器的software、module 同步到其他节点

rsync    -rvl       $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称

将 module目录同步到其他节点

rsync -rvl /opt/module root@hadoop02:/opt/module
rsync -rvl /opt/module root@hadoop03:/opt/module
rsync -rvl /opt/module root@hadoop04:/opt/module

将 /etc/profile 文件同步到其他节点(会覆盖)

rsync -rvl /etc/profile root@hadoop02:/etc/profile
rsync -rvl /etc/profile root@hadoop03:/etc/profile
rsync -rvl /etc/profile root@hadoop04:/etc/profile

注意:如果在同步的过程中,出现无法识别hadoop02 server,请参考:1.2.4 章节修改 hosts 文件。

3.2.3 编写集群配置分发脚本

因为是多个节点,为了减少配置错误,编写一个rsync 的脚本,目的是为了实现,在一个节点上修改了配置,执行该脚本分发到其他节点。

在 /usr/local 目录下创建 bin 目录

cd /usr/local
mkdir bin

在bin 目录下 创建hdxsync 文件

touch hdxsync

编写脚本

vim hdxsync

脚本内容

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=3; host<5; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop0$host:$pdir
done

修改脚本具有执行权限

chmod 777 hdxsync

3.3 集群配置

部署规划

hadoop02 hadoop03 hadoop04
HDFS NameNode/DataNode DataNode SecondaryNameNode/DataNode
YARN NodeManager NodeManager/ResourceManager NodeManager

3.3.1 配置集群

文件所在位置:/opt/module/hadoop-2.7.7/etc/hadoop

所有的xml 文件配置,都必须在 <configuration></configuration> 标签中

  • 核心配置文件 core-site.xml
  • HDFS 配置文件 hadoop-env.sh、hdfs-site.xml
  • YARN 配置文件 yarn-env.sh、yarn-seite.xml
  • MapReduce 配置文件 mapred-env.sh、mapred-site.xml
3.3.1.1 核心配置文件 core-site.xml
cd /opt/module/hadoop-2.7.7/etc/hadoop
vim core-site.xml

在文件中,编写如下配置

<!-- 指定HDFS中NameNode的地址 -->
<property>
        <name>fs.defaultFS</name>
      <value>hdfs://hadoop02:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.7.7/data/tmp</value>
</property>
3.3.1.2 配置HDFS

配置 hadoop-env.sh

vim hadoop-env.sh

修改JAVA_HOME


修改hadoop-env.jpg

配置 hdfs-site.xml 文件

vim hdfs-site.xml

在该配置中,配置如下内容

<!-- 指定Hadoop副本数量,默认:3 -->
<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop04:50090</value>
</property>
<!-- 指定namenode的数据存放位置 -->
<property>
      <name>dfs.namenode.name.dir</name>
      <value>file:///opt/module/hadoop-2.7.7/data/dfs/name</value>
</property>
<!-- 指定datanode的数据存放位置 -->
<property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///opt/module/hadoop-2.7.7/data/dfs/data</value>
</property>
3.3.1.3 YARN 配置

配置 yarn-env.sh

vim yarn-env.sh

修改JAVA_HOME配置


修改hadoop-env.jpg

配置 yarn-site.xml

vim yarn-site.xml

在配置中,增加以下内容

<!-- Reducer获取数据的方式 -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop03</value>
</property>
3.1.3.4 MapReduce配置文件

配置mapred-env.sh

vim mapred-env.sh

修改JAVA_HOME


mapred-env修改.jpg

配置mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

在配置中,写入以下配置

<!-- 指定MR运行在Yarn上 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

将配置分发到其他节点

hdxrsync /opt/module/hadoop-2.7.7/etc/hadoop/

到这里,所有的配置都配置完成了,就等着启动了···

3.1.2 集群单节点启动

如果集群是第一次启动,需要格式化NameNode

格式化namenode

hadoop namenode -format

在 102 上面启动 namenode

hadoop-daemon.sh start namenode

查看启动进程

[root@hadoop102 hadoop-2.7.7]# jps
7299 NameNode
7339 Jps
[root@hadoop102 hadoop-2.7.7]#

在 102、103、104 上分别启动DataNode

3.1.3 给服务器配置SSH免密登录

需要在 hadoop02 上配置SSH,因为hadoop02节点我们部署了NameNode,需要对其他节点进行分发;

同时需要在 hadoop03上配置SSH,因为hadoop03部署了ResouceManager ,需要对其他节点的资源进行归纳。

生成公钥(id_rsa.pub)、私钥(id_rsa)

cd 
cd .ssh
ssh-keygen -t rsa

生成结果

[root@hadoop102 .ssh]# ll
total 12
-rw------- 1 root root 1679 Aug  8 02:32 id_rsa
-rw-r--r-- 1 root root  396 Aug  8 02:32 id_rsa.pub
-rw-r--r-- 1 root root  370 Aug  7 05:26 known_hosts
[root@hadoop102 .ssh]# 

将公钥(rsa.pub)拷贝到其他服务器节点及自己本身

ssh-copy-id hadoop03
ssh-copy-id hadoop04
ssh-copy-id hadoop02

查看结果

[root@hadoop102 .ssh]# ll
total 16
-rw------- 1 root root  396 Aug  8 02:35 authorized_keys
-rw------- 1 root root 1679 Aug  8 02:32 id_rsa
-rw-r--r-- 1 root root  396 Aug  8 02:32 id_rsa.pub
-rw-r--r-- 1 root root  555 Aug  8 02:35 known_hosts
[root@hadoop102 .ssh]# 

免密登录校验

[root@hadoop102 .ssh]# ssh hadoop03
Last failed login: Thu Aug  8 02:34:24 EDT 2019 from hadoop02 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Aug  7 22:06:37 2019 from 192.168.63.1
[root@hadoop03 ~]# 

3.1.4 群启集群

根据我们的集群部署规划去启动
注:如果按照上面的步骤,需要先停止集群。

停止Hadoop服务

hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop datanode

配置集群slaves
文件位置:/opt/module/hadoop-2.7.7/etc/hadoop/slaves

在102上配置slaves(不能有空格/空行)

vim /opt/module/hadoop-2.7.7/etc/hadoop/slaves

同步配置到各个服务节点

hdxsync /opt/module/hadoop-2.7.7/etc/hadoop/slaves

查看配置

[root@hadoop03 ~]# less /opt/module/hadoop-2.7.7/etc/hadoop/slaves 
hadoop02
hadoop03
hadoop04
3.1.4.1 启动HDFS

启动HDFS,必须在NameNode的节点上启动

[root@hadoop102 hadoop-2.7.7]# sbin/start-dfs.sh 
Starting namenodes on [hadoop02]
hadoop02: starting namenode, logging to /opt/module/hadoop-2.7.7/logs/hadoop-root-namenode-hadoop102.out
hadoop04: starting datanode, logging to /opt/module/hadoop-2.7.7/logs/hadoop-root-datanode-hadoop04.out
hadoop03: starting datanode, logging to /opt/module/hadoop-2.7.7/logs/hadoop-root-datanode-hadoop03.out
hadoop02: starting datanode, logging to /opt/module/hadoop-2.7.7/logs/hadoop-root-datanode-hadoop102.out
Starting secondary namenodes [hadoop04]
hadoop04: starting secondarynamenode, logging to /opt/module/hadoop-2.7.7/logs/hadoop-root-secondarynamenode-hadoop04.out
[root@hadoop102 hadoop-2.7.7]# 
3.1.4.2 启动Yarn

必须是在 ResouceManager 的节点上进行启动
103 上面启动Yarn

[root@hadoop03 hadoop-2.7.7]# sbin/start-yarn.sh 
starting yarn daemons
starting resourcemanager, logging to /opt/module/hadoop-2.7.7/logs/yarn-root-resourcemanager-hadoop03.out
hadoop02: starting nodemanager, logging to /opt/module/hadoop-2.7.7/logs/yarn-root-nodemanager-hadoop102.out
hadoop04: starting nodemanager, logging to /opt/module/hadoop-2.7.7/logs/yarn-root-nodemanager-hadoop04.out
hadoop03: starting nodemanager, logging to /opt/module/hadoop-2.7.7/logs/yarn-root-nodemanager-hadoop03.out
[root@hadoop03 hadoop-2.7.7]# jps
8147 ResourceManager
8243 NodeManager
8022 DataNode
8396 Jps
[root@hadoop03 hadoop-2.7.7]#
3.1.4.3 校验集群启动情况

Web端查看SecondaryNameNode
浏览器中输入:<u>http://hadoop04:50090/status.html</u>

SecondaryNameNode.png

3.1.5 集群启/停

3.1.5.1 各个服务组件逐一启动/停止

分别启动/停止HDFS组件

  hadoop-daemon.sh  start / stop  namenode / datanode / secondarynamenode

启动/停止YARN

  yarn-daemon.sh  start / stop  resourcemanager / nodemanager
3.1.5.2 各个模块分开启动/停止(配置ssh是前提)常用

整体启动/停止HDFS

start-dfs.sh   /  stop-dfs.sh

整体启动/停止YARN

    start-yarn.sh  /  stop-yarn.sh

3.2 集群服务器间时间同步

集群部署,为了减少集群间因时间不同步而导致任务不执行或者延迟执行,需要对各个节点的时间进行同步。

选一台服务器作为标准的时间服务器,其他节点服务器,定时每10分钟去这台标准时间服务器上面获取时间,然后更新自己的时间,从而达到各个节点的时间都一只。

3.2.1 安装ntp服务,并修改相关配置

检查服务器是否安装了ntp服务

[root@hadoop102 ~]# rpm -qa |grep ntp
ntpdate-4.2.6p5-28.el7.centos.x86_64
ntp-4.2.6p5-28.el7.centos.x86_64
[root@hadoop102 ~]# 

如果没安装,请安装ntp服务

yum -y install ntp

修改ntp配置文件

vim /etc/ntp.conf

修改内容如下

a)修改1(授权192.168.63.0-192.168.63.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.63.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.63.0 mask 255.255.255.0 nomodify notrap
        b)修改2(集群在局域网中,不使用其他互联网上的时间)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10

修改/etc/sysconfig/ntpd 文件
增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

重新启动ntpd服务
查看ntpd服务状态

service ntpd status

ntpd 已停

service ntpd start

设置ntpd服务开机启动

chkconfig ntpd on

3.2.2 其他配置(必须是root用户)

在其他机器配置10分钟与时间服务器同步一次

crontab -e

编写定时任务如下

编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop03

修改任意机器时间

date -s "2018-9-11 11:11:11"

十分钟后查看机器是否与时间服务器同步

date

注:测试时,可调整为每1分钟同步一次时间,快速验证

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