写点什么

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

用户头像
张明森
关注
发布于: 2020 年 08 月 30 日

大数据概述

主要技术

hadoop

Hive

Yarn

Spark

实时计算:Storm、Flink、Spark Streaming

HBase

大数据应用发展

搜索引擎时代->数据仓库时代->数据挖掘时代->机器学习时代

大数据应用领域

医学影像智能识别

HDFS

数据存储要解决的问题:如何存储大量数据;如何快速存储及读写访问;如何保证大文件的数据安全性

HDFS是为以流式数据访问模式存储超大文件而设计的文件系统,并在普通商用硬件集群上运行

1.HDFS特性:支持超大文件;检测和快速应对硬件故障;流式数据访问;简化的一致性模型

2.不适应的场景:低延迟数据访问;大量的小文件;多用户写入文件、修改文件;

3.重要角色:

1).NameNode:分布式文件系统中的管理者,它负责管理文件系统命名空间、集群配置和数据块复制等

Senonday NameNode: 定期合并命名空间镜像和镜像编辑日志的辅助守护进程(第二名字节点不支 持NameNode节点的故障自动恢复)

2).DataNode:文件存储的基本单元,它以数据块的形式保存了HDFS中文件的内容和数据块的数据校验信息;会和其他数据节点进行通信,复制数据块(默认3份);上报块信息(1小时);心跳(3秒)

3).Client:与节点通信,访问HDFS文件系统,操作文件;先访问NameNode获取元数据,再访问 DataNode读写数据

4. 数据块 Block:系统读写的最小单位;默认64M

5.高可用:

数据复制(冗余)、故障检测(心跳包、块报告、数据完整性校验)

6.故障处理

DataNode 磁盘故障: 心跳检测故障通知NameNode;NameNode通知其他DataNode(包含对应Block)坏块数据复制

DataNode服务器挂掉:心跳检测10分钟未发送;NameNode通知其他DataNode(包含对应Block)坏块数据复制

NameNode服务器故障:从NameNode切换为主

Client故障:一致性问题处理

7.数据一致性模型

数据写入之后不保证再NameNode立即可见

写入数据超过一个块后,新的reader才能看见

sync()强制缓存与数据节点一致,调用成功之后对所有reader可见

MapReduce

程序进行分发;在数据服务器运行程序

分为map、reduce两部分程序



MapReduce处理流程

单词统计例子,map、reduce的输入、输出

输入 --> map --> shuffle --> reduce -->输出

1).map输入:key:文本偏移量;一行文本

2).reduce输入:map计算结果,经过合并(shuffle)作为输入



1).input:数据分片

2).map:计算,保存到文件,copy到reduce,相同key合并排序

3).reduce:计算

map任务和reduce任务的层次视角

map:

1).输入分片(input split):大小默认为一个Block

2).map输出的中间结果会先放在内存缓冲区中。

3).从缓冲区写到磁盘的时候,会进行分区并排序。

4).如果一个map产生的中间结果存放到多个文件,那么这些文件最终会合并成一个文件,这个合并过程不会改变分区数量,只会减少文件数量

reduce:

1).每个reducer对应一个ReduceTask,在真正开始reduce之前,先要从分区中抓取数据

2).相同的分区的数据会进入同一个reduce。这一步中会从所有map输出中抓取某一分区的数据,在抓取的过程中伴随着排序、合并。

3).reduce输出

merge:reduce合并相同的key

1. [input阶段]input阶段主要是从节点上反序列化数据,读取后切片,供map阶段使用

2. [map阶段]过程对某种输入格式的一条记录解析成一条或多条记录

3. [shuffle阶段]对中间数据的控制,作为reduce的输入;相同key传输到同一个reduce

4. [reduce阶段]对相同key的数据进行合并

5. [output阶段]按照格式输出到指定目录

MapReduce1.0架构

JobTracker:作业管理

TaskTracker:与DataNode部署在一起

1).作业jar文件存储到hdfs(DataNode);存储多份(TaskRunner可以进行本地拷贝)

2).提交作业JobTracker;JobSchduler调度

3).作业初始化:创建JobInprocess->创建TaskInprocess(分片数量)

4).心跳通信:有空闲资源则分发一个task任务

5).TaskRunner:启动map/reduce;下载jar包;执行map/reduce

细节:

1).InputFormat:切分split,提供k-v供map使用;FileInputFormat:可以配置一个Block=一个split

2).OutFormat:数据输出

3).Partitioner:按照key分区

4).主要调度方法:FIFO、公平调度

5).JobTracker:三层:作业监控层、任务控制层、任务执行层;

6).可用性:

JobTracker容错:未完成job失败(作业不难提交);重启之后通过job日志job部分恢复

TaskTracker:超时:10分钟无心跳,移除;黑名单、灰名单:部署性能监控脚本,性能太差,暂停调度

Task容错:允许部分task失败;Tip监控任务,失败任务多次尝试,

Record容错:配置最大长度;跳过失败的记录

YARN

资源管理器:负责整个集群的资源管理和调度;应用程序请求先分配一个节点,该节点创建ApplicationMaster

节点管理器:集群节点的资源和任务管理

ApplicationMaster:负责应用程序相关的事务;类似JobTracker作用;启动之后与应用程序通信;从资源管理器请求容器资源;与节点管理器通信执行作业

HIVE

  1. SQL->mapreduce

  2. join转mapreduce,作业



资料:

Raid:https://blog.csdn.net/pansaky/article/details/83788091

https://www.cnblogs.com/ywx-vashon/p/4895734.html

https://www.cnblogs.com/cjsblog/p/8168642.html

用户头像

张明森

关注

还未添加个人签名 2017.10.16 加入

还未添加个人简介

评论

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