本文共 1616 字,大约阅读时间需要 5 分钟。
目录
该系列文档是由学习 整理而来。若有不足之处,烦请批评指正!
Apache基金会所开发的分布式系统基础框架
用于解决 海量数据的存储和分析 问题
Hadoop生态圈:Hive、HBase、HDFS、Zookeeper...
优势:
高可靠性:底层维护多个数据副本
高扩展性:可方便扩展和缩减节点
高效性:MapReduce,并行计算,加快任务处理速度
高容错性:自动将失败的任务重新分配
Hadoop 2.x组成:
Common(辅助工具)
HDFS(数据存储)
MapReduce(计算)
Yarn(资源调度)
Hadoop 1.x,没有Yarn,MapReduce负责计算+资源调度
产生背景:随着数据量增大,一个操作系统存不下所有的数据,迫切需要一种系统来管理多个机器上的文件
分布式文件管理系统:
文件系统:用于存储文件,通过目录树来定位文件
分布式:由很多服务器联合起来实现功能,集群中的服务器由各自的角色
使用场景:
适合一次写入,多次读出的场景,且不支持文件的修改
适合用来做数据分析,并且不适合用来做网盘应用
优点:
高容错性:数据自带保存多个副本
适合处理大数据,数据规模大,PB级别 ;文件规模大,百万以上的文件数量
可构建在廉价机器上,通过多副本机子,提高可靠性
缺点:
不适合低延时数据访问
无法高效的对大量小文件进行存储,寻址时间会超过读取时间
不支持并发写入、文件随机修改,支持文件追加
分布式运算程序的编程框架,相当于运行在操作系统之上的应用程序
将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上
优点:
易于编程:简单的实现一些接口,就可以完成一个分布式程序
良好的扩展性:扩展机器
高容错性:将失败的任务转移到另外一个节点上运行,不至于这个任务失败
适合PB级以上海量数据的离线处理
缺点:
不擅长实时计算
不擅长流式计算:流式计算的输入数据是动态的,而MapReduce的输入集是静态的,不能动态变化
不擅长有向图计算:即多个应用程序之间存在依赖关系,后一个程序的输入为前一个的输出。每个MapReduce的输出结果都会写入磁盘,会造成大量的磁盘IO,导致性能非常低下
核心思想:
Map阶段(分):默认按块的大小进行拆分,将数据集拆分成几个文件
Reduce阶段(合):数据依赖MapTask并发实例的输出,数据结果输出到文件
并发运行,互不相干
进程:一个完整的MapReduce程序在分布式运行时有三类实例进程
MrAppMaster:负责整个程序的过程调度及状态协调
MapTask:负责Map阶段的整个数据处理流程
ReduceTask:负责reduce阶段的整个数据处理流程
资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台
基于内存的快速、通用、可扩展的大数据分析引擎
背景:
Hadoop 1.x MapReduce的缺点
MR是基于数据集的计算,所以面向数据
从存储介质中获取(采集)数据,然后进行计算,最后将结果存储到介质中,所以主要应用于一次性计算,不适合数据挖掘和机器学习这样的迭代计算和图像挖掘计算
基于文件存储介质,所以性能非常慢
MR和Haddop紧密耦合在一起,无法动态替换
Spark(2016年6月)先Yarn出来,基于Hadoop 1.x架构思想,采用自己的方式改善Hadoop 1.x的问题
计算基于内存,并且基于Scala语法开发,天生适合迭代计算
资源和计算分开,Master、Executer
使用Hadoop的存储框架HDFS
特点:
快
易用:可快速构建不同的应用
通用:提供了统一的解决方案
兼容性:可以方便地与其他开源产品进行融合
转载地址:http://oiqen.baihongyu.com/