写点什么

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

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

本周进入大数据学习阶段,主要围绕了 hadoop 编程模型和 hive 进行了学习。

Hadoop 是作为一个大数据框架,主要包含了两个核心:存储和计算。

大数据存储

大数据存储一般都是分布式文件系统,在 Hadoop 框架下就是 HDFS(Hadoop Distributed File System),这种文件系统在面向最终用户是保证高可用,数据按照块来存储,块大小可以在配置中设置。通常用来存储的是大文件,不适合做小文件存储和随机。

大数据计算

按照移动数据不如移动计算的原则,分布式计算的编程模型是依靠把计算函数分发到存储设备上运行读取和计算,这里是使用分治的思想:把一个大问题分解成小问题分别处理。在大数据领域,就是把大的计算分成若干小计算,分布式并行计算后再聚合成一个最终结果。

其关键在于如何分、如何合。一般来说,整个过程就是分为 map 和 reduce 两个阶段。这里就保证我们应用于分布式计算业务,是有一定要求的,需要我们的计算任何可以拆分。如果不适合拆分或前后数据有很多依赖校验,那就不适合应用于 hadoop 计算框架。

map 函数

我们的原数据进行打标处理,按照后面的聚合维度进行按 key 拆分,key 是用来识别聚合对象的身份,value 是我们需要的对象数据集,例如如果是统计总数,那 value 就是次数。再经过一个 shuffle 过程,把相同的 key 标记成输出到同一个后续处理器。map 函数通过这样的逐行处理数据,把数据拆分成后续可以给 reduce 函数处理的输入。

reduce 函数

reduce 接收到来自相同 key 的数据,开始按照 key 进行一定规则的聚合,可以是累加,可以是取并集,这个就是 reduce 的聚合过程。

大数据计算过程

整个计算过程依赖了 hadoop 的框架,其过程中依赖了 JobScheduler,JobInPorcess,TaskInProcess,TaskTracker。

JobScheduler

JobScheduler 是一个调度器,作为管理客户端提交的计算任务,同时充当安排计算资源的一个管理者。

JobInProcess

JobInProcess 是一个计算任务实例,负责确定计算任务需要分解成多少个 map 任务和 reduce 任务,通过解析计算任务数据所在位置,确定需要创建多少个 TaskInProcess。

TaskInProcess

TaskInProcess 是 JobTracker 中用来管理调度实际一个计算任务的管理进程,TaskInProcess 管理其下属的 TaskTracker,把任务分配到 TaskTracker,如果计算过程出现异常,TaskInProcess 可以再寻找其他的 TaskTracker 重新执行计算任务,实现任务的分配和重试。

TaskTracker

TaskTracker 是一个 map 或 reduce 任务,是真正执行逻辑的代码进程,运行在 DataNode 上,同时负责和 JobTracker 服务保持心跳,实现高可用的计算。

大数据计算调度框架

在 hadoop1 中,计算和调度都在一个框架内完成,不例如整个框架扩展和解耦,所以又在 hadoop2 中引入 Yarn 作为资源调度框架使用,资源调度框架来寻找合适的资源进行开启容器调度,这样计算框架本身只关心计算。

Hive

由于 hadoop 的编程模型主要是围绕着 map 和 reduce 这两个过程展开,其本身的编程逻辑方式不是很容易让人理解,有一定的准入门槛,为了降低我们对编写 map 函数和 reduce 函数的难度,同时简化过程。在大数据计算框架之上又延伸出了大数据应用框架,Hive 就是其中之一。

Hive 让开发者用 SQL 语法的角度来实现 map 和 reduce 的过程,通过对 SQL 语法解析,逐步编译生成 map 和 reduce 函数,然后分发到各个计算节点执行。

这中间就是利用 SQL 很多的计算特征就是可以按照 map 和 reduce 的思想进行数据拆分与合并。


可以说,通过本周的学习,让我对大数据领域有一个全面的认识,虽然之前也零零星星接触了大数据,但是通过这样抓住要点的学习,抓住计算原理的过程,基本上把大数据的关键内核已经有了比较清楚的认识。后续可以通过对每个细节的深入学习进一步理解其设计上的精髓。

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

Gosling

关注

这个家伙很懒,只留下这一句话 2017.10.28 加入

还未添加个人简介

评论

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