Hadoop
-
介紹 MapReduce 的運行過程 ,shuffle 過程
如果在現(xiàn)場,我可以手繪 MapReduce 從 InputFormat 到 OutputFormat 的流程,一邊畫圖一邊說。如果講到環(huán)形緩沖區(qū)那里,是不是有很多調(diào)優(yōu)的方式. combiner 也可以考慮講一下。
-
Hadoop 集群的搭建過程
至少自己集群的配置. 框架的技術(shù)選型是不是都要清楚的明明白白。
Hadoop 優(yōu)化
- HDFS 小文件的影響 . 輸入輸入時的小文件的處理
- Map 階段 和 Reudce 階段的調(diào)優(yōu)
- 數(shù)據(jù)壓縮(LZO \Snappy) 和 存儲優(yōu)化(Orcfile) 關(guān)于壓縮怎么配的,幾種存儲格式有什么區(qū)別是不是都要搞清楚
Hadoop集群HA實現(xiàn)
-
Hadoop 調(diào)度器
FIFO . Capacity Scheduler(容量調(diào)度器)和 Fair Sceduler(公平調(diào)度器)三種需要區(qū)分清楚,還有在實際開發(fā)環(huán)境中,一般不用FIFO哦。
Hadoop 解決數(shù)據(jù)傾斜方法
- 提前在 map 進(jìn)行 combine,減少傳輸?shù)臄?shù)據(jù)量
- 導(dǎo)致數(shù)據(jù)傾斜的 key 加鹽. 提升 Reducer 并行度 ...
Hadoop讀文件和寫文件流程
-
Yarn 的 Job 提交流程
步驟很多,理理清楚然后再由條理的進(jìn)行回答。
Hive
-
Hive 和關(guān)系型數(shù)據(jù)庫比較
數(shù)據(jù)存儲位置. 數(shù)據(jù)更新. 執(zhí)行延遲. 數(shù)據(jù)規(guī)模等方面來比較。
-
Hive 元數(shù)據(jù)管理
hive表中的數(shù)據(jù)是HDFS上的文件,可是hive怎么知道這些文件的內(nèi)容都對應(yīng)哪個字段,對應(yīng)哪個分區(qū)呢?就是hive的元數(shù)據(jù)管理著這一切。通常在hive-site.xml中的元數(shù)據(jù)庫配置成MySQL,替換Derby。
-
有沒有遇到數(shù)據(jù)傾斜的問題(場景. 解決方式)
常規(guī)的數(shù)據(jù)解決方式,結(jié)合業(yè)務(wù),隨便講個三四種不過分吧。
Hive 兩種類型的權(quán)限控制方式
Hive UDF,UDTF,UDAF,窗口函數(shù)(row_number, rank,cube,rollup,lag,lead)
Hive 的調(diào)優(yōu)
- 壓縮存儲優(yōu)化
- 表設(shè)計優(yōu)化
- SQL參數(shù)優(yōu)化
- SQL語句優(yōu)化 分四個方向,大概十幾種優(yōu)化的方式,自己都得做些了解吧
Hive 分區(qū)和分桶的區(qū)別,內(nèi)部表和外部表的區(qū)別,怎么進(jìn)行動態(tài)分區(qū)
Hive 幾種存儲方式的區(qū)別?
ORC:行分塊,列式存儲,壓縮快,存取快,壓縮率最高,RCfile升級版。然后再和其他三種存儲方式比較一下。
Flume
-
Flume 組成,Put 事務(wù),Take 事務(wù)
Source. Channel. Sink ,想想Flume的架構(gòu)。Taildir Source. Memory Channel什么的,各自適合用在什么場景下,有什么區(qū)別。
-
Flume 自定義攔截器
可以在講項目時講,算是一個小亮點,可以自定義ETL 攔截器和區(qū)分類型攔截器等等
-
Flume Channel 選擇器
Replicating Channel Selector (default)和Multiplexing Channel Selector 這兩種Selector的區(qū)別是:Replicating 會 將source過來的events發(fā)往所有channel,而 Multiplexing可以選擇該發(fā)往哪些Channel。
-
Flume 調(diào)優(yōu)
要知道flume-ng agent包括source. channel. sink三個部分,這三部分都運行在JVM上,而JVM運行在linux操作系統(tǒng)之上。因此,對于flume的性能調(diào)優(yōu),就是對這三部分及影響因素調(diào)優(yōu)。
Kafka
Kafka 的架構(gòu)
-
關(guān)于 Kafka 為什么這么快
順序?qū)懭? Memory Mapped Files. 零拷貝(Zero Copy). 批量發(fā)送和數(shù)據(jù)壓縮。
Kafka 和其他消息隊列的區(qū)別
-
Kafka 如何保證消息隊列不丟失?
ACK 機(jī)制 . 設(shè)置分區(qū). 關(guān)閉 unclean leader 選舉等等。
-
Kafka 消息數(shù)據(jù)積壓,Kafka 消費能力不足怎么處理
如果是 Kafka 消費能力不足,則可以考慮增加 Topic 的分區(qū)數(shù),并且同時提升消費 組的消費者數(shù)量,消費者數(shù)=分區(qū)數(shù)。(兩者缺一不可) 如果是下游的數(shù)據(jù)處理不及時:提高每批次拉取的數(shù)量。批次拉取數(shù)據(jù)過少(拉取 數(shù)據(jù)/處理時間<生產(chǎn)速度),使處理的數(shù)據(jù)小于生產(chǎn)的數(shù)據(jù),也會造成數(shù)據(jù)積壓。
Kafka producer consumer怎么實現(xiàn)at most once和exactly once(冪等計算和事務(wù))
-
Kafka 高可用怎么實現(xiàn)的?
副本數(shù)據(jù)同步策略. ISR. OSR. Leader 選舉機(jī)制(它的和Zookeeper的半數(shù)選舉機(jī)制可不同哦)。
-
Kafka 數(shù)據(jù)重復(fù)
冪等性+ack-1+事務(wù) Kafka 數(shù)據(jù)重復(fù),可以再下一級:SparkStreaming. redis 或者 hive 中 dwd 層去重,去重的手段:分組. 按照 id 開窗只取第一個值。
HBase
-
RowKey 怎么設(shè)計的?
三個設(shè)計原則,id+時間戳反轉(zhuǎn) 什么的,結(jié)合你的業(yè)務(wù)場景講講。
描述 HBase 中 scan 和 get 的功能以及實現(xiàn)的異同?
在HBase 中,是允許設(shè)置多個列簇的,但是為什么在實際生產(chǎn)中會設(shè)置很少的列簇呢?
列簇的數(shù)量對flush的影響 2. 列簇的數(shù)量對split的影響 3. 列簇的數(shù)量對compaction的影響 4. 列簇的數(shù)量對HDFS的影響 5. 列簇的數(shù)量對RegionServer內(nèi)存的影響 。根據(jù)實際生產(chǎn)需求,能夠用一個列簇解決的就盡量用一個列簇,當(dāng)兩個列簇的數(shù)量相差懸殊時,可以將其兩個列簇的數(shù)據(jù)拆分為兩個表的單個列簇。
-
HBase 的存儲格式
HBase中的每張表都通過行鍵按照一定的范圍被分割成多個子表(HRegion),默認(rèn)一個HRegion超過256M就要被分割成兩個,由HRegionServer管理,管理哪些HRegion由HMaster分配。
HBase 的讀寫流程
HBase 的優(yōu)化
- 預(yù)分區(qū)
- rowkey 優(yōu)化
- 減少 Column Family 數(shù)量
- 關(guān)于HBase 數(shù)據(jù)熱點的問題
Spark
-
Spark 有幾種部署方式?請分別簡要論述
Spark 的運行模式有 Local(也稱單節(jié)點模式),Standalone(集群模式),Spark on Yarn(運行在Yarn上)有 yarn-client 和 yarn-cluster 兩種模式,主要區(qū)別在于:Driver 程序的運行節(jié)點。
Spark on yarn cluster 作業(yè)提交的流程
Spark 提交作業(yè)參數(shù)
如何理解 Spark 中的血統(tǒng)概念(RDD)
-
Spark 調(diào)優(yōu)
coalesce 和 repartition / BroadCast join 廣播 join / 控制 Spark reduce 緩存 調(diào)優(yōu) shuffle / 使用高性能算子 等等。
-
Spark 劃分任務(wù)
RDD任務(wù)切分中間分為:Application. Job. Stage和Task ,再詳細(xì)講述各自的聯(lián)系。
-
Spark 寬窄依賴 ,reducebykey 和 groupbykey 的性能誰高?
map. flatmap. union. filter ----> 窄依賴 groupByKey,reduceByKey,sortByKey,join 各種Bykey都是shuffle階段 -----> 寬依賴 reducebyKey會先在本地機(jī)器上進(jìn)行局部聚合,然后在移動數(shù)據(jù),進(jìn)行全局聚合 ---> 性能更好
-
分別簡述 Spark 中的緩存機(jī)制(cache 和 persist)與checkpoint 機(jī)制,并指出兩者的區(qū)別與聯(lián)系
都是做 RDD 持久化的 cache:內(nèi)存,不會截斷血緣關(guān)系,使用計算過程中的數(shù)據(jù)緩存。checkpoint:磁盤,截斷血緣關(guān)系,在 ck 之前必須沒有任何任務(wù)提交才會生效,ck 過 程會額外提交一次任務(wù)。
-
Spark 的緩存級別
memory_only. disk_only. memory_Anddisk_only 像cache() 默認(rèn) memory_only 什么的。
-
某個 task 莫名其妙內(nèi)存溢出的情況
這種情況下去定位出問題的代碼就比較容易了。我建議直接看 yarn-client 模式下本地log 的異常棧,或者是通過 YARN 查看 yarn-cluster 模式下的 log 中的異常棧。一般來說,通過異常棧信息就可以定位到你的代碼中哪一行發(fā)生了內(nèi)存溢出。然后在那行代碼附近找找,一般也會有 shuffle 類算子,此時很可能就是這個算子導(dǎo)致了數(shù)據(jù)傾斜。但是大家要注意的是,不能單純靠偶然的內(nèi)存溢出就判定發(fā)生了數(shù)據(jù)傾斜。因為自己編 寫的代碼的 bug,以及偶然出現(xiàn)的數(shù)據(jù)異常,也可能會導(dǎo)致內(nèi)存溢出。因此還是要按照上面所講的方法,通過 Spark Web UI 查看報錯的那個 stage 的各個 task 的運行時間以及分配的數(shù)據(jù)量,才能確定是否是由于數(shù)據(jù)傾斜才導(dǎo)致了這次內(nèi)存溢出。
-
Spark 數(shù)據(jù)傾斜
使用 Hive ETL 預(yù)處理數(shù)據(jù) . 過濾少數(shù)導(dǎo)致傾斜的 key . 提高 shuffle 操作的并行度 . 兩階段聚合(局部聚合+全局聚合) . 將 reduce join 轉(zhuǎn)為 map join . 使用隨機(jī)前綴和擴(kuò)容 RDD 進(jìn)行 join 等等,方法很多,大家可以再深入的了解。
-
Spark 內(nèi)存溢出
1 加內(nèi)存, 簡單粗暴
2 將rdd的數(shù)據(jù)寫入磁盤不要保存在內(nèi)存之中
3 如果是collect操作導(dǎo)致的內(nèi)存溢出, 可以增大 Driver的 memory 參數(shù) -
簡述 Spark 中共享變量(廣播變量和累加器)的基本原理與用途
累加器(accumulator)是 Spark 中提供的一種分布式的變量機(jī)制,其原理類似于 mapreduce,即分布式的改變,然后聚合這些改變。累加器的一個常見用途是在調(diào)試時對作業(yè)執(zhí)行過程中的事件進(jìn)行計數(shù)。而廣播變量用來高效分發(fā)較大的對象。
簡述 SparkSQL 中 RDD. DataFrame. DataSet 三者的區(qū)別與聯(lián)系?
-
Spark Streaming 控制每秒消費數(shù)據(jù)的速度
通過 spark.streaming.kafka.maxRatePerPartition 參數(shù)來設(shè)置 Spark Streaming 從 kafka 分區(qū)每秒拉取的條數(shù)。
-
Spark Streaming 背壓機(jī)制
把 spark.streaming.backpressure.enabled 參數(shù)設(shè)置為 ture,開啟背壓機(jī)制后 Spark Streaming 會根據(jù)延遲動態(tài)去 kafka 消費數(shù)據(jù),上限由 spark.streaming.kafka.maxRatePerPartition 參數(shù)控制,所以兩個參數(shù)一般會一起使用。
-
SparkStreaming 有哪幾種方式消費 Kafka 中的數(shù)據(jù),它們之間的區(qū)別是什么?
基于 Receiver 的方式 基于 Direct 的方式 -----> 簡化并行讀取 高性能
數(shù)倉
-
數(shù)據(jù)倉庫的模型設(shè)計
結(jié)合業(yè)務(wù),對數(shù)倉設(shè)計的過程做個概述,例如我的就是常見的四層的一個模型,ODS. ODW... 層 ,這其中我對業(yè)務(wù)數(shù)據(jù)做了哪些操作,都得了然于心吧。
-
數(shù)倉質(zhì)量怎么監(jiān)控
數(shù)據(jù)質(zhì)量管理系統(tǒng),主鍵唯一. 非空. 數(shù)據(jù)波動。
業(yè)務(wù)建模. 數(shù)據(jù)分析方法
有沒有遇到數(shù)據(jù)傾斜的問題(場景. 解決方式)
數(shù)倉規(guī)范設(shè)計哪些方面(字段. 維度,存儲壓縮. 數(shù)據(jù)保留機(jī)制)
數(shù)倉有用到增量表. 還是全量表?拉鏈表做過嗎?