IT教程 ·

大数据生态之数据处理框架探索

【阿里云IoT+YF3300】16.云端一体化,天猫精灵操控YF3300

数据处置惩罚框架

数据处置惩罚是一个异常普遍的观点,数据处置惩罚框架在数据架构中,主如果用于数据挪动和剖析这两大功用当中.关于数据挪动,有离线数据挪动和及时数据挪动,也可以叫做是批量数据挪动和流式数据挪动.而关于剖析这一块,有离线数据剖析和及时数据剖析,也可以称作是批量数据剖析和流式数据剖析.离线和及时,批量和流式,针对这两种差别的情势,就涌现了多种差别的数据处置惩罚框架.有批量的数据处置惩罚框架,有流式的数据处置惩罚框架,也有批流融会的框架.

批量数据处置惩罚框架

批量数据处置惩罚框架最典范的就是 mapreduce 了,这也是 apache hadoop 最初期的形状,运用 mapreduce 对 hdfs 上面大批量的数据举行盘算和处置惩罚.基于它写出来的运用程序可以运转在由上千个商用机械组成的大型集群上,并以一种牢靠容错的体式格局并行处置惩罚大批量的数据集。然则由于 mapreduce 的编写并不很直观,关于开发职员的门坎较高,以后在 mapreduce 之上涌现了新的产物,做为 mapreduce 的升级产物.那就是 apache pig 和 apache hive. Apache pig 和 apache hive 都是基于 mapreduce ,并给开发职员供应了越发轻便运用的要领和接口以及越发雄厚的语义处置惩罚.

  • Apache Pig是MapReduce的一个笼统。它是一个东西/平台,用于剖析较大的数据集,并将它们示意为数据流。Pig一般与 Hadoop 一同运用;我们可以运用Apache Pig在Hadoop中实行一切的数据处置惩罚操纵.
Apache PigMapReduce
Apache Pig是一种数据流言语。MapReduce是一种数据处置惩罚形式。
它是一种高等言语。MapReduce是初级和刚性的。
任何具有SQL基础知识的新手程序员都可以轻易地运用Apache Pig事情。没有相干履历难以编写
在Apache Pig中实行Join操纵异常简朴。在MapReduce中实行数据集之间的Join操纵是异常难题的。
Apache Pig运用多查询要领,从而在很大水平上削减代码的长度。MapReduce将须要险些20倍的行数来实行雷同的使命。
没有必要编译。实行时,每一个Apache Pig操纵符都在内部转换为MapReduce功课。MapReduce功课具有很长的编译历程。
  • hive是基于Hadoop的一个数据仓库东西,可以将结构化的数据文件映照为一张数据库表,并供应简朴的SQL查询功用,可以将SQL语句转换为MapReduce使命举行运转。其长处是进修成本低,可以经由过程类SQL语句疾速完成简朴的MapReduce统计,没必要开发特地的MapReduce运用,非常合适数据仓库的统计剖析。
Apache HiveMapReduce
经由过程SQL轻松接见数据的东西,从而完成数据仓库使命,如提取/转换/加载(ETL),报告和数据剖析。须要运用 java 等编程言语编写 mapreduce 程序来完成
关于种种差别的数据格式,可为之增加种种笼统的结构化信息,比方表,分区,桶只能对原始数据举行手动的原始的文件治理
可以直接接见多种数据存储体系,包含 hdfs 和 hbase 等只能直接接见 hdfs
可以运用越发除了 mapreduce 以外越发高等的实行引擎,比方 apache tez,apache spark只能以 hadoop 作为实行引擎,效力低

Hive 和 Pig 最大的差别就是一种运用 Latin 言语,一种运用 HiveQL 言语.这就致使了如今 Hive 成为了相对的主流,Pig 已很少人用了.HiveQL 这品种 SQL 言语处理了批量数据处置惩罚的易用性问题,如今不仅开发职员可以编写大数据处置惩罚程序,一般的剖析职员和业务职员也可以运用Hive举行大数据处置惩罚和剖析. 然则 Hive 并没有处理速率问题,因而在 Hive 之上,基于 Hive,又涌现了新的数据处置惩罚手艺和框架,比方 impala,presto,kylin 等,这个范畴手艺计划异常繁华.这里不赘述。

流式数据处置惩罚框架

流式数据处置惩罚,也称及时数据处置惩罚.数据是一条一条发生的,当数据发生的时刻,我们可以把它先存起来,供后续处置惩罚,这就是上面所说的离线(批量)数据处置惩罚.而如今越来越多的做法是数据发生时就立马对它举行盘算和剖析,而这就是及时数据处置惩罚或许叫及时盘算.而数据理论上是不停发生的,不停发生的数据不停的发往数据处置惩罚框架举行盘算和剖析,就像一条流,所以及时盘算也称作是流式盘算.另有一种做法是把批量数据读成一条一条的举行处置惩罚(比方 nifi).所以流式盘算处置惩罚的不一定是及时数据,也多是离线数据.
流式框架最典范,也是最老的就是 Storm,Storm 一款开源分布式及时盘算框架.它相对比较稳固,具有高容错性,也比较高效.

Storm 的基础观点:

  • Stream
    以Tuple为基础单位组成的一条有向无界的数据流
  • Tuple
    Integer,long,short,byte,string,double,float,boolean和byte array,包含自定义范例.
  • Topology
    盘算逻辑的封装
    由spouts和bolts组成的图,经由过程stream grouping将图中的spouts和bolts连接起来
    类同MapReduce中的job.

大数据生态之数据处理框架探索 IT教程 第1张

Storm 是一款比较老的框架,流式盘算的开创者,推出后也有异常普遍的运用.流式盘算的框架手艺一向不停生长,厥后也涌现了Storm的相似框架 samza.
国内阿里巴巴也对 Storm 举行了改进 : jstorm ,jstorm 越发稳固,功用更壮大. 对 Storm 来讲,如今处于一个好汉垂暮的阶段,许多特征是在它谁人时期是没有斟酌过的.

近来几年,流式数据处置惩罚范畴,又涌现了一些新的参与者.由于流式数据每每不是直接发往流式盘算平台举行处置惩罚,它须要一个中心层过渡,举行数据的缓冲,缓存和分发,这个中心层就是一般我们所说的音讯体系,音讯中心件.(老的说法也叫音讯行列,但如今的音讯体系要比音讯行列庞杂和壮大许多倍).险些一切的流式盘算历程都邑前置一个音讯体系.所以厥后音讯体系就痛快集成上流式数据处置惩罚的功用,把流式数据处置惩罚也一并做了.如今最盛行的音讯体系就是 kafka ,kafka 在2017 年就推出了 kafka streams.音讯体系的后起之秀: apache pulsar ,自带 Pulsar Functions,一个流式数据处置惩罚引擎(pulsar 号称是 kafka 的替代品 ,这部分内容待补充)。

Kafka Stream 如今是一个 lib 库,运用这个库可以很轻易的构建以 kafka 集群为数据泉源的运用和微效劳. Kafka streams 最大的特性就是它较为简朴,关于开发职员来讲门坎比较低:

  • 开发只须要一个简朴 lib 包,除了 kafka 外没有其他外部依靠了
  • 保证只处置惩罚一次的语义,开发职员不须要分外体贴
  • 不仅支撑一条条处置惩罚数据,也可以基于窗口操纵处置惩罚多条数据
  • 关于流式处置惩罚供应高等简朴的DSL ,也供应比较初级的处置惩罚接口

Kafka Stream 处置惩罚的拓扑图:

  • stream 是一个笼统观点,代表了没有边境的,延续更新的数据 record 流. Data record 是一个键值对.
  • stream processor 全部拓扑图中的一个节点,代表中心的一个处置惩罚步骤.有2个特别的processor: source processor ; sink processor
  • stream processing application 一个流式处置惩罚运用可由多个处置惩罚流程组成:

大数据生态之数据处理框架探索 IT教程 第2张

批流融会数据处置惩罚框架

无论是批量处置惩罚照样流式处置惩罚,手艺框架的生长终究都要走向一致,变得越发简朴,越发易用.而Spark 就是这个一致者.Spark 框架一经涌现,立马就盛行起来.如今 Spark 是一个一致的大规模数据处置惩罚和剖析盘算引擎,而且也有异常雄厚的spark 生态,官方生态有 DataFrames and SQL (批处置惩罚引擎,个中SQL 是比hive 更快的查询引擎),Spark Streaming(流处置惩罚引擎),MLib(机械进修库),GraphX(图盘算引擎).另有许多基于Spark 的第三方生态.比方 apache mahout(用于开发机械进修运用的框架),Koalas(Python库 pandas 的 Spark 版本).
另有前不久开源的Delta Lake,一个基于 Spark 的数据湖处理计划,它作为一个数据存储层(storage layer),具有异常壮大的特征.

大数据生态之数据处理框架探索 IT教程 第3张

Spark 是这个范畴老牌框架,然则也有厥后者.那就是 Flink,这个数据流盘算的新贵.

Flink 的涌现是为了处理 Spark Streaming 的一个设想缺点,Spark Streaming 的设想是经由过程 micro-batch 微批处置惩罚来模仿流处置惩罚,实际上并非真正的流处置惩罚.也就是说 Spark Streaming 是达不到 Storm 那样毫秒级的低延时的.Flink 处理了这个问题,它是真正的流处置惩罚,真毫秒级的低延时.
虽然,Spark Streaming 在新版本中推出了 Structure streaming,烧毁了之前的微批处置惩罚,也达到了真正的低延时.不过,现在,国内的公司照样越来越多挑选 Flink 作为中心的数据处置惩罚框架.这里援用 OPPO 大数据平台负责人张俊的一句话:
然则我们以为,全部手艺框架生长,手艺终究肯定是趋同的。为何挑选 Flink?另有一个很主要的原因是近来两年 Flink 在国内的生长提高水平。包含像阿里团队,他们也在鼎力大举地宣扬跟投入,包含本日 QCon 大会上大沙和云邪两位先生,他们也是阿里团队社区的资深大 V。

大数据生态之数据处理框架探索 IT教程 第4张
大数据生态之数据处理框架探索 IT教程 第5张

批流融会处置惩罚框架还一个小众的框架 Apache Apex,跟 Flink 差不多.

批流融会之上

上面说过,手艺框架的生长终究都要走向一致.如今批流数据和流式数据处置惩罚如今一致了,那还能继承一致吗.答案是能.现在批流一体数据处置惩罚框架有Spark,有 Flink ,另有基于公有云的 google cloud dataflow.由于开源,这些手艺框架都邑互相自创,终究都邑是迥然差别.所以就有方法把这些处置惩罚框架再一致同来,构成一个一致的编程模子.这个就是 Apache Beam.
Apache Beam 不是一个数据处置惩罚引擎,它不本身处置惩罚数据.它只是一层 layer.这层 layer 可运转在种种差别的数据处置惩罚引擎之上,比方 spark ,flink 等.它的作用简朴来讲,就是beam编写的一套代码,可以直接运转在 spark,flink 等种种差别的数据处置惩罚引擎中.

大数据生态之数据处理框架探索 IT教程 第6张
Apache beam 本质上是一套 sdk ,这一套 sdk 运用一致的编程模子来编写批处置惩罚和流处置惩罚程序,而且还供应了差别言语的比方python,go ,java的版本.
Beam 供应的这个编程模子就是 Pipeline,运用 beam 来编程,实在就是构建好一个 pipeline ,也可以叫做是数据处置惩罚程序的笼统.

这就是一个基础的pipeline,实在跟spark ,flink 中的DAG 图都差不多.

Pipeline 编写时,我们要指定它的runner,这就是 apache beam 的另一个笼统
Runner 即 pipeline 的实行引擎,比方 spark Runner,flink runner 等.beam 就是经由过程这个 runner 使得 pipeline 可以运转在多种差别的分布式运算框架上.

未完待续

数据处置惩罚框架一向飞速生长,但整体来讲,有一个清楚的内涵生长逻辑:那就是在易用性上,一致性上,经济性上不停向前。现在的国内的一个趋向是全部大数据栈也在往云上走,由于云完整符合这三点。

得亏了它,我才把潜藏那么深的Bug挖出来

参与评论