目录

今日内容大纲

HDFS 安全模式

自动进入离开

手动进入离开

安全模式的注意事项

 

Hadoop集群动态扩容、缩容

集群扩容

集群缩容

Apache YARN

YARN的概述

YARN组件--3大组件

client提交程序到yarn运行流程

YARN schduler

YARN3大调度策略

Hadoop HA集群


今日内容大纲

#HDFS
    安全模式  
#Hadoop集群动态扩容与缩容    运维
#Hadoop YARN
    介绍:集群资源管理 任务调度
    3大组件 架构
    程序在yarn运行流程:以mr程序提交为例
    yarn调度器
        核心调度策略(算法)
        Fair调度:多租户资源隔离问题 运维
#Hadoop HA集群
    高可用概念 持续可用 一直可用
    解决单点故障问题  主备集群
    Hadoop: NN  RM
    Hadoop HA实现方案--QJM
    搭建HA集群
#Hadoop federation联邦集群  

#今日课程重点:
    YARN HA
    对于涉及运维操作 听清原理很重要 可以不实操

HDFS 安全模式

  • 安全模式(safe mode)是HDFS集群处于一种保护状态,文件系统只可以读,不可以写。
  • 安全模式如何进入离开的?

自动进入离开

#在HDFS集群刚启动时候 会自动进入 为了演示方便  使用单个进程逐个启动方式

#step1:启动namenode
hadoop-daemon.sh start namenode

#step2: 执行事务性操作 报错
[root@node1 ~]# hadoop fs -mkdir /aaaa
mkdir: Cannot create directory /aaaa. Name node is in safe mode.

Safe mode is ON. The reported blocks 0 needs additional 52 blocks to reach the threshold 0.9990 of total blocks 52. The number of live datanodes 0 has reached the minimum number 0. Safe mode will be turned off automatically once the thresholds have been reached.

#1、条件1:已经汇报的block达到总数据块的 0.999
#2、条件2:存活的dn数量大于等于0  说明这个条件不严格


#step3:依次手动启动datanode
hadoop-daemon.sh start datanode

Safe mode is ON. The reported blocks 52 has reached the threshold 0.9990 of total blocks 52. The number of live datanodes 2 has reached the minimum number 0. In safe mode extension. Safe mode will be turned off automatically in 25 seconds.
#3、条件3:满足12条件的情况下 持续30s 结束自动离开安全模式

Safemode is off.


#为什么集群刚启动的时候 要进入安全模式 
文件系统元数据不完整 无法对外提供可高的文件服务  属于内部的元数据汇报、校验、构建的过程。

手动进入离开

hdfs dfsadmin -safemode enter
hdfs dfsadmin -safemode leave

Safe mode is ON. It was turned on manually. Use "hdfs dfsadmin -safemode leave" to turn safe mode off.

#运维人员可以手动进入安全模式 进行集群的维护升级等动作 避免了群起群停浪费时间。

安全模式的注意事项

  • 刚启动完hdfs集群之后 等安全模式介绍才可以正常使用文件系统 文件系统服务才是正常可用。
  • 后续如果某些软件依赖HDFS工作,必须先启动HDFS且等安全模式结束才可以使用你的软件。

Hadoop集群动态扩容、缩容

  • 所谓动态扩容、缩容指的是集群在正常的运行下、增加节点、删除节点
  • 其他称呼:节点上线、节点下线 节点服役 节点退役
  • 针对的角色是谁
  • HDFS datanode
  • YARN nodemanager

集群扩容

  • 新机器的服务器基础环境和已有集群保存一致
ip处于同一网段
hosts
防火墙关闭
  • 把已有集群的安装包scp一份到新机器上
  • 手动启动新集群上的角色
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
  • 集群负载均衡服务
hdfs dfsadmin -setBalancerBandwidth 67108864 
sbin/start-balancer.sh -threshold 5
  • Q:可选机制 白名单机制
dfs.hosts 指向一个文件,只有文件列表中的机器才可以加入集群 准入机制

默认值为空,所有的机器都允许加入集群

集群缩容

  • 需要添加黑名单 列出待下线的节点的IP
dfs.hosts.exclude
  • 刷新集群信息
hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes

#等待节点的状态变成  decommissioned 正式停用的
  • 手动关闭节点进程
  • 还可以针对已有的节点再进行负载均衡
  • 扩展:在Hadoop3 还支持在同一个机器上不同的磁盘之间的负载均衡。 disk balancer

Apache YARN

YARN的概述

  • yarn是一个通用资源管理系统和调度平台。 详细解释见课堂画图
资源指的跟程序运行相关的硬件资源  比如:CPU RAM

YARN组件--3大组件

  • 物理层面上-2个组件
  • 主角色 resourcemanager RM
ResourceManager 负责整个集群的资源管理和分配,是一个全局的资源管理系统。
是程序申请资源的唯一入口 负载调度。
  • 从角色 nodemanager NM
nodemanager 负责每台机器上具体的资源管理 负责启动 关闭container容器
  • 程序内部--1个组件
  • ApplicationMaster AM
yarn作为通用资源管理系统 不关心程序的种类和程序内部的执行情况?

谁来关心程序内部执行情况?
比如MapReduce程序来说,先maptask 再运行reducetask.

需要一个组件来管理程序执行情况  程序内部的资源申请 各阶段执行情况的监督

#为了解决这个问题 yarn提供了第三个组件 applicationmaster 
(男)主人,雇主; 主宰; 主人; 有控制力的人; 能手; 擅长…者;

#把applicationmaster称之为程序内部的老大角色 负责程序内部的执行情况

#AM针对不同类型的程序有不同的具体实现
yarn默认实现了MapReduce的AM  名字叫做MrAppMaster.
其他软件比如spark flink需要实现自己的AM 才能在yarn运行。


#结论:在上述设计模式下  任何种类程序在yarn运行,首先都是申请资源运行AM角色,然后由AM控制程序内部具体的执行。

client提交程序到yarn运行流程

  • 以MapReduce程序为例


YARN schduler

  • 所谓的调度器指的是当集群繁忙的时候 如何给申请资源的程序分配资源
  • scheduler属于ResourceManager功能

YARN3大调度策略

  • FIFO Scheduler 先进先出策略
  • capacity Scheduler 容量调度策略
  • Fair Sheduler 公平调度策略
  • Apache Hadoop版本默认策略是capacity 。CDH商业版本默认策略是Fair。
  • 默认情况下,整个yarn集群在capacity策略下,划分为一个队列 名字叫做default,占整个集群资源的100.
  • 决定调度策略的参数
#yarn-site.xml

yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

#还可以在yarn 8088页面查看
  • 案例:Fair调度器多租户资源隔离
  • 给不同的用户划分不同的队列 实现资源隔离并且共享集群资源
  • 属于大数据运维操作。
  • 听到原理即可,可以不实操。因为我们使用的是虚拟机环境,每个机器的内存本来就小的可怜,你在划分4个不同的队列,后面的程序都凉凉。
  • 你可以练习完之后 恢复成之前的样子。
#1、关闭yarn集群
stop-yarn.sh 

#2、删除yarn-site.xml中增加的参数
#3、同步yarn-site.xml到其他机器上

Hadoop HA集群

  • HA叫做高可用模式 注意解决的是单点故障问题。 SPOF
  • Hadoop中单点故障
  • NameNode
  • Resourcemanager
  • NameNode HA ---QJM共享日志集群方案
  • zkfc 实现主备切换避免脑裂
  • jn集群 editslog编辑日志同步
  • Resourcemanager HA --基于zk实现
  • RM需要维护的数据量很少 不像NN需要同步文件系统大量的元数据。直接基于zk即可完成
  • 别忘了 zk也是一个分布式小文件存储系统。
  • Hadoop HA集群搭建 难点就是配置文件的编写
  • 听懂原理 可以不搭建 后面使用非HA集群。
  • 针对当下集群进行逻辑删除 备份
  • 使用新的安装包进行编辑
  • HA 主备切换错误 缺少依赖
2021-05-30 17:02:40,372 WARN org.apache.hadoop.ha.SshFenceByTcpPort: PATH=$PATH:/sbin:/usr/sbin fuser -v -k -n tcp 8020 via ssh: bash: fuser: command not found

#yum install -y fuser  猜想行为


yum install -y psmisc