Hadoop分布式文件体系HDFS:HDFS是一种分布式文件体系,它具有很高的容错性,合适安排在便宜的机械集群上。HDFS能供给高吞吐量的数据拜访,异常合适在大年夜范围数据集上应用。它可以用于存储数据源,也可以存储计算的最终结不雅。
Apache Samza
提到Apache Samza,就不得不提到当缁ゎ风行的大年夜数据消息中心件:Apache Kafka。Apache Kafka是一个分布式的消息中心件体系,具有高吞吐、低延时等特点,并且自带了容错机制。以下是Kafka的关键概念:
Broker:因为Kafka是分布式消息中心件,所以须要多个节点来存储数据。Broker即为Kafka集群中的单个节点。
Topic:用于存储写入Kafka的数据流。如同它的字面含义——主题,不合主题的数据流最好写入不合的topic,便利后续的处理。
不论是哪种处理方法,其及时性都要远远好于批处理体系。是以,流处理体系异常合适应用于对及时性请求较高的场景,比如日记分析,设备监控、网站及时流量变更等等。因为很多情况下,我们想要尽快看到计算结不雅,所以近些年流处理体系的应用越来越广泛。下面我们来懂得两种流处理体系。
Producer:消息的临盆者,用来将消息写入到Kafka集群。
Consumer:消息的花费者,用来攫取Kafka中的消息并进行处理。
支撑三个层次的组件分别为:
- Kafka
- YARN
- Samza API
Stream:Stream是一种赓续被接入Storm中的无界的数据序列。
流处理体系与批处理体系所处理的数据不合之处在于,流处理体系并纰谬已经存在的数据集进行操作,而是对大年夜外部体系接入的的数据进行处理。流处理体系可以分为两种:
也就是说,Samza应用Kafka供给了数据流,应用YARN进行资本治理,自身仅供给了操作数据流的API。Samza对Kafka和YARN的依附袈溱很多方面上与MapReduce对HDFS和YARN的依附类似。
如不雅已经拥有Hadoop集群和Kafka集群情况,那么应用Samza作为流处理体系无疑是一个异常好的选择。因为可以很便利的将处理过的数据再次写入Kafka,Samza尤其合适不合团队之间合作开辟,处理不合阶段的多个数据流。
五、混淆处理体系:批处理和流处理
一些处理框架既可以进行批处理,也可以进行流处理。这些框架可以应用雷同或相干的API处理汗青和及时数据。当前主流的混淆处理框架重要为Spark和Flink。
固然专注于一种处理方法可能异常合适特定场景,然则混淆框架为数据处理供给了通用的解决筹划。
如不雅说如本大年夜数据处理框架处于一个群星闪烁的年代,那Spark无疑就是所有星星中最闪亮的那一颗。Spark由加州大年夜学伯渴攀利分校AMP实验室开辟,最初的设计受到了MapReduce思惟的启发,但不合于MapReduce的是,Spark经由过程内存计算模型和履行优化大年夜幅进步了对数据的处理才能(在不合情况下,速度可以达到MR的10-100倍,甚至更高)。比拟于MapReduce,Spark具有如下长处:
供给了内存计算模型RDD(Resilient Distributed Dataset,弹性分布式数据集),将数据读入内存中生成一个RDD,再对RDD进行计算。并且每次计算结不雅可以缓存在内存中,削减了磁盘IO。是以很实用于迭代计算。
不合于MapReduce的MR模型,Spark采取了DAG编程模型,将不合步骤的操作串联成一个有向无环图,可以有效削减义务间的数据传递,进步了机能。
供给了丰富的编程模型,可以轻松实现过滤、连接、聚合等操作,代码量比拟MapReduce少到令人发指,是以可以进步开辟人员的临盆力。
支撑Java、Scala、Python和R四种编程说话,为不合说话的应用者降低了进修成本。
而Spark的流处理才能,则是由Spark Streaming模块供给的。Spark在设计之初与MapReduce一样是用于批处理体系,为了适应于流处理模式,Spark提出了微批次(Micro-Batch)的概念,即把一小段时光内的接入数据作为一个微批次来处理。如许做的长处是在设计Spark Streaming时可以很大年夜程度上重用批处理模块(Spark Core)的代码,开辟人员也不必进修两套编程模型。但缺点就是,与Storm等原生的流处理体系比拟,Spark Streaming的延时会相对高一些。
除了最初开辟用于批处理的Spark Core和用于流处理的Spark Streaming,Spark还供给了其他编程模型用于支撑图计算(GraphX)、交互式萌芽(Spark SQL)和机械进修(MLlib)。
但Spark也不是没出缺点。在批处理范畴,因为内存是比硬盘更昂贵的资本,所以Spark集群的成本比MapReduce集群更高。而在流处理范畴,微批次的架构使得它的延时要比Storm等流处理体系略高。不过瑕不掩瑜,Spark依然是如今最炙手可热的数据处理框架。
Apache Flink
有趣的是,同样作为混淆处理框架,Flink的思惟与Spark是完全相反的:Spark把流拆分成若干个小批次来处理,而Flink把批处理义务算作有界的流来处理。其本质原因是,Spark最初是被设计用来进行批处理的,而Flink最初是被设计用来进行流处理的。这种流处理优先的方法叫做Kappa架构,与之相对的应用批处理优先的架构叫做Lambda架构。Kappa架构会应用处理流的方法处理一切,以词攀来简化编程模型。这一切是在比来流处理引擎逐渐成熟起来才有可能实现的。
Flink的流处理模型将逐项输入的数据作为真实的流处理。Flink供给了DataStream API用于处理无尽的数据流。Flink的根本组件包含:
Stream:Stream是流过体系的弗成变的、无界的数据集
Operator:Operator用来操作数据流以产生新的数据流(stream)
Source:Source是数据流(stream)进入体系的人口
Sink:Sink是数据流(stream)流出Flink体系后的地位。
它可能是数据库或到其他体系的连接器
Flink的流处理思惟与Storm类似,以source接入数据,经由过程不合的operator进行transformation,最后输出到sink。
Flink的供给了DataSet API用于批处理。Flink的批处理在很大年夜程度上可以看作是流处理的一种扩大,它攫取在持久存储体系上的数据,并把去除的数据集当成一个有界线的流来处理。
与Spark雷同,Flink也供给了较为完全的数据处理方法。除了膳绫擎介绍的流处理(DataStream API)和批处理(DataSet API)之外,Flink还供给潦攀类SQL萌芽(Table API)、图计算(Gelly)和机械进修库(Flink ML)。而令人惊奇的是,在很多机能测试中,Flink甚至略优于Spark。
推荐阅读
Kafka拓扑构造Kafka的设计可以赞助用户解决很多架构汕9依υ?题,其具备的高机能、低耦合、高靠得住性、数据不损掉等特点,结合实际的应用体系应用处景,可以或许异常知足用户的需求。>>>详细阅读
本文标题:大数据处理框架的类型、比较和选择
地址:http://www.17bianji.com/lsqh/37199.html
1/2 1