大資料面試題整理(一) Flume

2021-10-13 07:29:21 字數 4834 閱讀 1852

1、flume了解嗎。簡單介紹一下

flume是乙個高可用的,高可靠的,分布式的海量日誌採集、聚合和傳輸的系統,

agent是flume流的基礎部分,agent是乙個jvm程序,agent的三大組成部分:source、channel、sink。傳輸資料的基本單元是event。

優勢:flume可以將應用產生的資料儲存到任何集中儲存器中,比如hdfs,hbase。

當收集資料的速度超過將寫入資料的時候,也就是當收集資訊遇到峰值時,這時候收集的資訊非常大,甚至超過了系統的寫入資料能力,這時候,flume會在資料生產者和資料收容器間做出調整,保證其能夠在兩者之間提供平穩的資料。

flume的管道是基於事務,保證了資料在傳送和接收時的一致性。

flume是可靠的,容錯性高的,可公升級的,易管理的,並且可定製的。

2. 知道 flume 的 channel 是啥嗎

channel 被設計為 event 中轉臨時緩衝區,儲存 source 收集並且沒有被sink 讀取的 event,為平衡 source

收集和 sink 讀取的速度,可視為 flume內部的訊息佇列。 channel 執行緒安全並且具有事務性,支援 source 寫失敗寫,和sink 讀失敗重複讀的操作。常見的型別包括 memory channel,file channel, kafka channel。

3. 介紹一下 memory channel(記憶體中的佇列)

讀寫速度快,但是儲存資料量小,flume 程序掛掉、伺服器停機或者重啟都會導致資料丟失。資源充足、不關心資料丟失的場景下可以用。

4. 說說 file channel

將 event 寫入磁碟檔案,與 memory channel 相比儲存容量大,無資料丟失風險。file channel

資料儲存路徑可以配置多磁碟檔案路徑,通過磁碟並行寫入提高 file channel 效能。flume 將 event 順序寫入到 file

channel 檔案的末尾。可以在配置檔案中通過設定 maxfilesize

引數配置資料檔案大小,當被寫入的檔案大小達到上限的時候,flume 會重新建立新的檔案儲存寫入 event。當乙個已經關閉的唯讀資料檔案的

event 被讀取完成,並且 sink 已經提交讀取完成的事務,則 flume 把儲存該資料的檔案刪除。

5. 說說 kafka channel

memory channel 有很大的丟資料風險,而且容量一般,file channel

雖然能快取更多的訊息,但如果快取下來的訊息還沒寫入 sink,此時 agent 出現故障則 file channel

中的訊息一樣不能被繼續使用,直到該 agent 恢復。而 kafka channel 容量大,容錯能力強。 有了 kafka

channel 可以在日誌收集層只配置 source 元件和 kafka 元件,不需要再配置 sink

元件,減少了日誌收集層啟動的程序數,有效降低伺服器記憶體、磁碟等資源的使用率。而日誌匯聚層,可以只配置 kafka channel

和sink,不需要再配置 source。

kafka.consumer.auto.offset.reset(配置kafka的consumer的策略),當 kafka 中沒有

consumer 消費的初始偏移量或者當前偏移量在 kafka 中不存在(比如資料已經被刪除)情況下,consumer 選擇從 kafka

拉取訊息的方式,earliest 表示從最早的偏移量開始拉取,latest 表示從最新的偏移量開始拉取,none 表示如果沒有發現該

consumer組之前拉取的偏移量則丟擲異常。

6. 介紹一下 kafka 幾種 sink

hdfs sink: 將 event 寫入 hdfs 檔案儲存,能夠有效長期儲存大量資料。

kafka sink: flume 通過 kafka sink 將 event 寫入到 kafka 中的主題,其他應用通過訂閱主題消費資料。kafka.producer.acks 可以設定 producer 端傳送訊息到 broker

之後不需要等待 broker 返回成功送達的訊號。

(ack機制)

0表示producer 傳送訊息到 broker 之後不需要等待 broker 返回成功送達的訊號,這種方式吞吐量高,但存在丟失資料的風險。

1表示 broker 接收到訊息成功寫入本地 log 檔案後向 producer 返回成功 接收的訊號,不需要等待所有的 follower 全部同步完訊息後再做回應,這種方式在資料丟失風險和吞吐量之間做了平衡。

-1表示 broker 接收到 producer的訊息成功寫入本地log並且等待所有的follower 成功寫入本地 log 後向 producer返回成功接收的訊號,這種方式能夠保證訊息不丟失,但是效能最差(層層遞進)。

7. 說說 flume 的***

source 將 event 寫入到 channel 之前可以使用***對 event 進行各種形式的處理,source 和 channel

之間可以有多個***,不同***使用不同的規則處理 event,包括時間、主機、uuid、正規表示式等多種形式的***。

8. 介紹一下什麼是選擇器

source 傳送的 event 通過 channel 選擇器來選擇以哪種方式寫入到 channel中,flume 提供三種型別 channel 選擇器,分別是複製、復用和自定義選擇器。

複製選擇器(replicating channel selector (default)): 乙個 source 以複製的方式將乙個 event 同時寫入到多個channel 中,不同的 sink 可以從不同的 channel 中獲取相同的

event,比如乙份日誌資料同時寫 kafka 和 hdfs,乙個 event 同時寫入兩個channel,然後不同型別的 sink

傳送到不同的外部儲存。

復用選擇器(multiplexing channel selector): 需要和***配合使用,根據 event 的頭資訊中不同鍵值資料來判斷 event 應該寫入哪個 channel 中。

9. 了解 flume 的負載均衡和故障轉移嗎

目的是為了提高整個系統的容錯能力和穩定性。簡單配置就可以輕鬆實現,首先需要設定 sink 組,同乙個 sink 組內有多個子sink,不同 sink 之間可以配置成負載均衡或者故障轉移。

10. flume 採集資料會丟失嗎? (防止資料丟失的機制)

這個要看採用的flume channel的型別, memory channel 資料儲存在記憶體中,flume程序掛掉、伺服器停機或者重啟都會導致資料丟失; file channel,channel 儲存可以儲存在 file 中,資料傳輸自身有事務; kafka channel,這裡涉及到問題:資料拉倒kafka中資料是否會丟失,怎麼解決?kafka中可以設定ack引數,參考第6題(ack機制)。

11. filechannel 優化

通過配置 datadirs 指向多個路徑,每個路徑對應不同的硬碟,增大 flume 吞吐量。

checkpointdir 和backupcheckpointdir 也盡量配置在不同硬碟對應的目錄中,保證checkpoint 壞掉後,可以快速使用 backupcheckpointdir 恢復資料。

12. hdfs sink 小檔案處理

(1) hdfs 存入大量小檔案,有什麼影響?

元資料層面:每個小檔案都有乙份元資料,其中包括檔案路徑,檔名,所有者,所屬組,許可權,建立時間等,這些資訊都儲存在 namenode

記憶體中。所以小檔案過多,會占用namenode 伺服器大量記憶體,影響 namenode 效能和使用壽命 計算層面:預設情況下 mr

會對每個小檔案啟用乙個 map 任務計算,非常影響計算效能。同時也影響磁碟定址時間。

(2) hdfs 小檔案處理(引數了解下,不用記憶具體命令) 官方預設的這三個引數配置寫入hdfs後會產生小檔案,hdfs.rollinterval、hdfs.rollsize、hdfs.rollcount 基於以上:

hdfs.rollinterval=3600 , //滾動生成正式檔案時間(1小時)

hdfs.rollsize=134217728 //滾動生成正式檔案大小(128m)

hdfs.rollcount =0 , // hdfs.roundvalue=3600,

hdfs.roundunit= second 幾個引數綜合作用,

效果如下:

(1) tmp 檔案在達到 128m 時會滾動生成正式檔案;

(2) tmp 檔案建立超 3600 秒時會滾動生成正式檔案; 舉例:在 2018-01-01 05:23 的時侯 sink 接收到資料,那會產生如下 tmp 檔案: /atguigu/20180101/atguigu.201801010520.tmp即使檔案內容沒有達到 128m,也會在 06:23 時滾動生成正式檔案。

僅代表個人觀點,如有錯誤,請指正

大資料面試題 七 Flume面試題

無意中發現了乙個巨牛的人工智慧教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看 一樣!覺得太牛了,所以分享給大家。點這裡可以跳轉到教程。大資料面試寶典目錄,1.flume 使用場景 2.flume 丟包問題 3.flume 與kafka 的選取 1.flume 使用場景...

大資料面試題整理

2 在1的基礎上,求出現次數最多的k個ip top k問題 3 給定a b兩個大檔案,每行代表乙個訪問ip,求出a b中重複的ip 2.map和flatmap flatmap會做乙個扁平化操作 3.map和foreache的區別 有無返回值 4.reducebykey和groupbykey redu...

大資料常見面試題整理

今年參加了校園秋招,主要針對招聘大資料研發相關崗位,最後也如願以償找到了大資料軟體開發的工作,在此期間整理了一下比較常見的相關面試題。1.mapreduce實際處理過程 input 2.列出yarn中的關鍵元件,並簡述各關鍵元件內部的互動原理。3.mapreduce的原理理解。4 reduce中的o...