架构师训练营第十二周总结

用户头像
月殇
关注
发布于: 2020 年 12 月 13 日

HDFS

HDFS 设计目标

HDFS 以流式数据访问模式存储超大文件,运行于商用硬件集群上。

超大文件

流式数据访问( 一次写入多次读取)

商用硬件



不适合 HDFS 的场景

低延迟的数据访问

大量小文件( 超过 NameNode 的处理能力)

多用户随机写入修改文件



设计目标

假设:节点失效是常态

理想:

1. 任何一个节点失效,不影响 HDFS 服务

2. HDFS 可以自动完成副本的复制



文件

文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,

副本数可在文件生成时指定(默认3)

NameNode 是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的 DataNode 等等

DataNode 在本地文件系统存储文件块数据,以及块数据的校验和

可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。

分而治之

将一个大型任务分成多个小任务,然后将多个小任务的结果进行汇总得到最后的结果

NameNode

NameNode 是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。

文件操作,NameNode 负责文件元数据的操作,DataNode 负责处理文件内容的读写请求,跟文件内容相关的数据流不经过 NameNode,只会询问它跟那个 DataNode 联系,否则 NameNode 会成为系统的瓶颈。

DataNode

一个数据块在 DataNode 以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

DataNode 启动后向 NameNode 注册,通过后,周期性(1小时)的向 NameNode 上报所有的块信息。

心跳是每3秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个 DataNode 的心跳,则认为该节点不可用。

集群运行中可以安全加入和退出一些机器



HDFS 关键运行机制 – 高可用

一个名字节点和多个数据节点

数据复制(冗余机制)

  • 存放的位置(机架感知策略)

故障检测

数据节点

  • 心跳包(检测是否宕机)

  • 块报告(安全模式下检测)

  • 数据完整性检测(校验和比较)

名字节点(日志文件,镜像文件)

空间回收机制



MapReduce

MapReduce:大规模数据处理

• 处理海量数据(>1TB)

• 上百上千 CPU 实现并行处理

简单地实现以上目的

• 移动计算比移动数据更划算

MapReduce 特性

• 自动实现分布式并行计算

• 容错

• 提供状态监控工具

• 模型抽象简洁,程序员易用



它由称为 map 和 reduce 的两部分用户程序组成,然后利用框架在计算机集群上面根据需求运行多个程序实例来处理各个子任务,然后再对结果进行归并。

map 的输入 key value , 输出 key value

reduce 的输入 key value(集合),输出 key value



适合 MapReduce 的计算类型
  • TopK

  • K-means

  • Bayes

  • SQL

不适合 MapReduce 的计算类型
  • Fibonacci



主要调度方法

单队列调度

• 特点:FIFO

• 优点:简单

• 缺点:资源利用率低

容量调度(Capacity Scheduler ,Hadoop-0.19.0 )

• 特点:

多队列,每个队列分配一定系统容量(Guaranteed Capacity)

空闲资源可以被动态分配给负载重的队列

支持作业优先级

• 作业选择:

选择队列:资源回收请求队列优先;最多自由空间队列优先。

选择作业:按提交时间、优先级排队;检查用户配额;检查内存。

• 优点:

支持多作业并行执行,提高资源利用率

动态调整资源分配,提高作业执行效率

• 缺点:

队列设置和队列选择无法自动进行,用户需要了解大量系统信息

公平调度(Fair Scheduler,Hadoop-0.19.0)

  • 目标:

改善小作业的响应时间

确保生产性作业的服务水平

  • 特点:

将作业分组——形成作业池(based on a configurable attribute , such as user name, unix group,…)

给每个作业池分配最小共享资源(Minimum map slots, Minimum reduce slots )

将多余的资源平均分配给每个作业

  • 作业选择:

优先调度资源小于最小共享资源的作业

选择分配资源与所需资源差距最大的作业

  • 优点:

支持作业分类调度,使不同类型的作业获得不同的资源分配,提高服务质量

动态调整并行作业数量,充分利用资源

  • 缺点:

不考虑节点的实际负载状态,导致节点负载实际不均衡



发布于: 2020 年 12 月 13 日阅读数: 15
用户头像

月殇

关注

还未添加个人签名 2019.04.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第十二周总结