写点什么

week12 学习总结

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

HDFS

总体架构


存储格式


设计目标

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

超大文件

流式数据访问

  • 一次写入多次读取

商用硬件


不适合场景

低延迟的数据访问

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

多用户随机写入修改文件


高可用

一个 NameNode 和多个 DataNode

数据复制(冗余机制)

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

故障检测

数据节点

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

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

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

NameNode(日志文件,镜像文件)

空间回收机制



文件

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

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

DataNode 在本地文件系统存储文件块数据,以及块数据的校验和可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。


NameNode

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

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

副本存放在那些 DataNode 上由 NameNode 来控制,根据全局情况做出块放置决定,读取文件时 NameNode 尽量让用户先读取最近的副本,降低带块消耗和读取时延 NameNode 全权管理数据块的复制,它周期性地从集群中的每个 DataNode 接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该 DataNode 节点工作正常。块状态报告包含了一个该 DataNode 上所有数据块的列表。


DataNode

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

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

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


HDFS 读文件


HDSF 写文件


NameNode 挂了处理流程


HDFS 一致性模型

  • 文件创建以后,不保证在 NameNode 立即可见,即使文件刷新并存储,文件长度依然可能为 0;

  • 当写入数据超过一个块后,新的 reader 可以看见第一个块,reader 不能看见当前正在写入的块;

  • HDFS 提供 sync() 方法强制缓存与数据节点同步,sync() 调用成功后,当前写入数据对所有 reader 可见且一致;

  • 调用 sync() 会导致额外的开销


MapReduce 计算架构

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




YARN

架构


Yarn 的工作流程

  1. 我们向 Yarn 提交应用程序,包括 MapReduce ApplicationMaster、我们的 MapReduce 程序,以及 MapReduce Application 启动命令。

  2. ResourceManager 进程和 NodeManager 进程通信,根据集群资源,为用户程序分配第一个容器,并将 MapReduce ApplicationMaster 分发到这个容器上面,并在容器里面启动 MapReduce ApplicationMaster。

  3. MapReduce ApplicationMaster 启动后立即向 ResourceManager 进程注册,并为自己的应用程序申请容器资源。

  4. MapReduce ApplicationMaster 申请到需要的容器后,立即和相应的 NodeManager 进程通信,将用户 MapReduce 程序分发到 NodeManager 进程所在服务器,并在容器中运行,运行的就是 Map 或者 Reduce 任务。

  5. Map 或者 Reduce 任务在运行期和 MapReduce ApplicationMaster 通信,汇报自己的运行状态,如果运行结束,MapReduce ApplicationMaster 向 ResourceManager 进程注销并释放所有的容器资源。

HIVE

架构



执行流程

• 操作符(Operator)是 Hive 的最小处理单元

• 每个操作符处理代表 HDFS 操作或 MR 作业

• 编译器把 Hive SQL 转换成一组操作符




用户头像

追风

关注

还未添加个人签名 2018.01.08 加入

还未添加个人简介

评论

发布
暂无评论
week12学习总结