30 多個 Hadoop 面試問題和答案

已發表: 2022-12-01

好吧,來自福布斯的統計數據表明,多達 90% 的世界組織使用大數據分析來創建他們的投資報告。

隨著大數據的日益普及,因此 Hadoop 的工作機會比以前激增。

因此,為了幫助您獲得 Hadoop 專家的角色,您可以使用我們在本文中為您整理的這些面試問題和答案來幫助您通過面試。

也許了解使 Hadoop 和大數據角色有利可圖的薪資範圍等事實會激勵您通過面試,對吧?

  • 根據 indeed.com 的數據,美國大數據 Hadoop 開發人員的平均工資為 144,000 美元。
  • 根據 itjobswatch.co.uk,大數據 Hadoop 開發人員的平均工資為 66,750 英鎊。
  • 在印度,indeed.com 的消息來源稱,他們的平均工資為 16,00,000 盧比。

很賺錢,你不覺得嗎? 現在,讓我們開始了解 Hadoop。

什麼是 Hadoop?

Hadoop 是一種用 Java 編寫的流行框架,它使用編程模型來處理、存儲和分析大型數據集。

默認情況下,它的設計允許從單個服務器擴展到提供本地計算和存儲的多台機器。 此外,它檢測和處理應用層故障的能力會導致高可用性服務,這使得 Hadoop 非常可靠。

讓我們直接進入常見的 Hadoop 面試問題及其正確答案。

Hadoop的面試題及答案

Hadoop

Hadoop中的存儲單元是什麼?

:Hadoop的存儲單元稱為Hadoop分佈式文件系統(HDFS)。

網絡附加存儲與 Hadoop 分佈式文件系統有何不同?

:HDFS 是 Hadoop 的主存儲,是一種分佈式文件系統,使用商品硬件存儲大量文件。 另一方面,NAS 是一種文件級計算機數據存儲服務器,它為異構客戶端組提供數據訪問權限。

NAS 中的數據存儲在專用硬件上,而 HDFS 將數據塊分佈到 Hadoop 集群中的所有機器上。

NAS 使用高端存儲設備,成本較高,而 HDFS 使用的商品硬件具有成本效益。

NAS 將數據與計算分開存儲,因此不適合 MapReduce。 相反,HDFS 的設計允許它與 MapReduce 框架一起工作。 計算移動到 MapReduce 框架中的數據,而不是數據移動到計算。

解釋 Hadoop 和 Shuffling 中的 MapReduce

答案:MapReduce 指的是 Hadoop 程序執行的兩項不同任務,以實現跨 Hadoop 集群中成百上千台服務器的大規模可擴展性。 另一方面,Shuffling 將映射輸出從 Mappers 傳輸到 MapReduce 中必要的 Reducer。

一瞥 Apache Pig 架構

Apache-Pig-架構
Apache Pig 架構

回答:Apache Pig 架構有一個 Pig Latin 解釋器,它使用 Pig Latin 腳本處理和分析大型數據集。

Apache pig 還包含一組數據集,在這些數據集上執行連接、加載、過濾、排序和分組等數據操作。

Pig Latin 語言使用 Grant shell、UDF 和嵌入式等執行機制來編寫執行所需任務的 Pig 腳本。

Pig 通過將這些編寫的腳本轉換為 Map-Reduce 作業系列,使程序員的工作更加輕鬆。

Apache Pig 架構組件包括:

  • 解析器——它通過檢查腳本的語法和執行類型檢查來處理 Pig 腳本。 解析器的輸出表示 Pig Latin 的語句和邏輯運算符,稱為 DAG(有向無環圖)。
  • 優化器——優化器在 DAG 上實現邏輯優化,如投影和下推。
  • 編譯器——將優化器優化後的邏輯計劃編譯成一系列 MapReduce 作業。
  • 執行引擎——這是將 MapReduce 作業最終執行到所需輸出的地方。
  • 執行模式——Apache pig中的執行模式主要有local和Map Reduce兩種。

列出本地 Metastore 和遠程 Metastore 之間的區別

回答:本地 Metastore 中的 Metastore 服務與 Hive 在同一 JVM 中運行,但連接到在同一台或遠程計算機上的單獨進程中運行的數據庫。 另一方面,Remote Metastore 中的 Metastore 在其獨立於 Hive 服務 JVM 的 JVM 中運行。

大數據的五個V是什麼?

答案:這五個 V 代表大數據的主要特徵。 他們包括:

  • 價值:大數據尋求通過高投資回報率 (ROI) 為在其數據運營中使用大數據的組織提供顯著收益。 大數據通過其洞察力發現和模式識別帶來這種價值,從而帶來更牢固的客戶關係和更有效的運營,以及其他好處。
  • Variety :這表示收集的數據類型類型的異構性。 各種格式包括 CSV、視頻、音頻等。
  • :這定義了組織管理和分析的數據的重要數量和大小。 該數據描述了指數增長。
  • 速度:這是數據增長的指數速度。
  • 準確性:準確性是指由於數據不完整或不一致而導致可用數據“不確定”或“不准確”的程度。

解釋 Pig Latin 的不同數據類型。

:Pig Latin 中的數據類型包括原子數據類型和復雜數據類型。

原子數據類型是所有其他語言中使用的基本數據類型。 它們包括以下內容:

  • Int——這種數據類型定義了一個帶符號的 32 位整數。 示例:13
  • Long – Long 定義一個 64 位整數。 示例:10L
  • Float——定義一個帶符號的 32 位浮點數。 示例:2.5F
  • 雙精度 – 定義有符號的 64 位浮點數。 示例:23.4
  • 布爾值——定義一個布爾值。 它包括:真/假
  • 日期時間 – 定義日期時間值。 示例:1980-01-01T00:00.00.000+00:00

複雜數據類型包括:

  • Map- Map指的是鍵值對集合。 示例:['顏色'#'黃色', '數字'#3]
  • Bag——它是一組元組的集合,它使用“{}”符號。 示例:{(亨利,32 歲),(基蒂,47 歲)}
  • 元組——一個元組定義了一組有序的字段。 示例:(年齡,33 歲)

什麼是 Apache Oozie 和 Apache ZooKeeper?

回答:Apache Oozie 是一個 Hadoop 調度程序,負責將 Hadoop 作業作為單個邏輯工作進行調度和綁定。

另一方面,Apache Zookeeper 在分佈式環境中協調各種服務。 它通過簡單地公開同步、分組、配置維護和命名等簡單服務來節省開發人員的時間。 Apache Zookeeper 還為排隊和領導人選舉提供現成的支持。

Combiner、RecordReader 和 Partitioner 在 MapReduce 操作中的作用是什麼?

答案:組合器就像一個迷你減速器。 它接收並處理來自 map 任務的數據,然後將數據的輸出傳遞給 reducer 階段。

RecordHeader 與 InputSplit 通信並將數據轉換為鍵值對以供映射器適當讀取。

Partitioner 負責決定匯總數據所需的縮減任務數量,並確認組合器輸出如何發送到縮減器。 分區器還控制中間映射輸出的關鍵分區。

提及不同供應商特定的 Hadoop 發行版。

回答:擴展 Hadoop 功能的各種供應商包括:

  • IBM 開放平台。
  • Cloudera CDH Hadoop 發行版
  • MapR Hadoop 分佈
  • 亞馬遜彈性 MapReduce
  • Hortonworks 數據平台(HDP)
  • 關鍵大數據套件
  • Datastax 企業分析
  • Microsoft Azure 的 HDInsight – 基於雲的 Hadoop 分發。

為什麼 HDFS 是容錯的?

Answer : HDFS將數據複製到不同的DataNodes上,使其具有容錯性。 將數據存儲在不同的節點中允許在一種模式崩潰時從其他節點檢索。

區分聯合和高可用性。

答案:HDFS Federation 提供容錯能力,當另一個節點崩潰時允許一個節點中的連續數據流。 另一方面,高可用性需要兩台獨立的機器分別在第一台和第二台機器上配置活動 NameNode 和輔助 NameNode。

Federation 可以有無限數量的不相關的NameNode,而在High availability 中,只有兩個相關的NameNode,active 和standby,它們是連續工作的。

聯盟中的 NameNode 共享一個元數據池,每個 NameNode 都有自己的專用池。 然而,在高可用性中,活動 NameNode 一次運行一個,而備用 NameNode 保持空閒狀態,只是偶爾更新它們的元數據。

如何查找塊狀態和文件系統健康狀況?

回答:您可以在 root 用戶級別和單個目錄下使用hdfs fsck /命令來檢查 HDFS 文件系統的健康狀態。

使用中的 HDFS fsck 命令:

 hdfs fsck / -files --blocks –locations> dfs-fsck.log

命令說明:

  • -files:打印正在檢查的文件。
  • –locations:檢查時打印所有方塊的位置。

檢查塊狀態的命令:

 hdfs fsck <path> -files -blocks
  • <path>:從此處傳遞的路徑開始檢查。
  • – blocks:它在檢查期間打印文件塊

什麼時候使用 rmadmin-refreshNodes 和 dfsadmin-refreshNodes 命令?

:這兩條命令有助於在調測過程中或節點調測完成後刷新節點信息。

dfsadmin-refreshNodes命令運行 HDFS 客戶端並刷新 NameNode 的節點配置。 另一方面, rmadmin-refreshNodes命令執行 ResourceManager 的管理任務。

什麼是檢查點?

回答:檢查點是一種將文件系統的最後更改與最新的 FSImage 合併的操作,以便編輯日誌文件保持足夠小以加快啟動 NameNode 的過程。 Checkpoint 發生在 Secondary NameNode 中。

為什麼我們將 HDFS 用於具有大數據集的應用程序?

Answer : HDFS提供了DataNode和NameNode架構,實現了分佈式文件系統。

這兩種架構通過高度可擴展的 Hadoop 集群提供對數據的高性能訪問。 它的 NameNode 將文件系統的元數據存儲在 RAM 中,這導致內存量限制了 HDFS 文件系統文件的數量。

“jps”命令有什麼作用?

回答:Java 虛擬機進程狀態 (JPS) 命令檢查特定的 Hadoop 守護進程,包括 NodeManager、DataNode、NameNode 和 ResourceManager,是否正在運行。 需要從root運行該命令,查看Host中正在運行的節點。

Hadoop 中的“推測執行”是什麼?

回答:這是一個過程,Hadoop 中的主節點不是修復檢測到的慢速任務,而是在另一個節點上啟動相同任務的不同實例作為備份任務(推測任務)。 推測執行可以節省大量時間,尤其是在密集的工作負載環境中。

說出 Hadoop 可以運行的三種模式。

:Hadoop 運行的三個主要節點包括:

  • 獨立節點是使用本地文件系統和單個 Java 進程運行 Hadoop 服務的默認模式。
  • 偽分佈式節點使用單節點 Hadoop 部署執行所有 Hadoop 服務。
  • 全分佈式節點使用單獨的節點運行 Hadoop 主從服務。

什麼是 UDF?

答案:UDF(用戶定義函數)允許您編寫自定義函數,您可以使用這些函數在 Impala 查詢期間處理列值。

什麼是 DistCp?

:簡而言之,DistCp 或 Distributed Copy 是用於大型集群間或集群內數據複製的有用工具。 使用 MapReduce,DistCp 有效地實現了大量數據的分佈式副本,以及其他任務,如錯誤處理、恢復和報告。

解釋 Hive 中的 Metastore。

回答:Hive metastore 是一項服務,用於將 Hive 表的 Apache Hive 元數據存儲在關係數據庫(如 MySQL)中。 它提供了允許對元數據進行分權訪問的 Metastore 服務 API。

定義 RDD。

回答:RDD,代表彈性分佈式數據集,是 Spark 的數據結構和在不同集群節點上計算的數據元素的不可變分佈式集合。

如何將原生庫包含在 YARN 作業中?

回答:您可以使用-Djava.library. path 命令上的-Djava.library. path選項或通過使用以下格式在 .bashrc 文件中設置LD+LIBRARY_PATH

 <property> <name>mapreduce.map.env</name> <value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/my/libs</value> </property>

解釋 HBase 中的“WAL”。

Answer : Write Ahead Log(WAL)是一種恢復協議,將HBase中的MemStore數據變化記錄到基於文件的存儲中。 如果 RegionalServer 崩潰或在刷新 MemStore 之前,WAL 會恢復此數據。

YARN 是 Hadoop MapReduce 的替代品嗎?

:不,YARN 不是 Hadoop MapReduce 的替代品。 相反,一種稱為 Hadoop 2.0 或 MapReduce 2 的強大技術支持 MapReduce。

HIVE 中的 ORDER BY 和 SORT BY 有什麼區別?

回答:雖然這兩個命令在 Hive 中以排序方式獲取數據,但使用SORT BY的結果可能只是部分排序。

此外, SORT BY需要一個 reducer 來對行進行排序。 最終輸出所需的這些 reducer 也可能是多個。 在這種情況下,最終輸出可能是部分排序的。

另一方面, ORDER BY只需要一個 reducer 來輸出總訂單。 您還可以使用減少總排序時間的LIMIT關鍵字。

Spark 和 Hadoop 有什麼區別?

:雖然 Hadoop 和 Spark 都是分佈式處理框架,但它們的主要區別在於它們的處理方式。 Hadoop 對於批處理是高效的,而 Spark 對於實時數據處理是高效的。

此外,Hadoop 主要是將文件讀寫到 HDFS,而 Spark 使用 Resilient Distributed Dataset 概念在 RAM 中處理數據。

從他們的延遲來看,Hadoop是一個高延遲的計算框架,沒有交互方式來處理數據,而Spark是一個低延遲的計算框架,以交互方式處理數據。

比較 Sqoop 和 Flume。

:Sqoop 和 Flume 是 Hadoop 工具,可以收集從各種來源收集的數據並將數據加載到 HDFS。

  • Sqoop(SQL-to-Hadoop) 從數據庫中提取結構化數據,包括 Teradata、MySQL、Oracle 等,而 Flume 用於從數據庫源中提取非結構化數據並將其加載到 HDFS。
  • 在事件驅動方面,Flume是事件驅動的,而Sqoop不是事件驅動的。
  • Sqoop 使用基於連接器的架構,其中連接器知道如何連接到不同的數據源。 Flume 使用基於代理的架構,編寫的代碼是負責獲取數據的代理。
  • 由於 Flume 的分佈式特性,它可以輕鬆地收集和聚合數據。 Sqoop 對於並行數據傳輸很有用,這會導致輸出在多個文件中。

解釋 BloomMapFile。

答案:BloomMapFile 是一個擴展 MapFile 類的類,並使用動態布隆過濾器為鍵提供快速成員資格測試。

列出 HiveQL 和 PigLatin 之間的區別。

回答:HiveQL 是一種類似於 SQL 的聲明性語言,而 PigLatin 是一種高級過程數據流語言。

什麼是數據清理?

回答:數據清理是消除或修復已識別數據錯誤的關鍵過程,這些錯誤包括數據集中的不正確、不完整、損壞、重複和格式錯誤的數據。

此過程旨在提高數據質量,並提供組織內有效決策所需的更準確、一致和可靠的信息。

結論

隨著當前大數據和 Hadoop 工作機會的激增,您可能希望提高進入的機會。本文的 Hadoop 面試問題和答案將幫助您在即將到來的面試中脫穎而出。

接下來,您可以查看學習大數據和 Hadoop 的好資源。

祝你好運!