写点什么

大数据架构小结

发布于: 2020 年 09 月 03 日

Author:Jessie Yang


引言

本周对大数据整体架构进行学习和梳理。本文对 HDFS、MapReduce 和 Yarn 进行简单的总结。

 

HDFS

HDFS:Hadoop Distributed File System(hadoop 分布式文件系统)

HDFS 设计目标:以流式数据访问模式存储超大文件。

利用分布式服务集群,将各服务器看成一个文件系统进行使用。不适合:大量小文件的应用场景。

 


1. Namenode:又称为名称节点,是负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即 FsImage 和 EditLog。 你可以把它理解成大管家,它不负责存储具体的数据。

 FsImage 用于维护文件系统树以及文件树中所有的文件和文件夹的元数据;

操作日志文件 EditLog 中记录了所有针对文件的创建、删除、重命名等操作


注意,这个两个都是文件,也会加载解析到内存中。

为了防止 Namenode 挂掉,sendaryNamenode 的节点用来做备份,它会定期的和 namenode 就行通信来完成整个的备份操作。


2. DataNode:数据节点,用来具体的存储文件,维护了 blockId 与 datanode 本地文件的映射。 需要不断的与 namenode 节点通信,来告知其自己的信息,方便 nameode 来管控整个系统。这里的块会默认是 128M ,每个块都会默认储存三份。

 

数据存储的细节



HDFS 写文件的过程。读文件类似。

 


MapReduce

 

本质

将 hashmap 做不了 10 万亿级别大数据,MapReduce 利用分布式集群去做,于是实现了 map、reduce 的过程 N 个进程同时做计算。

运行原理


1. JobClient:运行于 client node,负责将 MapReduce 程序打成 Jar 包存储到 HDFS,并把 Jar 包的路径提交到 Jobtracker,由 Jobtracker 进行任务的分配和监控。


2. JobTracker:运行于 name node,负责接收 JobClient 提交的 Job,调度 Job 的每一个子 task 运行于 TaskTracker 上,并监控它们,如果发现有失败的 task 就重新运行它。


3. TaskTracker:运行于 data node,负责主动与 JobTracker 通信,接收作业,并直接执行每一个任务。


4. HDFS:用来与其它实体间共享作业文件。


Map 任务处理

l 读取 HDFS 中的文件。每一行解析成一个<k,v>。每一个键值对调用一次 map 函数

l 重写 map(),对第一步产生的<k,v>进行处理,转换为新的<k,v>输出

l 对输出的 key、value 进行分区

l 对不同分区的数据,按照 key 进行排序、分组。相同 key 的 value 放到一个集合中

l (可选) 对分组后的数据进行归约。

 

Reduce 任务处理

l 多个 map 任务的输出,按照不同的分区,通过网络复制到不同的 reduce 节点上

l 对多个 map 的输出进行合并、排序。

l 重写 reduce 函数实现自己的逻辑,对输入的 key、value 处理,转换成新的 key、value 输出

l 把 reduce 的输出保存到文件中


Yarn

 

Yarn 的架构


Yarn 包含两部分:

l 资源管理器(Resource Manager)和节点管理器(Node Manger)这两个主要进程。

ResourceManager 进程负责整个集群的资源调度管理,独立部署在服务器上;

l NodeManger 进程负责服务器上的资源和任务管理,跟随 HDFS 的 DataNode 进程一起出现。

Yarn 的调度的过程(以 MapReduce 为例)

 

l 我们向 Yarn 提交应用程序,包括 MapReduce ApplictionMaster、MapReduce 程序及 Appliction 启动命令。

l ResourceManager 进程和 NodeManager 进程通信,根据集群资源,为用户程序分配第一个容器(节点管理器管理一堆容器,计算任务在容器中计算),将 MapReduce ApplictionMaster 分发到这个容器上,在容器里面启动 MapReduce ApplictionMaster。

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

l MapReduce ApplictionMaster 申请到需要的容器后,和相应的 NodeManager 进行通讯,将 MapReduce 程序分发到 NodeManager 进程所在服务器,并在容器中进行运行,运行的 Map 或 Reduce 任务。

l Map 或者 Reduce 任务在运行期和 MapReduce ApplictionMaster 通信,汇报运行状态。当运行结束,MapReduce ApplictionMaster 向 ResourceManager 进程注销并释放容器资源。

 

利用 Yarn 的资源调度,可以将 MapReduce 及 Spark 等框架服务启动运行,互不干扰。

 

Hive

可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能,简化直接编写 MapReduce 的过程。

操作符师 Hive 的最小处理单元;每个操作符处理代表 HDFS 操作或 MR 任务;编译器把 Hive SQL 转化成一组操作符。



Hive 架构

 


Hive 的体系结构可以分为以下几部分

(1)用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CLI,Cli 启动的时候,会同时启动一个 Hive 副本。Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。

(2)Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

(3)解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。

(4)Hive 的数据存储在 HDFS 中,大部分的查询、计算由 MapReduce 完成(包含*的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。

 

发布于: 2020 年 09 月 03 日阅读数: 87
用户头像

还未添加个人签名 2018.08.21 加入

码过代码、做过产品;擅长码字、演讲、认真做事之人。

评论

发布
暂无评论
大数据架构小结