写点什么

架构师第 12 周 总结

用户头像
尔东雨田
关注
发布于: 2020 年 09 月 03 日
架构师第12周 总结

大数据概述

主要应用场景:数据分析、数据挖掘和机器学习。

数据分析:Hive、Spark SQL

数据挖掘和机器学习:TensorFlow、Mahout、MLib



应用领域:医学影像智能识别、病历大数据智能诊疗、AI外语老师、舆情分析和监控、大数据风控、新零售、无人驾驶

HDFS



目标场景

超大文件;流式数据访问模式存储超大文件:一次写入多次读取;运行于商业硬件集群上。

不适用场景

要求低延迟的数据访问、大量小文件(超过NameNode的处理能力)、多用户随机写入修改文件。

HDFS采用master/slave架构,一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。

NameNode

负责管理文件系统的名称空间(namespace)

管理客户端对文件的访问

负责文件元数据(metadata)操作

负责确定数据块到具体Datanode节点的映射

管理数据块的复制,周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)

磁盘数据错误,心跳检测和重新复制

DataNode

负责处理文件系统客户端的读写请求

在Namenode的统一调度下进行数据块的创建、删除和复制

每个Datanode节点周期性地向Namenode发送心跳信号



MapReduce

Map/Reduce是一个使用简易的软件框架和编程模型,用于解决大规模数据处理的问题

特性

自动实现分布式并行处理

容错

提供状态监控工具

模型抽象简介,易用



一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。



编程模型

  • map

主要输入是一对 <Key, Value> 值,经过 map 计算后输出一对 <Key, Value> 值;然后将相同 Key 合并,形成 <Key, Value 集合 >。

  • reduce

3个主要阶段:shuffle、sort和reduce 。

shuffle、sort 每个Reducer获得所有Mapper输出中与之相关的分块进行排序合并

reduce同样也产出一组 <key, value> 键值对做为作业的输出



框架执行过程



  1. JobClint将作业Jar包存放在DataNode服务器上。

  2. 将作业job提交给JobTracker。

  3. JobTracker 根据作业调度策略创建 JobInProcess 树,每个作业都会有一个自己的 JobInProcess 树。

  4. JobInProcess 根据输入数据分片数目(通常情况就是数据块的数目)和设置的 Reduce 数目创建相应数量的 TaskInProcess。

  5. TaskTracker 进程和 JobTracker 进程进行定时通信。

  6. 如果 TaskTracker 有空闲的计算资源(有空闲 CPU 核心),JobTracker 就会给它分配任务。分配任务的时候会根据 TaskTracker 的服务器名字匹配在同一台机器上的数据块计算任务给它,使启动的计算任务正好处理本机上的数据。

  7. TaskTracker 收到任务后根据任务类型(是 Map 还是 Reduce)和任务参数(作业 JAR 包路径、输入数据文件路径、要处理的数据在文件中的起始位置和偏移量、数据块多个备份的 DataNode 主机名等),启动相应的 Map 或者 Reduce 进程。

  8. Map 或者 Reduce 进程启动后,检查本地是否有要执行任务的 JAR 包文件,如果没有,就去 HDFS 上下载,然后加载 Map 或者 Reduce 代码开始执行。

  9. 如果是 Map 进程,从 HDFS 读取数据(通常要读取的数据块正好存储在本机);如果是 Reduce 进程,将结果数据写出到 HDFS。

Yarn

组成

分布式集群调度框架,包括两个部分:

  • 资源管理器 Resource Manager

负责整个集群资源调度管理,部署在独立服务器上。

  • 节点管理器 Node Manager

负责具体服务器上的资源和任务管理,在集群中每一条计算器上都会启动,与HDFS的DataNode进程一起出现。



工作流程

  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

将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行



Hive和Hadoop(MapReduce,HDFS)的关系

  • Hive是最上层,即客户端层或者作业提交层。

  • MapReduce/Yarn是中间层,也就是计算层。

  • HDFS是底层,也就是存储层。



执行流程

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

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

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



用户头像

尔东雨田

关注

预备用枪! 2017.12.12 加入

还未添加个人简介

评论

发布
暂无评论
架构师第12周 总结