国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!

這篇具有很好參考價(jià)值的文章主要介紹了Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

首先,我們先看下圖,這是一張生產(chǎn)消息到kafka,從kafka消費(fèi)消息的結(jié)構(gòu)圖。

Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!,程序員,flink,spark,kafka

當(dāng)然, 這張圖很簡(jiǎn)單,拿這張圖的目的是從中可以得到的跟本節(jié)文章有關(guān)的消息,有以下兩個(gè):

1,kafka中的消息不是kafka主動(dòng)去拉去的,而必須有生產(chǎn)者往kafka寫消息。

2,kafka是不會(huì)主動(dòng)往消費(fèi)者發(fā)布消息的,而必須有消費(fèi)者主動(dòng)從kafka拉取消息。

spark Streaming結(jié)合kafka

Spark Streaming現(xiàn)在在企業(yè)中流處理也是用的比較廣泛,但是大家都知道其不是真正的實(shí)時(shí)處理,而是微批處理。

在spark 1.3以前,SPark Streaming與kafka的結(jié)合是基于Receiver方式,顧名思義,我們要啟動(dòng)1+個(gè)Receiver去從kafka里面拉去數(shù)據(jù),拉去的數(shù)據(jù)會(huì)每隔200ms生成一個(gè)block,然后在job生成的時(shí)候,取出該job處理時(shí)間范圍內(nèi)所有的block,生成blockrdd,然后進(jìn)入Spark core處理。

自Spark1.3以后,增加了direct Stream API,這種呢,主要特點(diǎn)是去掉了Receiver,在生成job,去取rdd的時(shí)候,計(jì)算每個(gè)partition要取數(shù)據(jù)的offset范圍,然后生成一個(gè)kafkardd,該rdd特點(diǎn)是與kafka的分區(qū)是一一對(duì)應(yīng)的。

有上面的特點(diǎn)可以看出,Spark Streaming是要生成rdd,然后進(jìn)行處理的,rdd數(shù)據(jù)集我們可以理解為靜態(tài)的,然每個(gè)批次,都會(huì)生成一個(gè)rdd,該過程就體現(xiàn)了批處理的特性,由于數(shù)據(jù)集時(shí)間段小,數(shù)據(jù)小,所以又稱微批處理,那么就說明不是真正的實(shí)時(shí)處理。

還有一點(diǎn),spark Streaming與kafka的結(jié)合是不會(huì)發(fā)現(xiàn)kafka動(dòng)態(tài)增加的topic或者partition。

Spark的詳細(xì)教程,請(qǐng)關(guān)注浪尖公眾號(hào),查看歷史推文。

Spark Streaming與kafka結(jié)合源碼講解,請(qǐng)加入知識(shí)星球,獲取。

flink結(jié)合kafka

大家都知道flink是真正的實(shí)時(shí)處理,他是基于事件觸發(fā)的機(jī)制進(jìn)行處理,而不是像spark Streaming每隔若干時(shí)間段,生成微批數(shù)據(jù),然后進(jìn)行處理。那么這個(gè)時(shí)候就有了個(gè)疑問,在前面kafka小節(jié)中,我們說到了kafka是不會(huì)主動(dòng)往消費(fèi)者里面吐數(shù)據(jù)的,需要消費(fèi)者主動(dòng)去拉去數(shù)據(jù)來處理。那么flink是如何做到基于事件實(shí)時(shí)處理kafka的數(shù)據(jù)呢?在這里浪尖帶著大家看一下源碼,flink1.5.0為例。

1,flink與kafka結(jié)合的demo。

val env = StreamExecutionEnvironment.getExecutionEnvironment

env.getConfig.disableSysoutLogging

env.getConfig.setRestartStrategy(RestartStrategies.fixedDelayRestart(4, 10000))

// create a checkpoint every 5 seconds

env.enableCheckpointing(5000)

// make parameters available in the web interface

env.getConfig.setGlobalJobParameters(params)

// create a Kafka streaming source consumer for Kafka 0.10.x

val kafkaConsumer = new FlinkKafkaConsumer010(

params.getRequired(“input-topic”),

new SimpleStringSchema,

params.getProperties)

val messageStream = env

.addSource(kafkaConsumer)

.map(in => prefix + in)

// create a Kafka producer for Kafka 0.10.x

val kafkaProducer = new FlinkKafkaProducer010(

params.getRequired(“output-topic”),

new SimpleStringSchema,

params.getProperties)

// write data into Kafka

messageStream.addSink(kafkaProducer)

env.execute(“Kafka 0.10 Example”)

從上面的demo可以看出,數(shù)據(jù)源的入口就是FlinkKafkaConsumer010,當(dāng)然這里面只是簡(jiǎn)單的構(gòu)建了一個(gè)對(duì)象,并進(jìn)行了一些配置的初始化,真正source的啟動(dòng)是在其run方法中run方法的調(diào)用過程在這里不講解,后面會(huì)出教程講解。

首先看一下類的繼承關(guān)系

public class FlinkKafkaConsumer010 extends FlinkKafkaConsumer09

public class FlinkKafkaConsumer09 extends FlinkKafkaConsumerBase

其中,run方法就在FlinkKafkaConsumerBase里,當(dāng)然其中open方法里面對(duì)kafka相關(guān)內(nèi)容進(jìn)行里初始化。

從輸入到計(jì)算到輸出完整的計(jì)算鏈條的調(diào)用過程,后面浪尖會(huì)出文章介紹。在這里只關(guān)心flink如何從主動(dòng)消費(fèi)數(shù)據(jù),然后變成事件處理機(jī)制的過程。

由于其FlinkKafkaConsumerBase的run比較長(zhǎng),我這里只看重要的部分,首先是會(huì)創(chuàng)建Kafka09Fetcher

this.kafkaFetcher = createFetcher(

sourceContext,

subscribedPartitionsToStartOffsets,

periodicWatermarkAssigner,

punctuatedWatermarkAssigner,

(StreamingRuntimeContext) getRuntimeContext(),

offsetCommitMode,

getRuntimeContext().getMetricGroup().addGroup(KAFKA_CONSUMER_METRICS_GROUP),

useMetrics);

接著下面有段神器,flink嚴(yán)重優(yōu)越于Spark Streaming的,代碼如下:

final AtomicReference discoveryLoopErrorRef = new AtomicReference<>();

this.discoveryLoopThread = new Thread(new Runnable() {

@Override

public void run() {

try {

// --------------------- partition discovery loop ---------------------

List discoveredPartitions;

// throughout the loop, we always eagerly check if we are still running before

// performing the next operation, so that we can escape the loop as soon as possible

while (running) {

if (LOG.isDebugEnabled()) {

LOG.debug(“Consumer subtask {} is trying to discover new partitions …”, getRuntimeContext().getIndexOfThisSubtask());

}

try {

discoveredPartitions = partitionDiscoverer.discoverPartitions();

} catch (AbstractPartitionDiscoverer.WakeupException | AbstractPartitionDiscoverer.ClosedException e) {

// the partition discoverer may have been closed or woken up before or during the discovery;

// this would only happen if the consumer was canceled; simply escape the loop

break;

}

// no need to add the discovered partitions if we were closed during the meantime

if (running && !discoveredPartitions.isEmpty()) {

kafkaFetcher.addDiscoveredPartitions(discoveredPartitions);

}

// do not waste any time sleeping if we’re not running anymore

if (running && discoveryIntervalMillis != 0) {

try {

Thread.sleep(discoveryIntervalMillis);

} catch (InterruptedException iex) {

// may be interrupted if the consumer was canceled midway; simply escape the loop

break;

}

}

}

} catch (Exception e) {

discoveryLoopErrorRef.set(e);

} finally {

// calling cancel will also let the fetcher loop escape

// (if not running, cancel() was already called)

if (running) {

cancel();

}

}

}

}, "Kafka Partition Discovery for " + getRuntimeContext().getTaskNameWithSubtasks());

它定義了一個(gè)線程池對(duì)象,去動(dòng)態(tài)發(fā)現(xiàn)kafka新增的topic(支持正則形式指定消費(fèi)的topic),或者動(dòng)態(tài)發(fā)現(xiàn)kafka新增的分區(qū)。

接著肯定是啟動(dòng)動(dòng)態(tài)發(fā)現(xiàn)分區(qū)或者topic線程,并且啟動(dòng)kafkaFetcher。

discoveryLoopThread.start();

kafkaFetcher.runFetchLoop();

// --------------------------------------------------------------------

自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。

深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年Java開發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!,程序員,flink,spark,kafka

Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!,程序員,flink,spark,kafka

Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!,程序員,flink,spark,kafka

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開發(fā)知識(shí)點(diǎn),真正體系化!

由于文件比較大,這里只是將部分目錄截圖出來,每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且會(huì)持續(xù)更新!

如果你覺得這些內(nèi)容對(duì)你有幫助,可以掃碼獲取?。。▊渥ava獲取)

Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!,程序員,flink,spark,kafka

最后

Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!,程序員,flink,spark,kafka

Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!,程序員,flink,spark,kafka
《一線大廠Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實(shí)戰(zhàn)項(xiàng)目源碼》點(diǎn)擊傳送門即可獲??!
碼獲?。。。▊渥ava獲取)**

Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!,程序員,flink,spark,kafka

最后

[外鏈圖片轉(zhuǎn)存中…(img-MBKKfufj-1711968643609)]

[外鏈圖片轉(zhuǎn)存中…(img-tuKAnOdP-1711968643611)]
《一線大廠Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實(shí)戰(zhàn)項(xiàng)目源碼》,點(diǎn)擊傳送門即可獲??!文章來源地址http://www.zghlxwxcb.cn/news/detail-854696.html

到了這里,關(guān)于Flink與Spark Streaming在與kafka結(jié)合的區(qū)別!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spark Streaming + Kafka構(gòu)建實(shí)時(shí)數(shù)據(jù)流

    Spark Streaming + Kafka構(gòu)建實(shí)時(shí)數(shù)據(jù)流

    1. 使用Apache Kafka構(gòu)建實(shí)時(shí)數(shù)據(jù)流 參考文檔鏈接:https://cloud.tencent.com/developer/article/1814030 2. 數(shù)據(jù)見UserBehavior.csv 數(shù)據(jù)解釋:本次實(shí)戰(zhàn)用到的數(shù)據(jù)集是CSV文件,里面是一百零四萬條淘寶用戶行為數(shù)據(jù),該數(shù)據(jù)來源是阿里云天池公開數(shù)據(jù)集 根據(jù)這一csv文檔運(yùn)用Kafka模擬實(shí)時(shí)數(shù)據(jù)流,

    2024年02月12日
    瀏覽(33)
  • 實(shí)時(shí)大數(shù)據(jù)流處理技術(shù):Spark Streaming與Flink的深度對(duì)比

    引言 在當(dāng)前的大數(shù)據(jù)時(shí)代,企業(yè)和組織越來越多地依賴于實(shí)時(shí)數(shù)據(jù)流處理技術(shù)來洞察和響應(yīng)業(yè)務(wù)事件。實(shí)時(shí)數(shù)據(jù)流處理不僅能夠加快數(shù)據(jù)分析的速度,還能提高決策的效率和準(zhǔn)確性。Apache Spark Streaming和Apache Flink是目前兩個(gè)主要的實(shí)時(shí)數(shù)據(jù)流處理框架,它們各自擁有獨(dú)特的特

    2024年03月10日
    瀏覽(26)
  • 推薦系統(tǒng)架構(gòu)設(shè)計(jì)實(shí)踐:Spark Streaming+Kafka構(gòu)建實(shí)時(shí)推薦系統(tǒng)架構(gòu)

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 推薦系統(tǒng)(Recommendation System)一直都是互聯(lián)網(wǎng)領(lǐng)域一個(gè)非?;馃岬脑掝}。其主要目標(biāo)是在用戶多樣化的信息環(huán)境中,通過分析用戶的偏好、消費(fèi)習(xí)慣等數(shù)據(jù),提供個(gè)性化的信息推送、商品推薦、購(gòu)物指導(dǎo)等服務(wù)。如何設(shè)計(jì)一個(gè)推薦系統(tǒng)的架構(gòu)及

    2024年02月08日
    瀏覽(27)
  • 2 Data Streaming Pipelines With Flink and Kafka

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 數(shù)據(jù)流是一個(gè)連續(xù)不斷的、產(chǎn)生、存儲(chǔ)和處理數(shù)據(jù)的過程。傳統(tǒng)上,數(shù)據(jù)流編程都是基于特定平臺(tái)(比如:消息隊(duì)列,數(shù)據(jù)倉庫,事件溯源)的SDK或者API進(jìn)行開發(fā),但隨著云計(jì)算和容器技術(shù)的發(fā)展,越來越多的企業(yè)選擇使用開源工具實(shí)現(xiàn)自己的

    2024年02月08日
    瀏覽(47)
  • 大數(shù)據(jù)流處理與實(shí)時(shí)分析:Spark Streaming和Flink Stream SQL的對(duì)比與選擇

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)

    2024年02月07日
    瀏覽(26)
  • 什么是API網(wǎng)關(guān),解釋API網(wǎng)關(guān)的作用和特點(diǎn)?解釋什么是數(shù)據(jù)流處理,如Apache Flink和Spark Streaming的應(yīng)用?

    API網(wǎng)關(guān)是一種在分布式系統(tǒng)中的組件,用于管理不同系統(tǒng)之間的通信和交互。API網(wǎng)關(guān)的作用是在不同系統(tǒng)之間提供統(tǒng)一的接口和協(xié)議,從而簡(jiǎn)化系統(tǒng)之間的集成和互操作性。 API網(wǎng)關(guān)的特點(diǎn)包括: 路由和分發(fā)請(qǐng)求:API網(wǎng)關(guān)可以根據(jù)請(qǐng)求的URL、方法、參數(shù)等信息,將請(qǐng)求分發(fā)到

    2024年02月11日
    瀏覽(26)
  • Spark+Flink+Kafka環(huán)境配置

    一、準(zhǔn)備工作 1.安裝虛擬機(jī) VMware 安裝 CentOS 7, 選擇mini版,英文,網(wǎng)絡(luò)NAT。 http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso 重啟網(wǎng)絡(luò)服務(wù), 確保自己能夠ping通baidu,如果依舊不行可以直接reboot重啟虛擬機(jī) 查看ip地址 2.?安裝java 環(huán)境 3.安裝scala 4.安裝screen 5

    2024年04月12日
    瀏覽(16)
  • Spark與Flink的區(qū)別

    (1)設(shè)計(jì)理念 1、Spark的技術(shù)理念是使用微批來模擬流的計(jì)算,基于Micro-batch,數(shù)據(jù)流以時(shí)間為單位被切分為一個(gè)個(gè)批次,通過分布式數(shù)據(jù)集RDD進(jìn)行批量處理,是一種偽實(shí)時(shí)。 2、Flink是基于事件驅(qū)動(dòng)的,是面向流的處理框架, Flink基于每個(gè)事件一行一行地流式處理,是真正的流式計(jì)算

    2024年02月10日
    瀏覽(18)
  • Flink 與 Apache Kafka 的完美結(jié)合

    大數(shù)據(jù)時(shí)代,數(shù)據(jù)處理能力成為了企業(yè)競(jìng)爭(zhēng)的核心。隨著數(shù)據(jù)規(guī)模的不斷增長(zhǎng),傳統(tǒng)的數(shù)據(jù)處理技術(shù)已經(jīng)無法滿足企業(yè)的需求。為了更好地處理大規(guī)模數(shù)據(jù),Apache Flink 和 Apache Kafka 等流處理框架和消息隊(duì)列系統(tǒng)發(fā)展迅速。 Apache Flink 是一個(gè)流處理框架,可以實(shí)時(shí)處理大規(guī)模數(shù)

    2024年03月20日
    瀏覽(33)
  • 大數(shù)據(jù)面試題:Spark和Flink的區(qū)別

    面試題來源: 《大數(shù)據(jù)面試題 V4.0》 大數(shù)據(jù)面試題V3.0,523道題,679頁,46w字 可回答:1)Spark Streaming和Flink的區(qū)別 問過的一些公司:杰創(chuàng)智能科技(2022.11),阿里螞蟻(2022.11),阿里云(2022.10)(2019.03),攜程(2022.10),銀聯(lián)(2022.10),順豐(2022.09)(2022.05),貝殼(2022.09),美團(tuán)(2022.09),字節(jié)

    2024年02月08日
    瀏覽(41)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包