浅析 MapReduce/ Spark/ Spark Steaming/ Storm 与 HBase/HDFS

MapReduce 是大的批量操作,不要求时限。基于文件系统,hdfs。

Spark 是快速的批量操作,基于内存,所以速度快。其主要亮点在于把过程给数据。

Storm是流式处理,快速实时。

Spark Streaming 跟Storm类似,只不过Spark Streaming是小时间窗口的处理,Storm是实时的来一条处理一条。


1. storm技术架构:

Flume  +  kafka  +  Storm / Spark + Hbase / Redis的技术架构。


storm:流程: 把topology有向无环图分发到各个节点,数据到来时直接送到节点实时处理,处理期间以spout进入,经过多个bolt的处理过程,这个过程是以bult形式。最终写入HBase。


2. spark 技术架构: 

浅析 MapReduce/ Spark/ Spark Steaming/ Storm 与 HBase/HDFS_第1张图片


spark逻辑:

把spark任务根据依赖度分成RDD,然后分成stage,再分成task,通过master把task分给worker,worker启动进程executor,executor启动多个线程去执行task。

创建RDD,创建执行计划,调度任务。

创建RDD就是把存在于文件的数据调入内存然后组织成RDD形式。

然后根据提交的任务(程序)把整个任务拆分成几个阶段(stage例如,先做RDD;然后做map操作也就是找出 一样的;最后对键相同的的做统计,这就是三个阶段),

最后就可以把这些任务分成task分配到不同的节点去执行了。


Spark Streaming技术架构:

和storm相似但有一个时间滑动窗口,即先汇集数据,到达一定量后按照数据块进行分发。


Spark Streaming流程:



总结:

spark与storm的业务目标有相似都有追求高效,但技术的架构spark与hadoop相似;都是准备好数据后把任务分配到数据上。

storm是现分布化任务然后等数据,spark是现分布化数据然后等任务。

spark和storm都支持DAG,所以应对复杂性运算还好。但MapReduce在应对复杂性上只能多次MapReduce,效率就不行了。


3.hadoop技术架构:

hadoop是以MapReduce计算模型为核心,包括HDFS文件存储系统和HBase数据库的一个架构。


MapReduce技术架构:

map作业 + map映射函数   和  reduce作业 + reduce合并函数


MapReduce处理流程:   

浅析 MapReduce/ Spark/ Spark Steaming/ Storm 与 HBase/HDFS_第2张图片

外界传来一个数据文件,比如是txt格式,这个txt文件首先被MapReduce库切分成M个小文件(粒度大约16M-64M),切分后会把这些文件分布化到HDFS中;然后用fork把用户进程拷贝到集群内其他机器上。

(用户进程user program的副本中会有一个master,其它都是workermaster负责调度并为空闲worker分配作业也就是map作业和reduce作业,worker的数量可以由用户指定)


被分配了map作业的worker,开始读取对应分片的输入数据,map作业数量由M决定,和split一一对应,map作业从输入数据中抽取出键值对,每一个键值对都作为参数传递给 map函数,map函数产生的中间键值对被缓存在内存中。


缓存的中间键值对会被定期写入本地磁盘,而且被分为R个分区,R的大小由用户定义,将来每个分区会对应一个Reduce作业;这些中间键值对的位置会通报给master,master负责将信息转发给reduce worker。

master通知分配了reduce作业的worker它负责的分区在什么位置,不止一个地方,因为每个map作业产生的中间键值对都可能映射到所有R个不同分区,当reduce worker把所有它负责的中间键值对都读过来后,先对他们进行排序,使得相同键的键值对聚集在一起,因为不同的键可能会映射到同一个分区也就是同一个reduce作业,所以排序是必须的。

reduce worker遍历排序后的中间键值对,对于每个唯一的键,都将键与关联的值传递给reduce函数,reduce函数产生的输入会添加到这个分区的输出文件中。

当所有的map和reduce作业都完成了,master唤醒正版的user program ,MapReduce函数调用返回user program的代码。

所有执行完毕后,MapReduce输出放在了R个分区的输出文件中(每一个对应一个reduce作业),用户通常并不需要合并这R个文件,而是将其作为输入交给另一个MapReduce程序处理。

整个过程的输入来子HDFS,中间数据放在本地文件系统,最终输出写入底层HDFS。


参考:

http://flyingsnail.blog.51cto.com/5341669/1571281/


疑问:

开始的txt文件是先切分然后送到各个机器还是在切分后仍然在原地机器上,等待调度???


总结:

对于复杂性运算,MapReduce在应对复杂性上只能多次MapReduce,就不适用了。因为要多次的IO。



4. HBase技术架构:

浅析 MapReduce/ Spark/ Spark Steaming/ Storm 与 HBase/HDFS_第3张图片

一个适合于非结构化数据存储的简单结构化分布式存储系统。面向列。

用MapReduce来处理数据,用HDFS来存储数据。


HBase处理流程:


写流程

来自MapReduce或者client的数据,在zookeeper的协调下在master上通过算法找到应该存储的HRegionServer,在HRegionServer上通过算法找到应该写入的HRegion,然后找到HStore,在写入HStore的MemStore之前会先写入HLog(恢复使用),HLog会不断删除旧数据也就是已经存到HStore的数据,然后往HStore的MemStore里写入,满了就flush到FileStore,FileStore到了阈值就跟其他FileStore合并,合并后的FileStore太大了就split出一个新的HRegion,也就是从下面的数据开始就被标记成新的另一个HRegion的name了。


如何寻找HRegionServer:

浅析 MapReduce/ Spark/ Spark Steaming/ Storm 与 HBase/HDFS_第4张图片

读流程

来自MapReduce或者client的操作,


疑问:

MapReduce输出的键值对是怎么变成column family形式的,因为HBase是以列的形式存储。???

下图中,HMaster还会直接管理DFS ???

HLog也会写入DFS ???

浅析 MapReduce/ Spark/ Spark Steaming/ Storm 与 HBase/HDFS_第5张图片


总结:



参考:

http://blog.csdn.net/woshiwanxin102213/article/details/17584043


5 HDFS技术架构:

Name Node ( FsImage存储文件块的映射表和文件系统配置信息 + EditLog事物日志 )+ Data Node

浅析 MapReduce/ Spark/ Spark Steaming/ Storm 与 HBase/HDFS_第6张图片


HDFS处理流程:

HBase的meta表存的可以是name node的信息,数据存入的时候也就是从HBase的HFile过来的时候一个Region可以对应这里Name Node的一个block。或者可以将Region再分成小文件块,这些块被存在Data Node中,不经过Name Node,Data Node中写入的信息多了后会生成一个新的块,并在心跳信息中报告给Name Node。Name Node用来操作文件命名空间的文件或者目录操作;数据块与数据节点的关系也是在Name Node中确定的。数据节点负责文件系统的读写,也就是块的读,写,创建,删除,和来自Name Node的复制命令。


在写入的时候,其实是先写入的客户端的本地文件中,当文件到达一个块大小时,客户端通知Name Node,Name Node把文件名插入命名系统中,并为之分配一个块包括块所在Data Node的ID和标识目标数据块的报文。这些信息就作为客户端请求的回复。客户断收到后把数据刷新到指定的Data Node中。文件关闭时,本地残留的未上传数据会转送到Data Node;然后Name Node就可以关闭了。


Name Node启动时会从磁盘中读取FsImage和EditLog,将EditLog中所有的事物应用到FsImage的仿内存中,然后将新的FsImage刷新到本地磁盘中,这时因为事物已经持久化到FsImage中,所以就可以删掉EditLog中的旧信息。这个过程也单独叫做检查点。


数据的安全性,数据之间的复制,数据的正确性,系统的可靠性,灾难恢复机能的实现。

浅析 MapReduce/ Spark/ Spark Steaming/ Storm 与 HBase/HDFS_第7张图片



疑问:HDFS与HBase接入的地方,数据是怎么流动的???

总结:















你可能感兴趣的:(大数据-理论)