大数据(1)——总结
大数据概述
发展史
最早起源于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的工作流程
我们向Yarn提交应用程序,包括MapReduce ApplicationMaster、MapReduce程序,以及MapReduce Application 启动命令
ResouceManager进程和NodeManager进行通信,根据集群资源为每个用户分配第一个容器,并将MapReduce ApplicationMaster分发到这个容器上面,并在容器里启动 MapReduce ApplicationMaster。
MapReduce ApplicationMaster启动后,立即向ResourceManager进行注册,并为自己的应用程序申请容器资源
MapReduce ApplicationMaster申请到需要的容器后,立即和响应的NodeManager进行通信,将用户的MapReduce程序分发到NodeManager进程所在的服务器,并在容器里运行,运行的就是map或reduce作业
Map或者Reduce任务在运行期和MapReduce ApplicationMaster 通信,汇报自己的运行状态,如果运行结束,MapReduce ApplicationMaster 向 ResourceManager进程注销并释放所有的容器资源
Hive
概述
操作sql一样来进行计算。
架构
Hive执行流程
操作符(Operator)是Hive最小的处理单元
每个操作符处理代表HDFS操作或MR作业
编译器把Hive SQL 转换为一组操作符
Hive 编译器
评论