写点什么

大数据(1)——总结

用户头像
小叶
关注
发布于: 2020 年 09 月 02 日

大数据概述

发展史

  • 最早起源于2004年谷歌发表的三篇论文,也是我们常听到的大数据“三架马车”:分布式文件系统GFS、大数据分布式计算框架MapReduce、NoSQL数据库BigTable。最要用于搜索引擎

  • Lucene开源创始人根据论文实现了类似的GFS和MapReduce功能。2006年开源为Hadoop,它主要包含分布式文件系统HDFS和大数据计算引擎MapReduce

  • 2007年百度和阿里开始使用Hadoop。

  • 2008年Hadoop正式成为Apache的顶级项目。

  • Yahoo开发了Pig,它是一种脚本语言,使用类sql语法来生成MapReduce程序,然后在Hadoop上运行

  • Facebook发布了Hive。Hive支持使用sql语法进行大数据计算。到2011年的时候Facebook大数据平台上运行的作业90%来源于Hive

  • 众多Hadoop周边产品出现,大数据生态逐渐形成:

  • 将关系型数据库中的数据导入导出到Hadoop平台的Sqoop;

  • 针对大规模日志进行分布式收集、聚合、和传输的Flume;

  • MapReduce工作流调度引擎Oozie

  • 2012年由UC伯克利AMP实验室推出Spark。

概述

大数据主要处理的应用场景包括数据分析、数据挖掘和机器学习等。

  • 数据分析:主要使用Hive、Spark SQL等SQL引擎完成

  • 数据挖掘与机器学习:主要使用TensorFlow、Mahout以及MLib等。



应用发展史

  • 搜索引擎:爬取网页、计算网页排名、存储网页索引等等

  • 数据仓库:对数据仓库进行统计、分析展示

  • 数据挖掘:挖掘数据之间的联系,做定向推荐等

  • 机器学习:根据算法对数据进行行为预测

大数据应用领域

  • 医学影像智能识别

  • AI外语老师

  • 智能解题

  • 舆情监控与分析

  • 大数据风控

  • 新零售

  • 无人驾驶

HDFS

HDFS系统架构

数据存储细节

HDFS设计目标

  • 以流式数据访问模式存储超大文件,运行与商业硬件集群上

  • 超大文件:拆分分布式存储

  • 流式数据访问:一次写入,多次读取

  • 商用硬件

不适合HDFS的场景

  • 低延迟的数据访问

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

  • 多用户随机写入修改文件

设计目标

  • 假设:节点失效是常态

  • 理想:

  • 任何一个节点失效,不影响HDFS服务

  • HDFS可以自动完成副本的复制

文件

  • 文件切分成块(默认大小64M),以块为单位,每个块有多个副本存在其它的节点上,副本数可以在文件生成时指定(默认3)

  • NameNode 是主节点,存储文件的元数据(文件名、文件目录结构、文件属性等),以及每个文件的块列表及块所在的DataNode等等

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

  • 分而治之

HDFS关键运行机制——高可用

一个NamaNode和多个DataNode

  • 数据复制(冗余机制):

  • 存放的位置

  • 故障检测

  • 数据节点

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

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

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

  • 名字节点:(日志文件,镜像文件)

  • 空间回收机制

HDFS写文件流程



写一个数据块

HDFS读文件流程

节点失效解决方案

  • DataNode的磁盘挂了

  • DataNode正常运行

  • 坏掉磁盘上的数据尽快通知DataNode

  • DataNode的机器挂了

  • 如何感知挂了:心跳机制。DataNode每三秒向NameNode发送心跳。若10分钟未发心跳,NameNode则认为该节点失效,将取出该DataNode上的对应的block,对其复制

  • NameNode挂了

  • 持久化元数据:

  • 操作日志:记录文件创建、删除、修改文件属性等操作

  • Fsimage

  • 包含完整的命名空间

  • File -> Block的映射关系

  • 文件的属性

  • Client挂了

影响一致性问题。

HDFS一致性模型

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

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

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

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

Hadoop文件系统

文件系统抽象(org.apache.hadoop)

  • fs.FileSystem

  • fs.LocalFileSystem

  • hdfs.DistrbutedFileSystem

  • hdfs.HftpFileSystem

  • hdfs.HsftpFileSystem

  • fs.HarFileSystem

MapReduce

概述

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

  • 大规模数据处理

  • 处理海量数据(大于1TB)

  • 成百上千CPU实现并行处理

  • 处理思想:分而治之

特性

  • 自动实现分布式并行计算

  • 容错

  • 提供状态监控工具

  • 模型抽象简洁,程序员易用

适用于MapReduce的计算类型

  • TopK

  • K-means

  • Bayes

  • SQL

不适用MapReduce的计算类型

  • Fibonacci

Yarn

概述

YARN: Yet Another Resource Negotiator

  • 下一代 MapReduce框架的名称

  • 不再是传统的MapReduce框架,甚至与此无关

  • 一个通用的运行时框架,用户可以编写自己的计算框架,在该环境中运行

  • MRv2最基本的设计思想是将JobTracker的两个主要功能——资源管理、作业管理——分成两个独立的进程。

  • 在该解决方案包含的两个组件:全局的ResourceManager和与每个应用相关的ApplicationMaster

  • 应用是指单独的一个MapReduce或者DAG作业

架构

Yarn的工作流程

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

  2. ResouceManager进程和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一样来进行计算。

架构



Hive执行流程

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

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

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

Hive 编译器







用户头像

小叶

关注

还未添加个人签名 2018.10.21 加入

还未添加个人简介

评论

发布
暂无评论
大数据(1)——总结