欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:大數(shù)據(jù)Flink面試考題

柚子快報(bào)激活碼778899分享:大數(shù)據(jù)Flink面試考題

http://yzkb.51969.com/

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

由于文件比較多,這里只是將部分目錄截圖出來,全套包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、大綱路線、講解視頻,并且后續(xù)會(huì)持續(xù)更新

需要這份系統(tǒng)化資料的朋友,可以戳這里獲取

8)CustomPartitionerWrapper 用戶自定義分區(qū)器。需要用戶自己實(shí)現(xiàn)Partitioner接口,來定義自己的分區(qū)邏輯

4 Flink 的并行度有了解嗎?Flink 中設(shè)置并行度需要注意什么?

Flink 程序由多個(gè)任務(wù)(Source、Transformation、Sink)組成。任務(wù)被分成多個(gè)并行實(shí)例 來執(zhí)行,每個(gè)并行實(shí)例處理任務(wù)的輸入數(shù)據(jù)的子集。任務(wù)的并行實(shí)例的數(shù)量稱之為并行度。 Flink 中人物的并行度可以從多個(gè)不同層面設(shè)置: 操作算子層面(Operator Level)、 執(zhí)行環(huán)境層面 (Execution Environment Level)、 客戶端層面(Client Level)、 系統(tǒng)層面(System Level)。 Flink 可以設(shè)置好幾個(gè)level的parallelism, 其中包括 Operator Level、 Execution Environment Level、 Client Level、 System Level 在 flink-conf.yaml 中通過 parallelism.default 配置項(xiàng)給所有 execution environments 指定系統(tǒng)級(jí)的默認(rèn) parallelism;在 ExecutionEnvironment 里頭可以 通過 setParallelism 來給 operators、data sources、data sinks 設(shè)置默認(rèn)的 parallelism;如 果 operators 、 data sources 、 data sinks 自 己 有 設(shè) 置 parallelism 則 會(huì) 覆 蓋 ExecutionEnvironment 設(shè)置的 parallelism。 需要注意的優(yōu)先級(jí):算子層面>環(huán)境層面>客戶端層面>系統(tǒng)層面。

5 Flink 支持哪幾種重啟策略?分別如何配置? 重啟策略種類:

固定延遲重啟策略(Fixed Delay Restart Strategy) 故障率重啟策略(Failure Rate Restart Strategy) 無重啟策略(No Restart Strategy) Fallback 重啟策略(Fallback Restart Strategy)

6 Flink 的分布式緩存有什么作用?如何使用?

Flink 提供了一個(gè)分布式緩存,類似于 hadoop,可以使用戶在并行函數(shù)中很方便的讀取本地 文件,并把它放在 taskmanager 節(jié)點(diǎn)中,防止 task 重復(fù)拉取。 此緩存的工作機(jī)制如下:程序注冊(cè)一個(gè)文件或者目錄(本地或者遠(yuǎn)程文件系統(tǒng),例如 hdfs 或 者 s3),通過 ExecutionEnvironment 注冊(cè)緩存文件并為它起一個(gè)名稱。 當(dāng)程序執(zhí)行,F(xiàn)link 自動(dòng)將文件或者目錄復(fù)制到所有 taskmanager 節(jié)點(diǎn)的本地文件系統(tǒng),僅 會(huì)執(zhí)行一次。用戶可以通過這個(gè)指定的名稱查找文件或者目錄,然后從 taskmanager 節(jié)點(diǎn)的本地 文件系統(tǒng)訪問它。

7 Flink 中的廣播變量,使用廣播變量需要注意什么事項(xiàng)?

在 Flink 中,同一個(gè)算子可能存在若干個(gè)不同的并行實(shí)例,計(jì)算過程可能不在同一個(gè) Slot 中進(jìn)行,不同算子之間更是如此,因此不同算子的計(jì)算數(shù)據(jù)之間不能像 Java 數(shù)組之間一樣互相 訪問,而廣播變量 Broadcast 便是解決這種情況的。我們可以把廣播變量理解為是一個(gè)公共的共 享變量,我們可以把一個(gè) dataset 數(shù)據(jù)集廣播出去,然后不同的 task 在節(jié)點(diǎn)上都能夠獲取到, 這個(gè)數(shù)據(jù)在每個(gè)節(jié)點(diǎn)上只會(huì)存在一份。

8.Flink 中對(duì)窗口的支持包括哪幾種?說說他們的使用場景

Tumbling Time Window 假如我們需要統(tǒng)計(jì)每一分鐘中用戶購買的商品的總數(shù),需要將用戶的行為事件按每一分鐘進(jìn) 行切分,這種切分被成為翻滾時(shí)間窗口(Tumbling Time Window)。翻滾窗口能將數(shù)據(jù)流切分成 不重疊的窗口,每一個(gè)事件只能屬于一個(gè)窗口。Sliding Time Window 我們可以每 30 秒計(jì)算一次最近一分鐘用戶購買的商品總數(shù)。這種窗口我們稱為滑動(dòng)時(shí)間窗 口(Sliding Time Window)。在滑窗中,一個(gè)元素可以對(duì)應(yīng)多個(gè)窗口。Tumbling Count Window 當(dāng)我們想要每 100 個(gè)用戶購買行為事件統(tǒng)計(jì)購買總數(shù),那么每當(dāng)窗口中填滿 100 個(gè)元素了, 就會(huì)對(duì)窗口進(jìn)行計(jì)算,這種窗口我們稱之為翻滾計(jì)數(shù)窗口(Tumbling Count Window),上圖所 示窗口大小為 3 個(gè)。Session Window 在這種用戶交互事件流中,我們首先想到的是將事件聚合到會(huì)話窗口中(一段用戶持續(xù)活躍 的周期),由非活躍的間隙分隔開。如上圖所示,就是需要計(jì)算每個(gè)用戶在活躍期間總共購買的 商品數(shù)量,如果用戶 30 秒沒有活動(dòng)則視為會(huì)話斷開(假設(shè) raw data stream 是單個(gè)用戶的購買 行為流)。一般而言,window 是在無限的流上定義了一個(gè)有限的元素集合。這個(gè)集合可以是基 于時(shí)間的,元素個(gè)數(shù)的,時(shí)間和個(gè)數(shù)結(jié)合的,會(huì)話間隙的,或者是自定義的。Flink 的 DataStream API 提供了簡潔的算子來滿足常用的窗口操作,同時(shí)提供了通用的窗口機(jī)制來允許用戶自己定義 窗口分配邏輯。

9 請(qǐng)簡單描述一下Flink On Yarn模式

1.Client上傳jar包和配置文件到HDFS集群上 2.Client向Yarn ResourceManager提交任務(wù)并申請(qǐng)資源 3.ResourceManager分配Container資源并啟動(dòng)ApplicationMaster,然后AppMaster加載Flink的Jar包和配置構(gòu)建環(huán)境,啟動(dòng)JobManager JobManager和ApplicationMaster運(yùn)行在同一個(gè)container上。 一旦他們被成功啟動(dòng),AppMaster就知道JobManager的地址(AM它自己所在的機(jī)器)。 它就會(huì)為TaskManager生成一個(gè)新的Flink配置文件(他們就可以連接到JobManager)。 這個(gè)配置文件也被上傳到HDFS上。 此外,AppMaster容器也提供了Flink的web服務(wù)接口。 YARN所分配的所有端口都是臨時(shí)端口,這允許用戶并行執(zhí)行多個(gè)Flink 4.ApplicationMaster向ResourceManager申請(qǐng)工作資源,NodeManager加載Flink的Jar包和配置構(gòu)建環(huán)境并啟動(dòng)TaskManager 5.TaskManager啟動(dòng)后向JobManager發(fā)送心跳包,并等待JobManager向其分配任務(wù)

10. Flink 中的時(shí)間種類有哪些?各自介紹一下?

Flink 中的時(shí)間與現(xiàn)實(shí)世界中的時(shí)間是不一致的,在 flink 中被劃分為事件時(shí)間,攝入時(shí)間, 處理時(shí)間三種。 如果以 EventTime 為基準(zhǔn)來定義時(shí)間窗口將形成 EventTimeWindow,要求消息本身 就 應(yīng) 該 攜 帶 EventTime 如 果 以 IngesingtTime 為 基 準(zhǔn) 來 定 義 時(shí) 間 窗 口 將 形 成 IngestingTimeWindow,以 source 的 systemTime 為準(zhǔn)。 如果以 ProcessingTime 基準(zhǔn)來定義時(shí)間窗口將形成 ProcessingTimeWindow,以 operator 的 systemTime 為準(zhǔn)。

面到這里,面試官已經(jīng)很滿意你對(duì)Flink的掌握,那么更近一步讓面試官折服:

11.WaterMark 是什么?是用來解決什么問題?如何生成水 ?。克〉脑硎鞘裁??

Watermark 是 Apache Flink 為了處理 EventTime 窗口計(jì)算提出的一種機(jī)制,本質(zhì)上也是一種 時(shí)間戳。watermark 是用于處理亂序事件的,處理亂序事件通常用 watermark 機(jī)制結(jié)合 window 來實(shí)現(xiàn)。

12 Flink 的容錯(cuò)機(jī)制

Flink 基于分布式快照與可部分重發(fā)的數(shù)據(jù)源實(shí)現(xiàn)了容錯(cuò)。

用戶可自定義對(duì)整個(gè) Job 進(jìn)行快 照的時(shí)間間隔,當(dāng)任務(wù)失敗時(shí),F(xiàn)link 會(huì)將整個(gè) Job 恢復(fù)到最近一次快照,并從數(shù)據(jù)源重發(fā)快照 之后的數(shù)據(jù)。

13 Flink 在使用 Window 時(shí)出現(xiàn)數(shù)據(jù)傾斜,你有什么解決辦法?

注意:這里 window 產(chǎn)生的數(shù)據(jù)傾斜指的是不同的窗口內(nèi)積攢的數(shù)據(jù)量不同,主要是由源頭 數(shù)據(jù)的產(chǎn)生速度導(dǎo)致的差異。核心思路:1.重新設(shè)計(jì) key 2.在窗口計(jì)算前做預(yù)聚合

14 Flink 任務(wù),delay 極高,請(qǐng)問你有什么調(diào)優(yōu)策略?

flink沒學(xué)過調(diào)優(yōu),被問到了,我們總不能說俺不知道,灑家不會(huì)之類的吧?(?????)?下面展示一種回答

首先要確定問題產(chǎn)生的原因,找到最耗時(shí)的點(diǎn),確定性能瓶頸點(diǎn)。比如任務(wù)頻繁反壓,找到 反壓點(diǎn)。主要通過:資源調(diào)優(yōu)、作業(yè)參數(shù)調(diào)優(yōu)。資源調(diào)優(yōu)即是對(duì)作業(yè)中的 Operator 的并發(fā)數(shù) (parallelism)、CPU(core)、堆內(nèi)存(heap_memory)等參數(shù)進(jìn)行調(diào)優(yōu)。作業(yè)參數(shù)調(diào)優(yōu)包括:并行度的設(shè)置,State 的設(shè)置,checkpoint 的設(shè)置。

15 Flink 的內(nèi)存管理是如何做的

Flink 并不是將大量對(duì)象存在堆上,而是將對(duì)象都序列化到一個(gè)預(yù)分配的內(nèi)存塊 上。此外,F(xiàn)link 大量的使用了堆外內(nèi)存。如果需要處理的數(shù)據(jù)超出了內(nèi)存限制, 則會(huì)將部分?jǐn)?shù)據(jù)存儲(chǔ)到硬盤上。Flink 為了直接操作二進(jìn)制數(shù)據(jù)實(shí)現(xiàn)了自己的序 列化框架。

16 Flink 是如何支持批流一體的

這道題問的比較開闊,如果知道 Flink 底層原理,可以詳細(xì)說說,如果不是很了 解,就直接簡單一句話:Flink 的開發(fā)者認(rèn)為批處理是流處理的一種特殊情況。 批處理是有限的流處理。Flink 使用一個(gè)引擎支持了 DataSet API 和 DataStream API。

17 Flink 中的狀態(tài)存儲(chǔ)

Flink 在做計(jì)算的過程中經(jīng)常需要存儲(chǔ)中間狀態(tài),來避免數(shù)據(jù)丟失和狀態(tài)恢復(fù)。 選擇的狀態(tài)存儲(chǔ)策略不同,會(huì)影響狀態(tài)持久化如何和 checkpoint 交互。Flink 提 供了三種狀態(tài)存儲(chǔ)方式:MemoryStateBackend、FsStateBackend、 RocksDBStateBackend。

18. Flink 是如何保證 Exactly-once 語義的

Flink 通過實(shí)現(xiàn)兩階段提交和狀態(tài)保存來實(shí)現(xiàn)端到端的一致性語義。分為以下幾 個(gè)步驟: 開始事務(wù)(beginTransaction)創(chuàng)建一個(gè)臨時(shí)文件夾,來寫把數(shù)據(jù)寫入到這個(gè)文件 夾里面 預(yù)提交(preCommit)將內(nèi)存中緩存的數(shù)據(jù)寫入文件并關(guān)閉 正式提交(commit)將之前寫完的臨時(shí)文件放入目標(biāo)目錄下。這代表著最終的 數(shù)據(jù)會(huì)有一些延遲 丟棄(abort)丟棄臨時(shí)文件 若失敗發(fā)生在預(yù)提交成功后,正式提交前??梢愿鶕?jù)狀態(tài)來提交預(yù)提交的數(shù)據(jù), 也可刪除預(yù)提交的數(shù)據(jù)。

19. Flink 是如何處理反壓的

Flink 內(nèi)部是基于 producer-consumer 模型來進(jìn)行消息傳遞的,F(xiàn)link 的反壓設(shè)計(jì) 也是基于這個(gè)模型。Flink 使用了高效有界的分布式阻塞隊(duì)列,就像 Java 通用 的阻塞隊(duì)列(BlockingQueue)一樣。下游消費(fèi)者消費(fèi)變慢,上游就會(huì)受到阻塞。

雖遲但到,面試總不能少了代碼題:

使用JAVA或 Scala語言編程實(shí)現(xiàn)fink的 Word Count單詞統(tǒng)計(jì)。

非常經(jīng)典的wordcount題,類似的用scala,spark,MapReduce手寫wc你能寫出來嗎?

新建文件為 words. txt,文件路徑在/ export/ server/data下面,內(nèi)容如下 Spark Flink flume hadoop Flink spark flume hadoop

以下使用Flink 計(jì)算引擎實(shí)現(xiàn)流式數(shù)據(jù)處理:從Socket接收數(shù)據(jù),實(shí)時(shí)進(jìn)行詞頻統(tǒng)計(jì)WordCount

Java版:

// 1.準(zhǔn)備環(huán)境-env

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

// 2.準(zhǔn)備數(shù)據(jù)-source

// DataStreamSource inputDataStream = env.socketTextStream("node1.itcast.cn", 9999);

DataStreamSource inputDataStream = env.readTextFile("D:\\0615\\bigdata-flink\\datas\\wordcount.data");

// 3.處理數(shù)據(jù)-transformation

// TODO: 流計(jì)算詞頻統(tǒng)計(jì)WordCount與處理思路基本一致

SingleOutputStreamOperator> resultDataStream = inputDataStream

// 分割單詞

.flatMap(new FlatMapFunction() {

@Override

public void flatMap(String line, Collector out) throws Exception {

for (String word : line.trim().split("\\s+")) {

out.collect(word);

}

}

})

// 轉(zhuǎn)換二元組

.map(new MapFunction>() {

@Override

public Tuple2 map(String word) throws Exception {

return new Tuple2<>(word, 1);

}

})

// 分組聚合

.keyBy(0).sum(1);

// 4.輸出結(jié)果-sink

resultDataStream.print();

// 5.觸發(fā)執(zhí)行-execute

env.execute(_02StreamWordCount.class.getSimpleName());

思考一下Scala版,Python版該怎么寫??

如何從Kafka中消費(fèi)數(shù)據(jù)并過濾出狀態(tài)為success的數(shù)據(jù)再寫入到Kafka

{“user_id”: “1”, “page_id”:“1”, “status”: “success”}

{“user_id”: “1”, “page_id”:“1”, “status”: “success”}

{“user_id”: “1”, “page_id”:“1”, “status”: “success”}

{“user_id”: “1”, “page_id”:“1”, “status”: “success”}

{“user_id”: “1”, “page_id”:“1”, “status”: “fail”}

官方文檔:

https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/connectors/kafka.html

代碼實(shí)現(xiàn):

//1.準(zhǔn)備環(huán)境 流執(zhí)行環(huán)境和流表

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);

//2.執(zhí)行SQL,創(chuàng)建 input\_kafka 表

TableResult inputTable = tEnv.executeSql(

"CREATE TABLE input\_kafka (\n" +

" `user\_id` BIGINT,\n" +

" `page\_id` BIGINT,\n" +

" `status` STRING\n" +

") WITH (\n" +

" 'connector' = 'kafka',\n" +

" 'topic' = 'input\_kafka',\n" +

" 'properties.bootstrap.servers' = 'node1:9092',\n" +

" 'properties.group.id' = 'testGroup',\n" +

" 'scan.startup.mode' = 'latest-offset',\n" +

" 'format' = 'json'\n" +

")"

);

// 創(chuàng)建 output\_kafka

TableResult outputTable = tEnv.executeSql(

"CREATE TABLE output\_kafka (\n" +

" `user\_id` BIGINT,\n" +

" `page\_id` BIGINT,\n" +

" `status` STRING\n" +

") WITH (\n" +

" 'connector' = 'kafka',\n" +

" 'topic' = 'output\_kafka',\n" +

" 'properties.bootstrap.servers' = 'node1:9092',\n" +

" 'format' = 'json',\n" +

" 'sink.partitioner' = 'round-robin'\n" +

")"

);

// 根據(jù) status 是否為 success 條件篩選出來值

String sql = "select " +

"user\_id," +

"page\_id," +

"status " +

"from input\_kafka " +

"where status = 'success'";

Table ResultTable = tEnv.sqlQuery(sql);

//3.toRetractStream

DataStream> resultDS = tEnv.toRetractStream(ResultTable, Row.class);

//4.打印輸出

resultDS.print();

//5.執(zhí)行sql 將篩選出來success的數(shù)據(jù)表插入到 output\_kafka

tEnv.executeSql("insert into output\_kafka select \* from "+ResultTable);

//6.excute

env.execute();

再來一題,小試牛刀:

使用java或 scala語言編程實(shí)現(xiàn)消費(fèi) kafka中的數(shù)據(jù)并在數(shù)據(jù)處理階段過濾掉 country Code不為cN的內(nèi)容并打印輸出 假設(shè):集群主機(jī) hostname為 node Kafka的 topic為data Kafka的消費(fèi)組為 default Group 示例數(shù)據(jù) {dt";“2020-08-05 10: 11: 09”,“country Code”: “CN”,“data”: [{“type” s1,score":0.8),“type”: 52,score": 0. 3}}} {“dt”:“202008-05 10: 13: 12”,“country Code”: KW",“data”: [{“type”: “s2”,“score”: 0. 41.“type”: “s1”,“score”: 0.3}}} {“dt”:“202008-05 10: 12: 15”, “country Code”: “US”, “data” [{“type”: “s4”,“score”: 0.3).“type”: 52","score: 0.5}}}

文末答案整理:

A D A D D ABCD BCD AB BC ABCD F F F T T

總結(jié)

以上便是大數(shù)據(jù)Flink面試考題——Flink高頻考點(diǎn),萬字超全整理,

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

由于文件比較多,這里只是將部分目錄截圖出來,全套包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、大綱路線、講解視頻,并且后續(xù)會(huì)持續(xù)更新

需要這份系統(tǒng)化資料的朋友,可以戳這里獲取

萬字超全整理,

[外鏈圖片轉(zhuǎn)存中…(img-hSmQk8HD-1715027380116)] [外鏈圖片轉(zhuǎn)存中…(img-RyQ59BtQ-1715027380117)] [外鏈圖片轉(zhuǎn)存中…(img-AEXa6yLZ-1715027380117)]

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

由于文件比較多,這里只是將部分目錄截圖出來,全套包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、大綱路線、講解視頻,并且后續(xù)會(huì)持續(xù)更新

需要這份系統(tǒng)化資料的朋友,可以戳這里獲取

柚子快報(bào)激活碼778899分享:大數(shù)據(jù)Flink面試考題

http://yzkb.51969.com/

推薦閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19101615.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄