栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop大数据平台 2 (hadoop、YARN(资源管理器 RM)、HBase高可用集群部署)

Hadoop大数据平台 2 (hadoop、YARN(资源管理器 RM)、HBase高可用集群部署)

目录
  • 一、hadoop高可用集群部署
    • 1.hadoop高可用集群简介
    • 2.部署说明
    • 3.Zookeeper 集群搭建
    • 4.hadoop-HA高可用搭建
    • 4.故障自动切换
  • 二、YARN(资源管理器 RM)高可用集群部署
    • 1.部署
    • 2.故障切换
  • 三、Hbase高可用集群部署
    • 1.部署
    • 2.故障切换

一、hadoop高可用集群部署 1.hadoop高可用集群简介
  • 在典型的 HA 集群中,通常有两台不同的机器充当 NN。在任何时间,只有一台机器处于Active 状态;另一台机器是处于 Standby 状态。Active NN 负责集群中所有客户端的操作;而 Standby NN 主要用于备用,它主要维持足够的状态,如果必要,可以提供快速的故障恢复。
  • 为了让 Standby NN 的状态和 Active NN 保持同步,即元数据保持一致,它们都将会和JournalNodes 守护进程通信。当 Active NN 执行任何有关命名空间的修改,它需要持久化到一半以上的 JournalNodes 上(通过 edits log 持久化存储),而 Standby NN 负责观察 edits log的变化,它能够读取从 JNs 中读取 edits 信息,并更新其内部的命名空间。一旦 Active NN出现故障,Standby NN 将会保证从 JNs 中读出了全部的 Edits,然后切换成 Active 状态。
  • Standby NN 读取全部的 edits 可确保发生故障转移之前,是和 Active NN 拥有完全同步的命名空间状态。
    为了提供快速的故障恢复,Standby NN 也需要保存集群中各个文件块的存储位置。为了实现这个,集群中所有的 Database 将配置好 Active NN 和 Standby NN 的位置,并向它们发送块文件所在的位置及心跳,如下图所示:

  • 在任何时候,集群中只有一个 NN 处于 Active 状态是极其重要的。否则,在两个 Active NN的状态下 NameSpace 状态将会出现分歧,这将会导致数据的丢失及其它不正确的结果。为了保证这种情况不会发生,在任何时间,JNs 只允许一个 NN 充当 writer。在故障恢复期间,将要变成 Active 状态的 NN 将取得 writer 的角色,并阻止另外一个 NN 继续处于 Active状态。

为了部署 HA 集群,需要准备以下事项:
(1)NameNode machines:运行 Active NN 和 Standby NN 的机器需要相同的硬件配置;
(2)JournalNode machines:也就是运行 JN 的机器。JN 守护进程相对来说比较轻量,所以这些守护进程可以可其他守护线程(比如 NN,YARN ResourceManager)运行在同一台机器上。在一个集群中,最少要运行 3 个 JN 守护进程,这将使得系统有一定的容错能力。当然,你也可以运行 3 个以上的 JN,但是为了增加系统的容错能力,你应该运行奇数个 JN(3、5、7 等),当运行 N 个 JN,系统将最多容忍(N-1)/2 个 JN 崩溃。

  • 在 HA 集群中,Standby NN 也执行 namespace 状态的 checkpoints,所以不必要运行Secondary NN、CheckpointNode 和 BackupNode;事实上,运行这些守护进程是错误的。
2.部署说明

实验准备五台虚拟机,准备Zookeeper的压缩包。
server7/8/10 搭建ZK集群、JN集群、DN集群;
server9/6 搭建NN高可用。

虚拟机ip主机名角色
172.25.36.9server9NameNode、ResourceManager、DFSZKFailoverController
172.25.36.6server6NameNode、ResourceManager、DFSZKFailoverController
172.25.36.7server7DataNode、NodeManager、JournalNode、QuorumPeerMain
172.25.36.8server8DataNode、NodeManager、JournalNode、QuorumPeerMain
172.25.36.10server10DataNode、NodeManager、JournalNode、QuorumPeerMain
3.Zookeeper 集群搭建

server9首先执行脚本,停止hadoop;
jps查看没有任何进程了

清除默认的数据目录(server9/7/8/10的 tmp目录内hadoop配置文件)




server6安装nfs

server6创建hadoop用户;
将共享的目录挂载到自己的/home/hadoop,切入hadoop用户

真机将提前下载好的Zookeeper 压缩包传给server9

server9解压Zookeeper ,由于是nfs系统全部节点都可共用

server7进入zookeeper-3.4.9/conf,复制一份配置文件,命名为zoo.cfg 文件

编辑 zoo.cfg 文件;
创建/tmp/zookeeper目录,存放zk集群信息

加入三个zk节点的ip,这里172.25.36.7 在zk集群中编号为1,172.25.36.8 在zk集群中编号为2,172.25.36.10 在zk集群中编号为3;

2888端口是用来数据同步的,3888端口是用来选举leader的

根据每个节点自己的编号,把编号写入/tmp/zookeeper/myid,server7写1

server8写2

server10写3

server7进入zookeeper-3.4.9,开启zkserver

在server8启动服务

在server10启动服务

启动之后,依次查看各节点的状态,server7状态为follower

server8状态为server7状态为leader(随机选举的身份,只有一个leader)

server10状态为follower

执行以下命令

此时里面还没有数据

三个DN节点(ZK集群)的状态如下


4.hadoop-HA高可用搭建

server9编辑/home/hadoop/etc/hadoop/core-site.xml文件



    fs.defaultFS	%指定 hdfs 的 namenode 为 masters (名称可自定义,前后要一致)
    hdfs://masters



    ha.zookeeper.quorum	%指定 zookeeper 集群主机地址
    172.25.36.7:2181,172.25.36.8:2181,172.25.36.10:2181


1


编辑etc/hadoop/hdfs-site.xml 文件

[hadoop@server9 hadoop]$ cat hdfs-site.xml 







    		%副本数为3
        dfs.replication
        3
    

    		%指定 hdfs 的 nameservices 为 masters,和 core-site.xml 文件中的设置保持一致
        dfs.nameservices
        masters
    
    
    		%masters 下面有两个 namenode 节点,分别是 h1 和 h2 (名称可自定义)
        dfs.ha.namenodes.masters
        h1,h2
    
    
    		%指定 h1 节点的 rpc 通信地址
        dfs.namenode.rpc-address.masters.h1
        172.25.36.9:9000
    
    
    		%指定 h1 节点的 http 通信地址
        dfs.namenode.http-address.masters.h1
        172.25.36.9:9870
    
    
    		%指定 h2 节点的 rpc 通信地址
        dfs.namenode.rpc-address.masters.h2
        172.25.36.6:9000
    
    
    		%指定 h2 节点的 http 通信地址
        dfs.namenode.http-address.masters.h2
        172.25.36.6:9870
    
    
    		%指定 NameNode 元数据在 JournalNode 上的存放位置
        dfs.namenode.shared.edits.dir
        qjournal://172.25.36.7:8485;172.25.36.8:8485;172.25.36.10:8485/masters
    
    
    		%指定 JournalNode 在本地磁盘存放数据的位置
        dfs.journalnode.edits.dir
        /tmp/journaldata
    
    
    		%开启 NameNode 失败自动切换
        dfs.ha.automatic-failover.enabled
        true
    
    
    		%配置失败自动切换实现方式
        dfs.client.failover.proxy.provider.masters
        org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    
    
    		%配置隔离机制方法,每个机制占用一行
        dfs.ha.fencing.methods
        
        sshfence
        shell(/bin/true)
        
    
    
    		%使用 sshfence 隔离机制时需要 ssh 免密码
        dfs.ha.fencing.ssh.private-key-files
        /home/hadoop/.ssh/id_rsa
    
    
    		%配置 sshfence 隔离机制超时时间
        dfs.ha.fencing.ssh.connect-timeout
        30000
    




在三个DN (server7/8/10) 上开启journalnode,第一次启动 hdfs 必须先手动启动 journalnode(按照编号顺序依次开启)



查看jps进程,可以看到都开启了 JournalNode



server9进入hadoop目录,格式化 HDFS 集群

Namenode 数据默认存放在/tmp,server9需要把数据拷贝到 server6

server9和server6进行免密

server9格式化 zookeeper (只需在 h1 上执行即可)

此时,server7进入zk,作为一个查询的窗口,不要退出

可以查看到DFS虚拟目录(不要退出)

server9启动dfs(这个脚本也带有日志节点的启动)

jps可以查看到DFSZKFailoverController(zk控制器)

此时,返回server7查看,现在的主机为server9,备机为server6

访问172.25.36.9:9870,可以看到server9为active

访问172.25.36.6:9870,可以看到server6为standby

server9创建hadoop用户目录,上传input目录到DFS

访问172.25.36.9:9870,可以看到上传的文件

4.故障自动切换

现在关闭 server9的NameNode进程

在server7查看,现在server6接替任务了

因此访问172.25.36.9:9870就失败了,因此进程已经被kill了;
现在需要访问172.25.36.6:9870,三个DN状态正常

现在server6是active

server9查看input也在,没有异常

想要恢复server9也很简单,只要开启server9节点即可

不过现在server6依然是active,因为没有必要切换,浪费资源

现在可以访问172.25.36.9:9870可以了,但是server9是standby

二、YARN(资源管理器 RM)高可用集群部署 1.部署

编辑yarn-site.xml 文件

[hadoop@server9 hadoop]$ cat yarn-site.xml 




    		%配置可以在 nodemanager 上运行 mapreduce 程序
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    		%指定变量
        yarn.nodemanager.env-whitelist
        JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME
    

    		%激活 RM 高可用
        yarn.resourcemanager.ha.enabled
        true
    
    
    		%指定 RM 的集群 id
        yarn.resourcemanager.cluster-id
        RM_CLUSTER
    
    
    		%定义 RM 的节点
        yarn.resourcemanager.ha.rm-ids
        rm1,rm2
    
    
    		%指定 RM1 的地址
        yarn.resourcemanager.hostname.rm1
        172.25.36.9
    
    
    		%指定 RM2 的地址
        yarn.resourcemanager.hostname.rm2
        172.25.36.6
    
    
    		%激活 RM 自动恢复
        yarn.resourcemanager.recovery.enabled
        true
    
    
    		%配置 RM 状态信息存储方式,有 MemStore 和 ZKStore
        yarn.resourcemanager.store.class
        org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
    
    
    		%配置为 zookeeper 存储时,指定 zookeeper 集群的地址
        yarn.resourcemanager.zk-address
        172.25.36.7:2181,172.25.36.8:2181,172.25.36.10:2181
    

server9开启yarn,jps查看出现ResourceManager

server6,jps查看出现ResourceManager

server7/8/10,jps查看出现NodeManager

在server7查看,RM现在rm1是active

访问172.25.36.9:8088,可以看到是active

访问172.25.36.9:8088,可以看到是standby

2.故障切换

杀掉server9的RM

server7查看,rm2(server5)自动接管active

访问172.25.36.6:8088,可以看到是active

当然访问172.25.36.9:8088失败,恢复也很简单,server9开启RM

但是server9现在是standby,因为没有必要浪费资源切换

三、Hbase高可用集群部署 1.部署

server9进行hbase 配置,解压hbase压缩包

tar zxf hbase-1.2.4-bin.tar.gz

配置hbase环境变量,加入java、hadoop路径,vim ~/hbase-1.2.4/conf/hbase-env.sh

由于已经配置好zk集群,因此不采用hbase自带的zk ,设置为false

配置 regionservers 文件,加入集群节点

[hadoop@server9 conf]$ cat regionservers 
172.25.36.7
172.25.36.8
172.25.36.10

配置hbase-site.xml

[hadoop@server9 conf]$ cat hbase-site.xml




hbase.rootdir
hdfs://masters/hbase



hbase.cluster.distributed
true



hbase.zookeeper.quorum
172.25.36.7,172.25.36.8,172.25.36.10



hbase.master
h1


执行启动脚本,启动hbase

[hadoop@server9 hbase-1.2.4]$ bin/start-hbase.sh
starting master, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-master-server1.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
172.25.36.7: starting regionserver, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-regionserver-server2.out
172.25.36.8: starting regionserver, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-regionserver-server3.out
172.25.36.10: starting regionserver, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-regionserver-server4.out
172.25.36.7: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
172.25.36.7: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
172.25.36.8: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
172.25.36.8: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
172.25.36.10: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
172.25.36.10: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

查看server9/6 主节点信息 HMaster

[hadoop@server9 hbase-1.2.4]$ jps
17602 DFSZKFailoverController
17779 NameNode
20483 Jps
20330 HMaster
19372 ResourceManager

查看server7/8/10节点信息 HRegionServer

[hadoop@server7 ~]$ jps
4338 QuorumPeerMain
5111 DataNode
6185 Jps
5931 HRegionServer
4940 JournalNode
5551 NodeManager

进入 bin/hbase shell,插入数据

[hadoop@server9 hbase-1.2.4]$ bin/hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/hbase-1.2.4/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-3.2.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Hbase Shell; enter 'help' for list of supported commands.
Type "exit" to leave the Hbase Shell
Version 1.2.4, r67592f3d062743907f8c5ae00dbbe1ae4f69e5af, Tue Oct 25 18:10:20 CDT 2016

hbase(main):001:0> create 'test', 'cf'
0 row(s) in 2.4580 seconds

=> Hbase::Table - test
hbase(main):002:0> list 'test'
TABLE                                                                                                                                                                        
test                                                                                                                                                                         
1 row(s) in 0.0220 seconds

=> ["test"]
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.1580 seconds

hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0160 seconds

hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0200 seconds

hbase(main):006:0> scan 'test'
ROW                                          COLUMN+CELL                                                                                                                     
 row1                                        column=cf:a, timestamp=1629022054722, value=value1                                                                              
 row2                                        column=cf:b, timestamp=1629022060634, value=value2                                                                              
 row3                                        column=cf:c, timestamp=1629022066509, value=value3                                                                              
3 row(s) in 0.0630 seconds

执行ls命令,插入数据可以在hadoop内查看到

[hadoop@server6 ~]$ cd hadoop
[hadoop@server6 hadoop]$ bin/hdfs dfs -ls /
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2021-08-15 06:04 /hbase
drwxr-xr-x   - hadoop supergroup          0 2021-08-15 04:16 /user

访问 172.25.36.9:16010,可以看到 master 为 server9, backup 为server6, regions server为 server7/8/10

2.故障切换

关闭hmaster进程

[hadoop@server9 hbase-1.2.4]$ jps
17602 DFSZKFailoverController
20882 Jps
17779 NameNode
20330 HMaster
19372 ResourceManager
[hadoop@server9 hbase-1.2.4]$ kill 20330

查看切换,master切换为server6

启动server9节点

[hadoop@server9 hbase-1.2.4]$ bin/hbase-daemon.sh  start master
starting master, logging to /home/hadoop/hbase-1.2.4/bin/../logs/hbase-hadoop-master-server1.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

jps查看 HMaster

[hadoop@server9 hbase-1.2.4]$ jps
17602 DFSZKFailoverController
21170 Jps
17779 NameNode
19372 ResourceManager
21055 HMaster

此时backup master 显示为 server9

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/682317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号