媒介
说起大年夜数据处理,一切都来源竽暌冠Google公司的经典论文:《MapReduce:Simplied Data Processing />
2、流处理体系
批处理是一种用来计算大年夜范围数据集的办法。批处理的过程包含将义务分化为较小的义务,分别在集群中的每个计算机长进行计算,根据中心结不雅从新组合数据,然后计算和组合最终结不雅。当处理异常巨大年夜的数据集时,批处理体系是最有效的。
典范的批处理体系就是Apache Hadoop。而流处理则对由持续赓续的单条数据项构成的数据流进行操作,重视数据处理结不雅的时效性。典范的流处理体系有Apache Storm,Apache Samza。还有一种体系,同时具备批处理与流处理的才能,这种称为混淆处理体系,比如Apache Spark,Apache Flink。接下来我们来具体介绍这三种处理体系。
Partition:每个topic都有1到多个partition,便于分散到不合的borker中。多个partition的数据归并在一路构成了topic完全的数据。
三、批处理体系
批处理体系在大年夜数据世比赛有着悠长的汗青。批处理体系重要操作大年夜量的、静态的数据,并且比及全部处理完成后才能获得返回的结不雅。批处理体系中的数据集一般相符以下特点:
有限: 数据集中的数据必须是有限的(无穷的数据一批就处理不完了啊。持续赓续的数据一般会应用流处理体系来进行处理,我们后面会讲到)
海量: 极海量的数据平日只能应用批处理体系来处理。批处理体系在设计之初就充分的┞峰酌了数据量巨大年夜的问题,实际上批处理体系也是为此而生的。
因为批处理体系在处理海量的持久数据方面表示出色,所以它平日被用来处理汗青数据,很多OLAP(在线分析处理)体系的底层计算框架就是应用的批处理体系。然则因为海量数据的处理须要消费很多时光,所以批处理系同一般不合实用于对延时请求较高的场景。
Apache Hadoop
说起大年夜数据处理框架,永远也绕不开Hadoop。Hadoop是首个在开源社区获得极大年夜存眷的大年夜数据处理框架,在很长一段时光内,它几乎可以作为大年夜数据技巧的代名词。在2.0版本今后,Hadoop由以下组件构成:
资本治理器YARN:YARN可认为上层应用供给同一的资本治理和调剂,它可以治理办事器的资本(主如果CPU和内存),并负责调剂功课的运行。在Hadoop中,它被设计用来治理MapReduce的计算办事。但如今很多其他的大年夜数据处理框架也可以将YARN作为资本治理器,比如Spark。
MapReduce:即为Hadoop中默认的数据处理引擎,也是Google的MapReduce论文思惟的开源实现。应用HDFS作为数据源,应用YARN进行资本治理。
固然Kafka被广泛应用于各类流处理体系做数据源,但Samza可以更好的发挥Kafka架构的优势。根据官网的解释,Samza由三个层次构成:
- 数据流层
- 履行层
- 处理层
大年夜今天的眼光来看,MapReduce作为Hadoop默认的数据处理引擎,存在着很多的不足。比如:编程模型抽象程度较低,仅支撑Map和Reduce两种操作,须要手工编写大年夜量的代码;Map的中心结不雅须要写入磁盘,多个MR之间须要应用HDFS交换数据,是以不合适迭代计算(机械进修、图计算);义务的启动和调剂开销较大年夜等。跟着更多高机能处理引擎的成长,今朝在企业中应用MapReduce进行计算的应用已经呈降低趋势(HDFS及YARN仍然被广泛应用),但固然如斯,MapReduce作为最早的大年夜数据处理引擎,仍然值得被我们铭记。
四、流处理体系
批处理体系好懂得,那什么是流处理体系呢?小学的时刻我们都做过这么一道数学题:一个水池有一个进水管和一个出水管,只打开进水管8个小时充斥水,只打开出水管6个小时流光水,那么同时打开进水管和出水管,水池多长时光充斥水?
好吧,这道题的谜底是永远也充不满……因为出水管出水比较快嘛。流处理体系就相当于这个水池,把流进来的水(数据)进行加工,比如加盐让它变成盐水,然后再把加工过的水(数据)大年夜出水管放出去。如许,数据就像水流一样永一向止,并且在水池中就被处理过了。所以,这种处理永一向止的接入数据的体系就叫做流处理体系。
逐项处理: 每次处理一条数据,是真正意义上的流处理。
微批处理: 这种处理方法把一小段时光内的数据算作一个微批次,对这个微批次内的数据进行处理。
Apache Storm
Apache Spark
Apache Storm是一种侧重于低延迟的流处理框架,它可以处理海量的接入数据,以近及时方法处理数据。Storm延时可以达到亚秒级。Storm含有如下关键概念:
Topology:Storm topology中封装了及时应用法度榜样的逻辑。Storm topology类似于MapReduce功课,但差别是MapReduce最终会完成,而topology则会一向运行(除非被强迫停止)。Topology是由spouts和bolts构成的DAG(有向无环图)。
Spout:Spout是topology中Stream的源。Spout大年夜外部数据源攫取数据并接入到Strom体系中
Bolt:Bolt用于Storm中的数据处理,它可以进行过滤、聚合、连接等操作。将不合的bolt连接构成完全的数据处理链条,最后一个bolt用来输出(到文件体系或数据库等)。
Storm的根本思惟是应用spout拉取stream(数据),并应用bolt进行处理和输出。默认情况下Storm供给了“at least once”的包管,即每条数据被至少花费一次。当一些间谍作况(比如办事器故障等)产生时,可能会导致反复花费。为了实现“exactly once”(即竽暌剐且仅有一次花费),Storm惹人了Trident。Trident可以将Storm的单条处理方法改变魏微批处理方法,但同时也会对Storm的处理才能产生必定的影响。
值得一提的是,一些国内的公司在Storm的基本长进行了改进,为推动流处理体系的成长做出了很大年夜供献。阿里巴巴的JStorm参考了Storm,并在收集IO、线程模型、资本调剂及稳定性上做了改进。而华为的StreamCQL则为Storm供给了SQL萌芽语义。
推荐阅读
Kafka拓扑构造Kafka的设计可以赞助用户解决很多架构汕9依υ?题,其具备的高机能、低耦合、高靠得住性、数据不损掉等特点,结合实际的应用体系应用处景,可以或许异常知足用户的需求。>>>详细阅读
本文标题:大数据处理框架的类型、比较和选择
地址:http://www.17bianji.com/lsqh/37199.html
1/2 1