Hadoop(二): YARN(资源管理器 RM)、HBase高可用集群搭建

您所在的位置:网站首页 nodemanager怎么读 Hadoop(二): YARN(资源管理器 RM)、HBase高可用集群搭建

Hadoop(二): YARN(资源管理器 RM)、HBase高可用集群搭建

2023-08-11 21:21| 来源: 网络整理| 查看: 265

目录

一、Hadoop的高可用原理概述

1.1 原理概述

1.2 实验环境要求

二、高可用集群的搭建

2.1 搭建Zookeeper

2.2 搭建HA的高可用

2.3 YARN(资源管理器 RM)高可用集群部署

2.4 HBase高可用

一、Hadoop的高可用原理概述 1.1 原理概述

        高可用是指在集群中当有一太master,出现故障时,另外一台可以接替其工作。

        在典型的 HA 集群中,通常有两台不同的机器充当 NN。两台主机只有一台处于Active状态,另一台处于Standby。处于Active状态的主机负责HA集群中的操作管理,Standby负责备份,当Active出现状况时,可自动切换启动使用。

        在HA集群中为了让 Standby 和 Active 两台主机保持元数据保持一致,它们都将会和JournalNodes 守护进程通信。当 Active节点执行任何有关命名空间的修改,它需要持久化到一半以上的 JournalNodes 上(通过 edits log 持久化存储),而 Standby节点负责观察 edits log的变化,从 JNs 中读取 edits 信息,并更新其内部的命名空间。当 Active节点出现故障,Standby将会保证从 JNs 中读出了全部的 Edits,然后切换成 Active 状态。

        Standby  读取全部的 edits 可确保发生故障转移之前,是和 Active拥有完全同步的命名空间状态。

        为了提供快速的故障恢复,Standby也需要保存集群中各个文件块的存储位置。为了实现这个,集群中所有的 Database 将配置好 Active和 Standby的位置,并向它们发送块文件所在的位置及心跳,如下图所示:

【注】在 HA 集群中,Standby也执行 namespace 状态的 checkpoints,所以不必要运行Secondary NN、CheckpointNode 和 BackupNode。

1.2 实验环境要求

        5台虚拟机、Zookeeper的压缩包

其中: server1、5搭建NN的高可用;

server2、3、4搭建zk\jk\dn

虚拟机ip主机名搭载的服务192.168.19.71server1NameNode、ResourceManager、DFSZKFailoverController192.168.19.75server5NameNode、ResourceManager、DFSZKFailoverController192.168.19.72server2DataNode、NodeManager、JournalNode、QuorumPeerMain192.168.19.73server3DataNode、NodeManager、JournalNode、QuorumPeerMain192.168.19.74server4DataNode、NodeManager、JournalNode、QuorumPeerMain

【注】 (1)NameNode machines:运行 Active和 Standby 的机器需要相同的硬件配置;

(2)JN :相对来说比较轻量,可以和其他线程(比如 NN,YARN ResourceManager)运行在同一台机器上。

(3)在一个集群中,最少要运行 3 个 JN 守护进程,来增强容错能力。更多则需要保证运行个数为奇数个 JN(3、5、7 等),当运行 N 个 JN,系统将最多容忍(N-1)/2 个 JN 崩溃。

二、高可用集群的搭建 2.1 搭建Zookeeper ##清空所有运行进程 sbin/stop-all/.sh ##清楚数据缓存目录--->server1\2\3均要清除 rm -fr /tmp/* ##新加入节点安装nfs--->server4\5 yum install -y nfs-utils ##新加入节点创建目录并挂载共享文件--->server4\5 useradd hadoop echo 123 | passwd --stdin hadoop mount 192.168.19.71:/home/hadoop /home/hadoop ##对zookeeper压缩包进行解压--->nfs共享,所有主机均生效 tar zxf zookeeper-3.4.9.tar.gz ##对ZK进行配置--->server2\3\4 mkdir /tmp/zookeeper -->存储ZK集群信息 cd zookeeper-3.4.9/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg -->加入zk三个节点的IP,IP1:192.168.19.72\IP2:192.168.19.73\IP3:192.168.19.74 -- 端口2888(同步数据)3888(选举leader) --------------------- server.1=192.168.19.72:2888:3888 server.2=192.168.19.73:2888:3888 server.3=192.168.19.74:2888:3888 --------------------- ##将对应的编号写入对应主机的文件中--->server2\3\4 echo 1 > /tmp/zookeeper/myid --server2 echo 2 > /tmp/zookeeper/myid --server3 echo 3 > /tmp/zookeeper/myid --server4 ##在server2\3\4上开启zkserver cd zookeeper-3.4.9 bin/zkServer.sh start ##查看各节点状态--->server2\3\4 bin/zkServer.sh status ##在leader节点执行初始化命令--server2(status--leader) bin/zkCli.sh ##分别查看节点运行的进程--->server2\3\4 jps 2.2 搭建HA的高可用 ##编辑server1的core-site.xml文件:/home/hadoop/etc/hadoop/core-site.xml --------------------------------------------------------- fs.defaultFS --指定hdfs的namenode为masters (名称可自定义,前后要一致) hdfs://masters ha.zookeeper.quorum --指定 zookeeper 集群主机地址 192.168.19.72:2181,192.168.19.72:2181,192.168.19.72:2181 --------------------------------------------------------- ##编辑hdfs-site.xml文件:/home/hadoop/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 192.168.19.71:9000 --指定 h1 节点的 http 通信地址 dfs.namenode.http-address.masters.h1 192.168.19.71:9870 --指定 h2 节点的 rpc 通信地址 dfs.namenode.rpc-address.masters.h2 192.168.19.75:9000 --指定 h2 节点的 http 通信地址 dfs.namenode.http-address.masters.h2 192.168.19.75:9870 --指定 NameNode 元数据在 JournalNode 上的存放位置 dfs.namenode.shared.edits.dir qjournal://192.168.19.72:8485;192.168.19.73:8485;192.168.19.74: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 --------------------------------------------------------- ##开启journalnode服务-->第一次开启需要手动按顺序启动-->server2\3\4 bin/hdfs --daemo start journalnode ##在jps中查看 jps ##进入server5hadoop目录,格式化HDFS集群 bin/hdfs namenode -format ##Namenode数据默认存放在/tmp,将server1数据拷贝到server5 scp -r /tmp/hadoop-hadoop server1:/tmp 设置server5-->server1的免密登录 ssh server1 ##格式化zookeeper(只需要在h5上执行即可) bin/hdfs zxfc -formatZK ##在nn节点进行查看-->server2 zookeeper/bin/zkCli.sh --不要推出 ##server5启动dfs hadoop/sbin/start-dfs.sh jps --查看启动的zk监控器 ##server2上查看数据 ls /hadoop-ha/master get /hadoop-ha/ActiveBreadCrumb ##WEB访问: 192.168.19.75:9870 ---active 192.168.19.71:9870 ---standby ##数据测试 ##在server5上创建Hadoop目录,上传input到DFS hadoop/bin/hdfs dfs -mkdir /user hadoop/bin/hdfs dfs -mkdir /user/hadoop hadoop/bin/hdfs dfs -ls hadoop/bin/hdfs dfs -put input ##web访问界面,查看数据目录 192.168.19.75:9870 ##关闭server5的nn-->模拟节点故障 jps kill pid ##在dn上查看-->server2 get /hadoop-ha/ActiveBreadCrumb ##访问server1,查看DN --server1--status:active 192.168.19.71:9870 ##查看server5的input---没有异常 hadoop/bin/hdfs dfs -ls input ##节点恢复-->server5 hadoop/bin/hdfs --daemon start namenode ##此时server1为active server5为standby--没有必要再次切换浪费资源 ##可通过节点访问192.168.19.71:9870 2.3 YARN(资源管理器 RM)高可用集群部署 ##配置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 192.168.19.71 --指定 RM2 的地址 yarn.resourcemanager.hostname.rm2 192.168.19.75 --激活 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 192.168.19.72:2181,192.168.19.73:2181,192.168.19.74:2181 -------------------------------------- ##server5上开启服务 /home/hadoop/hadoop/sbin/start-yarn.sh jps --查看服务开启情况 ##分别查看是否开启服务--->server2\3\4 jps --resourcemanger\nodemanger ##在nodemanger节点上查看active状态的节点 get /yarn-leader-election/RM_CLUSTER/ActiveBreadCrumb ##访问相应的web端进行查看 192.168.19.71:8088 ##模拟故障切换 ##查看rm1上的PID jps kill PID ##查看rm2此时的状态 get /yarn-leader-election/RM_CLUSTER/ActiveBreadCrumb ##访问网页端 192.168.19.71:8088 访问192.168.19.75:8088失败 ##重新启动 bin/yarn ---daemo start resourcemanger --状态没有切换,没有必要额外浪费资源 2.4 HBase高可用 ##下载HBase,并进行解压 tar zxf hbase-1.2.4-bin.tar.gz ##配置hbase的环境变量,加入java,hadoop的路径 vim ~/hbase-1.2.4/conf/hbase-env.sh -------------------------------------------- export JAVA_HOME=/home/hadoop/java export HADOOP_HOME=/home/hadoop/hadoop ... export HBASE_MANAGES_ZK=false ---由于已经配置好zk集群,因此不采用hbase自带的zk ,设置为false -------------------------------------------- ##配置 regionservers 文件,加入集群节点 192.168.19.72 192.168.19.73 192.168.19.74 ##配置habse-site.xml ---------------------------------------------- [hadoop@server9 conf]$ cat hbase-site.xml hbase.rootdir hdfs://masters/hbase hbase.cluster.distributed true hbase.zookeeper.quorum 192.168.19.72, 192.168.19.73, 192.168.19.74 hbase.master h1 ---------------------------------------------- ##执行启动脚本 bin/start-hbase.sh ##查看 HMaster信息-->server1\5 jps ##查看HRegionServer-->server2\3\4 jps ##进入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 --------------------------------------------------- ##在hadoop中查看 hadoop/bin/hdfs dfs -ls / ##在web端访问 192.168.19.75:16010 --- master为server5, backup 为server1,regions server为 server2/3/4 #故障切换 ##关闭hmaster jps kill PID ##查看切换 192.168.19.71:16010 ##启动server5 hadoop/bin/habse-daemon.sh start master ##查看进程 jps 192.168.19.75:16010 ---显示为backup



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3