Hadoop和MapReduce面試排名前60位問答

以下是面試中針對新生和經驗豐富的開發人員的常見問題。

1)什麼是Hadoop Map Reduce?

為了跨Hadoop集群並行處理大型數據集,使用了Hadoop MapReduce框架。數據分析使用兩步映射,並簡化了流程。

2)Hadoop MapReduce如何工作?

在MapReduce中,在映射階段,它將對每個文檔中的單詞進行計數,而在歸約階段,它將根據跨越整個集合的文檔來聚合數據。在映射階段,輸入數據被分為多個部分,以供跨Hadoop框架並行運行的映射任務進行分析。

3)解釋一下MapReduce中的改組是什麼?

系統執行排序並將映射輸出作為輸入傳輸到reducer的過程稱為混洗

4)說明MapReduce框架中的分佈式緩存是什麼?

分佈式緩存是MapReduce框架提供的重要功能。當您想在Hadoop群集中的所有節點上共享一些文件時,將使用分佈式緩存。這些文件可以是可執行的jar文件或簡單的屬性文件。

5)解釋Hadoop中的NameNode是什麼?

Hadoop中的NameNode是節點,Hadoop在其中將所有文件位置信息存儲在HDFS(Hadoop分佈式文件系統)中。換句話說,NameNode是HDFS文件系統的核心。它保留文件系統中所有文件的記錄,並跟蹤整個集群或多臺計算機上的文件數據

6)解釋Hadoop中的JobTracker是什麼?Hadoop採取了哪些行動?

在用於提交和跟蹤MapReduce作業的Hadoop中,使用JobTracker。作業跟蹤程序在其自己的JVM進程上運行

Job Tracker在Hadoop中執行以下操作

  • 客戶應用程序將作業提交到作業跟蹤器
  • JobTracker與名稱模式通信以確定數據位置
  • 在數據附近或有可用插槽的位置,JobTracker定位TaskTracker節點
  • 在選定的TaskTracker節點上,它提交工作
  • 當任務失敗時,作業跟蹤器會通知並決定該怎麼辦。
  • TaskTracker節點由JobTracker監視

7)解釋HDFS中的心跳是什麼?

心跳是指在數據節點和名稱節點之間以及任務跟蹤器和作業跟蹤器之間使用的信號,如果名稱節點或作業跟蹤器不響應該信號,則認為數據節點或任務存在一些問題追蹤器

8)說明什麼是合併器,以及何時在MapReduce作業中使用合併器?

為了提高MapReduce程序的效率,使用了組合器。數據量可以藉助需要轉移到精簡器的合併器來減少。如果執行的操作是可交換的和關聯的,則可以將您的reducer代碼用作組合器。在Hadoop中不能保證組合器的執行

9)當數據節點發生故障時會發生什麼?

數據節點發生故障時

  • Jobtracker和namenode檢測到故障
  • 在發生故障的節點上,所有任務都將重新安排
  • Namenode將用戶的數據複製到另一個節點

10)解釋什麼是投機執行?

在Hadoop的推測執行期間,啟動了一定數量的重複任務。在不同的從屬節點上,可以使用推測執行來執行同一映射或歸約任務的多個副本。簡而言之,如果特定的驅動器需要很長時間才能完成任務,則Hadoop將在另一個磁盤上創建重複的任務。將保留先完成任務的磁盤,而未先完成任務的磁盤將被殺死。

11)解釋Mapper的基本參數是什麼?

映射器的基本參數是

  • 長寫和文本
  • 文字和可寫

12)解釋一下MapReduce分區器的功能是什麼?

MapReduce分區程序的功能是確保單個鍵的所有值都分配到同一精簡器,最終有助於在精簡器上均勻分配地圖輸出

13)解釋輸入拆分和HDFS塊之間的區別是什麼?

數據的邏輯劃分稱為“拆分”,而物理的數據劃分稱為“ HDFS塊”

14)說明文本格式會發生什麼?

在文本輸入格式中,文本文件中的每一行都是一條記錄。值是該行的內容,而鍵是該行的字節偏移量。例如,鍵:longWritable,值:文本

15)提到用戶運行MapReduce Job時需要指定的主要配置參數是什麼?

MapReduce框架的用戶需要指定

  • 作業在分佈式文件系統中的輸入位置
  • 作業在分佈式文件系統中的輸出位置
  • 輸入格式
  • 輸出格式
  • 包含地圖功能的類
  • 包含reduce函數的類
  • 包含映射器,Reducer和驅動程序類的JAR文件

16)解釋Hadoop中的WebDAV是什麼?

為了支持編輯和更新文件,WebDAV是HTTP的一組擴展。在大多數操作系統上,WebDAV共享可以作為文件系統掛載,因此可以通過在WebDAV上公開HDFS將HDFS作為標準文件系統來訪問。

17)解釋Hadoop中的Sqoop是什麼?

為了在關係數據庫管理(RDBMS)和Hadoop HDFS之間傳輸數據,使用了一種稱為Sqoop的工具。使用Sqoop數據可以從MySQL或Oracle之類的RDMS傳輸到HDFS,也可以從HDFS文件導出到RDBMS

18)解釋JobTracker如何安排任務?

任務跟蹤程序通常每隔幾分鐘就會向心動消息發送心跳消息,以確保JobTracker處於活動狀態並正常工作。該消息還會通知JobTracker可用插槽的數量,因此JobTracker可以保持最新狀態,可以委派集群工作

19)解釋什麼是Sequencefileinputformat?

Sequencefileinputformat用於順序讀取文件。它是一種特定的壓縮二進制文件格式,經過優化,可在一個MapReduce作業的輸出與其他MapReduce作業的輸入之間傳遞數據。

20)解釋conf.setMapper類做什麼?

Conf.setMapperclass設置映射器類以及與映射作業相關的所有內容,例如讀取數據並從映射器中生成鍵值對

21)解釋什麼是Hadoop?

它是一個開放源代碼的軟件框架,用於在商用硬件集群上存儲數據和運行應用程序。它為任何類型的數據提供了巨大的處理能力和海量存儲。

22)提到RDBMS和Hadoop有什麼區別?


Hadoop和MapReduce面試排名前60位問答


23)是否提到Hadoop核心組件?

Hadoop核心組件包括:

  • HDFS
  • MapReduce

24)Hadoop中的NameNode是什麼?

Hadoop中的NameNode是Hadoop在HDFS中存儲所有文件位置信息的位置。它是作業跟蹤程序在其上運行的主節點,並由元數據組成。

25)提到Hadoop使用哪些數據組件?

Hadoop使用的數據組件是

  • Pig
  • Hive
  • 26)提到Hadoop使用什麼數據存儲組件?

    Hadoop使用的數據存儲組件是HBase。

    27)提到Hadoop中定義的最常見的輸入格式是什麼?

    Hadoop中定義的最常見的輸入格式是:

    • TextInputFormat
    • KeyValueInputFormat
    • SequenceFileInputFormat

    28)在Hadoop中,InputSplit是什麼?

    它將輸入文件拆分為多個塊,並將每個拆分分配給一個映射器進行處理。

    29)對於Hadoop作業,您將如何編寫自定義分區程序?

    您為Hadoop作業編寫了一個自定義分區程序,遵循以下路徑

    • 創建一個新的類來擴展Partitioner類
    • 重寫方法getPartition
    • 在運行MapReduce的包裝器中
    • 使用方法set Partitioner Class將自定義分區程序添加到作業中,或–將自定義分區程序作為配置文件添加到作業中

    30)對於Hadoop中的工作,是否可以更改要創建的映射器的數量?

    不可以,無法更改要創建的映射器的數量。映射器的數量由輸入拆分的數量確定。

    31)解釋Hadoop中的序列文件是什麼?

    要存儲二進制鍵/值對,請使用序列文件。與常規壓縮文件不同,即使壓縮文件內部的數據,序列文件也支持拆分。

    32)當Namenode出現故障時,作業跟蹤器會如何處理?

    Namenode是HDFS中的單點故障,因此當Namenode關閉時,您的群集將關閉。

    33)解釋如何在HDFS中建立索引?

    Hadoop具有獨特的索引編制方式。一旦按照塊大小存儲了數據,HDFS將繼續存儲數據的最後一部分,即數據的下一部分將在哪裡。

    34)解釋是否可以使用通配符搜索文件?

    是的,可以使用通配符搜索文件。

    35)列出Hadoop的三個配置文件?

    這三個配置文件是

    • core-site.xml
    • mapred-site.xml
    • hdfs-site.xml

    36)解釋如何使用jps命令檢查Namenode是否在工作?

    除了使用jps命令之外,要檢查Namenode是否正常工作,還可以使用

    /etc/init.d/hadoop-0.20-namenode狀態。

    37)在Hadoop中解釋什麼是“映射”和什麼是“縮減器”?

    在Hadoop中,映射是HDFS查詢解決方案的一個階段。映射從輸入位置讀取數據,並根據輸入類型輸出鍵值對。

    在Hadoop中,Reducer收集由映射器生成的輸出,對其進行處理,並創建其自身的最終輸出。

    38)在Hadoop中,哪個文件控制著Hadoop中的報告?

    在Hadoop中,hadoop-metrics.properties文件控制報告。

    39)對於使用Hadoop列出的網絡要求?

    對於使用Hadoop,網絡要求的列表為:

    • 無密碼SSH連接
    • 安全外殼(SSH),用於啟動服務器進程

    40)提到什麼是機架意識?

    機架感知是名稱節點根據機架定義確定如何放置塊的方式。

    41)解釋Hadoop中的任務跟蹤器是什麼?

    Hadoop中的任務跟蹤器是集群中的一個從屬節點守護程序,它從JobTracker接受任務。它還每隔幾分鐘將心跳消息發送到JobTracker,以確認JobTracker仍在運行。

    42)提到在主節點和從節點上運行哪些守護程序?

    • 在主節點上運行的守護程序為“ NameNode”
    • 在每個從節點上運行的守護程序是“任務跟蹤器”和“數據”

    43)解釋如何調試Hadoop代碼?

    調試Hadoop代碼的流行方法是:

    • 通過使用Hadoop框架提供的Web界面
    • 通過使用計數器

    44)解釋什麼是存儲和計算節點?

    • 存儲節點是文件系統所在的機器或計算機,用於存儲處理數據
    • 計算節點是將在其中執行實際業務邏輯的計算機或計算機。

    45)提到上下文對象的用途是什麼?

    上下文對象使映射器能夠與Hadoop的其餘部分進行交互

    系統。它包括作業的配置數據,以及允許其發出輸出的接口。

    46)提到在Mapper或MapTask之後的下一步是什麼?

    Mapper或MapTask之後的下一步是對Mapper的輸出進行排序,並將為輸出創建分區。

    47)提到Hadoop中默認分區程序的數量是多少?

    在Hadoop中,默認分區程序是“哈希”分區程序。

    48)解釋Hadoop中RecordReader的目的是什麼?

    在Hadoop中,RecordReader從其源加載數據,並將其轉換為適合Mapper讀取的(鍵,值)對。

    49)如果在Hadoop中未定義自定義分區程序,請解釋如何在將數據發送到reducer之前進行數據分區?

    如果在Hadoop中未定義自定義分區程序,則默認分區程序將計算密鑰的哈希值,並根據結果分配分區。

    50)解釋一下,當Hadoop為一個工作產生50個任務並且其中一個任務失敗時,會發生什麼?

    如果任務失敗超過定義的限制,它將在其他TaskTracker上再次重新啟動任務。

    51)提到在HDFS群集之間複製文件的最佳方法是什麼?

    在HDFS群集之間複製文件的最佳方法是使用多個節點和distcp命令,因此可以共享工作量。

    52)提到HDFS和NAS有什麼區別?

    HDFS數據塊分佈在群集中所有計算機的本地驅動器上,而NAS數據存儲在專用硬件上。

    53)提到Hadoop與其他數據處理工具有何不同?

    在Hadoop中,您可以增加或減少映射器的數量,而不必擔心要處理的數據量。

    54)提到conf類做什麼工作?

    Job conf類將在同一群集上運行的不同作業分開。它執行作業級別設置,例如在實際環境中聲明作業。

    55)提及鍵和值類的Hadoop MapReduce API合同是什麼?

    對於鍵和值類,有兩個Hadoop MapReduce API合同

    • 該值必須定義org.apache.hadoop.io.Writable接口
    • 密鑰必須定義org.apache.hadoop.io.WritableComparable接口

    56)提到可以運行Hadoop的三種模式是什麼?

    可以運行Hadoop的三種模式是

    • 偽分佈式模式
    • 獨立(本地)模式
    • 全分佈式模式

    57)提到文本輸入格式有什麼作用?

    文本輸入格式將創建一個十六進制數字的行對象。該值被視為整行文本,而鍵被視為行對象。映射器將值作為“文本”參數接收,而鍵將作為“ longwriteable”參數接收。

    58)提到Hadoop框架進行了多少InputSplits?

    Hadoop將進行5次拆分

    • 1分割為64K文件
    • 2拆分為65mb文件
    • 2分割為127mb的文件

    59)提到Hadoop中的分佈式緩存是什麼?

    Hadoop中的分佈式緩存是MapReduce框架提供的功能。在執行作業時,它用於緩存文件。在該節點上執行任何任務之前,框架會將必需的文件複製到從節點。

    60)說明Hadoop Classpath在停止或啟動Hadoop守護程序中如何起重要作用?

    類路徑將包含目錄列表,這些目錄包含要停止或啟動守護程序的jar文件。


    分享到:


    相關文章: