博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop-ha 集群搭建
阅读量:7153 次
发布时间:2019-06-29

本文共 15932 字,大约阅读时间需要 53 分钟。

  hot3.png

概念了解

主从结构:在一个集群中,会有部分节点充当主服务器的角色,其他服务器都是从服务器的角色,当前这种架构模式叫做主从结构。

主从结构分类:

1、一主多从

2、多主多从

Hadoop中的HDFS和YARN都是主从结构,主从结构中的主节点和从节点有多重概念方式:

1、主节点  从节点

2、master  slave

3、管理者  工作者

4、leader  follower

Hadoop集群中各个角色的名称

服务 主节点 从节点
HDFS NameNode DataNode
YARN ResourceManager NodeManager

高可用模式:

​ 表示整个集群中的主节点会有多个

  注意区分:能够对外提供服务的主节点还是只有一个。其他的主节点全部处于一个热备的状态。

  正在对外提供服务的主节点:active  有且仅有一个

  热备的主节点:standby  可以有多个

  工作模式:1、在任意时刻,只有一个主节点是active的,active的主节点对外提供服务

       2、在任意时刻,都应至少有一个standby的主节点,等待active的宕机来进行接替

  架构模式:就是为了解决分布式集群中的通用问题SPOF

  不管是分布式架构还是高可用架构,都存在一个问题:主从结构—从节点数量太多了。最直观的的问题:造成主节点的工作压力过载,主节点会宕机,当前的这种现象是一种死循环

集群服务器规划

使用4台CentOS-7.5服务器进行集群搭建, hadoop HA 集群的搭建依赖于 zookeeper,

所以选取三台当做 zookeeper 集群 ,总共准备了四台主机,分别是:

office-prod-bigdata-00,office-prod-bigdata-01,office-prod-bigdata-02,office-prod-bigdata-03

其中 office-prod-bigdata-00office-prod-bigdata-01 做 namenode 的主备切换,

而将 office-prod-bigdata-02office-prod-bigdata-03 做 resourcemanager 的主备切换

主机名称/服务 IP 用户 HDFS YARN ZooKeeper
office-prod-bigdata-00 172.16.16.60 root NameNodeDataNodejournalnode NodeManager Zookeeperzkfc
office-prod-bigdata-01 172.16.16.61 root NameNodeDataNodejournalnode NodeManager Zookeeperzkfc
office-prod-bigdata-02 172.16.16.62 root DataNodejournalnode NodeManagerResourceManager Zookeeper
office-prod-bigdata-03 172.16.16.63 root DataNode NodeManagerResourceManager

软件安装步骤概述

1、获取安装包

2、解压缩和安装

3、修改配置文件

4、初始化,配置环境变量,启动,验证

安装 Zookeeper 集群

见我的另一篇博客

安装 Hadoop 集群

1、规划

规划安装用户:root, (这里目前使用 root, 后面会逐渐规范起来, 使用 hadoop)

规划安装目录:/usr/local/webserver/hadoop-2.9.1

规划数据目录:/hadoop/data/

注:安装目录和数据目录需要自己单独创建

2、上传解压缩

创建 安装目录

mkdir -p  /usr/local/webserver/
  1. 解压 安装jdk 使用openjdk 还是 oracle jdk 看大家自由,下载1.8 版本的jdk 解压到 /usr/local/webserver/ 下,重命名为 jdk1.8

  2. 解压 安装 hadoop (哪个版本无所谓,看个人喜好,此教程 通用 hadoop2 系列的所有版本) 这里使用 hadoop2.9.1 作为安装版本,去官网下载后, 解压在 /usr/local/webserver/ 目录下

cd  /usr/local/webserver/wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gztar -xzvf hadoop-2.9.1.tar.gz

3、修改配置文件

cd 到配置文件目录:/usr/local/webserver/hadoop-2.9.1/etc/

cd /usr/local/webserver/hadoop-2.9.1/etc/

hadoop-env.sh

修改 JAVA_HOME 为 JDK的安装路径 : /usr/local/webserver/jdk1.8

core-site.xml

fs.defaultFS
hdfs://myha01
指定hdfs的nameservice为myha01
hadoop.tmp.dir
/hadoop/data/hadoop/tmp
hadoop临时文件目录
ha.zookeeper.quorum
office-prod-bigdata-00:2181,office-prod-bigdata-01:2181,office-prod-bigdata-02:2181
指定zookeeper地址

hdfs-site.xml

dfs.replication
2
dfs.namenode.name.dir
/hadoop/data/hadoopdata/dfs/name
dfs.datanode.data.dir
/hadoop/data/hadoopdata/dfs/data
dfs.webhdfs.enabled
true
dfs.nameservices
myha01
dfs.ha.namenodes.myha01
nn1,nn2
dfs.namenode.rpc-address.myha01.nn1
office-prod-bigdata-00:9000
dfs.namenode.http-address.myha01.nn1
office-prod-bigdata-00:50070
dfs.namenode.rpc-address.myha01.nn2
office-prod-bigdata-01:9000
dfs.namenode.http-address.myha01.nn2
office-prod-bigdata-01:50070
dfs.namenode.shared.edits.dir
qjournal://office-prod-bigdata-00:8485;office-prod-bigdata-01:8485;office-prod-bigdata-02:8485/myha01
dfs.journalnode.edits.dir
/hadoop/data/journaldata
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.myha01
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
30000
ha.failover-controller.cli-check.rpc-timeout.ms
60000

mapred-site.xml

mapreduce.framework.name
yarn
mapreduce.jobhistory.address
office-prod-bigdata-00:10020
mapreduce.jobhistory.webapp.address
office-prod-bigdata-00:19888
mapreduce.application.classpath
$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,$MR2_CLASSPATH
/usr/local/webserver/hadoop-2.9.1/share/hadoop/mapreduce/*, /usr/local/webserver/hadoop-2.9.1/share/hadoop/mapreduce/lib/*

yarn-site.xml

yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
yrc
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
office-prod-bigdata-02
yarn.resourcemanager.hostname.rm2
office-prod-bigdata-03
yarn.resourcemanager.webapp.address.rm1
office-prod-bigdata-02:8088
yarn.resourcemanager.webapp.address.rm2
office-prod-bigdata-03:8088
yarn.resourcemanager.zk-address
office-prod-bigdata-00:2181,office-prod-bigdata-01:2181,office-prod-bigdata-02:2181
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
mapreduce.shuffle.port
23080
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
86400
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
yarn.nodemanager.resource.memory-mb
61440
NodeManager 此节点可用物理内存,注意,该参数是不可修改的,一旦设置,整个运行过程中不 可动态修改。
yarn.scheduler.maximum-allocation-mb
12288
单个任务可申请的最多物理内存量,单位MB,默认8182MB
yarn.nodemanager.resource.cpu-vcores
22
NodeManager总的可用虚拟CPU个数
yarn.scheduler.maximum-allocation-vcores
8
单个任务可申请的CPU个数
yarn.scheduler.minimum-allocation-mb
2048
单个任务可申请的最少物理内存量,单位MB
yarn.nodemanager.vmem-pmem-ratio
2.1
yarn.resourcemanager.scheduler.class
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
配置yarn 调度器为 FairScheduler
yarn.scheduler.fair.allocation.file
/usr/local/webserver/hadoop-2.9.1/etc/hadoop/fair-scheduler.xml
yarn.scheduler.fair.preemption
true
是否启用抢占机制,默认值是false
yarn.scheduler.fair.user-as-default-queue
true
default is True
yarn.scheduler.fair.allow-undeclared-pools
false
default is True
yarn.scheduler.fair.max.assign
1
default is -1

slaves

office-prod-bigdata-00office-prod-bigdata-01office-prod-bigdata-02office-prod-bigdata-03

fair-scheduler.xml, 根据自身实际去修改配置

fair
root,hive,spark,hadoop
*
12
225280 mb,80 vcores
2048 mb,1 vcores
1000
fair
1
1

4、把安装包分别分发给其他的节点

重点强调: 每台服务器中的hadoop安装包的目录必须一致, 安装包的配置信息还必须保持一致

[root@office-prod-bigdata-00 webserver]$ scp -r /usr/local/webserver/hadoop-2.9.1 office-prod-bigdata-01:/usr/local/webserver/[root@office-prod-bigdata-00 webserver]$ scp -r /usr/local/webserver/hadoop-2.9.1 office-prod-bigdata-02:/usr/local/webserver/[root@office-prod-bigdata-00 webserver]$ scp -r /usr/local/webserver/hadoop-2.9.1 office-prod-bigdata-03:/usr/local/webserver/

5、配置Hadoop环境变量

千万注意:

1、如果你使用root用户进行安装。 vi /etc/profile 即可 系统变量

2、如果你使用普通用户进行安装。 vi ~/.bashrc 用户变量

export HADOOP_HOME=/usr/local/webserver/hadoop-2.9.1export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_YARN_HOME=$HADOOP_HOMEexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:export HADOOP_CLASSPATH=$HADOOP_HOME/etc/hadoop:$HADOOP_HOME/share/hadoop/common/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/hdfs:$HADOOP_HOME/share/hadoop/hdfs/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/yarn:$HADOOP_HOME/share/hadoop/yarn/lib/*:$HADOOP_HOME/share/hadoop/yarn/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/mpreduce/*:$HADOOP_HOME/contrib/capacity-scheduler/*.jar

6、查看hadoop版本

验证是否安装成功,, 输入以下命令 查看输出是否 为 Hadoop 2.9.1

hadoop version

7、Hadoop HA 初始化

重点强调:一定要按照以下步骤逐步进行操作

1)、启动ZooKeeper

启动各节点的 ZooKeeper 服务

2)、在你配置的各个journalnode节点启动该进程

需要在 office-prod-bigdata-00,office-prod-bigdata-01,office-prod-bigdata-02 三天机器上启动 journalnode

[root@office-prod-bigdata-00 sbin]$ hadoop-daemon.sh start journalnodestarting journalnode, logging to /usr/local/webserver/hadoop-2.9.1/logs/hadoop-hadoop-journalnode-hadoop1.out[hadoop@hadoop1 sbin]$ jps2739 JournalNode2788 Jps2647 QuorumPeerMain[hadoop@hadoop1 conf]$

3)、格式化namenode

先选取一个namenode(office-prod-bigdata-00)节点进行格式化

[root@office-prod-bigdata-00 hadoop-2.9.1]# hadoop namenode -format

下图是我网上找的 格式化

4)、要把在hadoop1节点上生成的元数据 给复制到 另一个namenode(office-prod-bigdata-01)节点上

[root@office-prod-bigdata-00 hadoop-2.9.1]# cd data/[root@office-prod-bigdata-00 data]# lshadoop  hadoopdata  journaldata[root@office-prod-bigdata-00 data]# [root@office-prod-bigdata-00 data]# scp -r hadoopdata/ root@office-prod-bigdata-01:$PWDVERSION 100% 206 0.2KB/s 00:00 fsimage_0000000000000000000.md5 100% 62 0.1KB/s 00:00 fsimage_0000000000000000000 100% 323 0.3KB/s 00:00 seen_txid 100% 2 0.0KB/s 00:00

5)、格式化zkfc

重点强调:只能在nameonde节点进行

hdfs zkfc -formatZK

下图是我网上找的 格式化zkfc

8、启动

  • 启动HDFS

在 /usr/local/webserver/hadoop-2.9.1/sbin 目录下,运行 start-dfs.sh,运行 jps 命令,查看启动情况,

  • 启动YARN

在主备 resourcemanager 中随便选择一台进行启动, 这里挑选 office-prod-bigdata-02

在 /usr/local/webserver/hadoop-2.9.1/sbin 目录下,运行 **start-yarn.sh,**运行 jps 命令,查看启动情况

  • 启动备用节点的 YARN 备用节点为 office-prod-bigdata-03 在 /usr/local/webserver/hadoop-2.9.1/sbin 目录下,运行

    yarn-daemon.sh start resourcemanager,

    运行 jps 命令,查看是否 启动 ResourceManager

  • 启动 mapreduce 任务历史服务器

    cd到节点 office-prod-bigdata-00上 /usr/local/webserver/hadoop-2.9.1/sbin 目录下,运行

    mr-jobhistory-daemon.sh start historyserver

9、查看各节点的状态

HDFS

[root@office-prod-bigdata-00 data]# hdfs haadmin -getServiceState nn1active[root@office-prod-bigdata-00 data]# hdfs haadmin -getServiceState nn2standby

YARN

[root@office-prod-bigdata-00 data]# yarn rmadmin -getServiceState rm1standby [root@office-prod-bigdata-00 data]# yarn rmadmin -getServiceState rm2action

Hadoop HA 重启

Hadoop HA 集群挂掉后,重启方案:

一、检查

  1. 检查是 Hadoop 的组件挂掉,还是zookeeper 挂掉。

    jps:QuorumPeerMain QuorumPeerMain 不在就是zookeeper 挂掉了
  2. 检查: NameNode 节点是否已经挂掉

    jps 查看 office-prod-bigdata-00, office-prod-bigdata-01 节点上是否有NameNode 节点,如果没有,则启动NameNode 节点

二、启动

  1. zookeeper启动3台机器(office-prod-bigdata-00,office-prod-bigdata-01, office-prod-bigdata-02)
zkServer.sh start
  1. 启动namenode
cd $HADOOP_HOME/sbin./hadoop-daemon.sh start namenode
  1. 启动HDFS 在 $HADOOP_HOME/sbin 目录下,运行 start-dfs.sh,运行 jps 命令,查看启动情况,
cd $HADOOP_HOME/sbin./start-dfs.sh
  1. 启动YARN 在主备 resourcemanager 中随便选择一台进行启动, 这里挑选 office-prod-bigdata-02 在 $HADOOP_HOME/sbin 目录下,运行 start-yarn.sh,运行 jps 命令,查看启动情况
cd $HADOOP_HOME/sbin./start-yarn.sh

启动备用节点的 YARN 备用节点为 office-prod-bigdata-03 在 $HADOOP_HOME/sbin 目录下,运行 yarn-daemon.sh start resourcemanager, 运行 jps 命令,查看是否 启动 ResourceManager

cd $HADOOP_HOME/sbin./yarn-daemon.sh start resourcemanager
  1. 启动 mapreduce 任务历史服务器 启动 mapreduce 任务历史服务器 在 $HADOOP_HOME/sbin 目录下,运行 mr-jobhistory-daemon.sh start historyserver
cd $HADOOP_HOME/sbin./mr-jobhistory-daemon.sh start historyserver
  1. 启动 datanode
cd $HADOOP_HOME/sbin./hadoop-daemon.sh start datanode
  1. 启动 nodemanager
cd $HADOOP_HOME/sbin./yarn-daemon.sh start  nodemanager

三、查看各节点的状态 (office-prod-bigdata-00,office-prod-bigdata-01, office-prod-bigdata-02)任意一个节点上

HDFS

[root@office-prod-bigdata-00 data]# hdfs haadmin -getServiceState nn1 active  [root@office-prod-bigdata-00 data]# hdfs haadmin -getServiceState nn2 standby

YARN

[root@office-prod-bigdata-00 data]# yarn rmadmin -getServiceState rm1standby [root@office-prod-bigdata-00 data]# yarn rmadmin -getServiceState rm2action

四、其他操作

  1. ha 有问题时候,不能进行故障转移,需要手动进行

手动故障转移

cd $HADOOP_HOME./bin/hdfs haadmin -transitionToActive --forcemanual nn2
  1. 建好集群后,修改了zk服务器名字,导致zk存储的名字与实际不符,需要重置zkfc 的HA 名字空间
cd $HADOOP_HOME./bin/hdfs zkfc -formatZK

转载于:https://my.oschina.net/2devil/blog/3001191

你可能感兴趣的文章
P1120 小木棍 [数据加强版]
查看>>
JS继承之原型继承
查看>>
Excel应该这么玩——2、命名列:消除地址引用
查看>>
Solution for: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
查看>>
区间的关系的计数 HDU 4638 离线+树状数组
查看>>
第一个只出现一次的字符
查看>>
Python基础8_文件处理
查看>>
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
查看>>
结对项目开发(石家庄地铁乘车系统)
查看>>
CentOS6.2安装PhpMyadmin3.3.10
查看>>
Java运行环境的搭建---Windows系统
查看>>
定时任务redis锁+自定义lambda优化提取冗余代码
查看>>
linux每日命令(36):wc命令
查看>>
数论基础(附加例题)
查看>>
web应用,http协议简介,web框架
查看>>
递归找零问题
查看>>
纯手工编写的PE可执行程序
查看>>
实验四
查看>>
go标准库的学习-sync互斥
查看>>
FZU.Software Engineering1816 · First Homework -Preparation
查看>>