如何學習Hadoop,面試Hadoop工程師有哪些問題?

Hadoop 的面試問題和學習小結


Fei Dong | LinkedIn

Hadoop面試和學習小結

隨著大數據的盛行,Hadoop也流行起來。面過一些公司,包括開發Hadoop :如Cloudera, Hortonworks, MapR, Teradata, Greenplum, Amazon EMR, 使用Hadoop的除了Google,數不勝數了.

Hadoop 2.0轉型基本無可阻擋,今年下半年要正式發布了,它的出現讓大家知識體系都 要更新了。Hadoop1.0搞了8年才發布,2.0不到2年就出來了。2.0的核心是YARN,它的 誕生還是有趣的故事

YARN介紹

  • Yarn from Hortonworks
  • Yarn from IBM developerworks

Hadoop 生態系統

  • Hadoop Ecosystem at a Glance

SQL on Hadoop

  • SQL is what』s next for Hadoop: Here』s who』s doing it

  • All SQL-on-Hadoop Solutions are missing the point of Hadoop

Hadoop Summit

  • Hadoop Summit, San Jose

書籍和Paper

「Hadoop: The Definitive Guide」: 裡面內容非常好,既有高屋建瓴,又有微觀把握,基本適用於1.X版本。比如mapreduce各個子階段,Join在裡面也有代碼實現,第三版

  • Hadoop: The Definitive Guide, 3rd Edition
  • tomwhite/hadoop-book · GitHub

Google的三輛馬車,GFS, MapReduce, BigTable Google的新三輛馬車:Caffeine、Pregel、Dremel

  • Big Data beyond MapReduce: Google』s Big Data papers

SIGMOD, VLDB Top DB conference


入門:

  1. 知道MapReduce大致流程,Map, Shuffle, Reduce
  2. 知道Combiner, partition作用,設置Compression
  3. 搭建Hadoop集群,Master/Slave 都運行那些服務 NameNode, DataNode, JobTracker, TaskTracker
  4. Pig, Hive 簡單語法,UDF寫法
  • When to use Pig Latin versus Hive SQL?
  • Online Feedback Publishing System
  • Introduction to Apache Hive Online Training
  • http://i.stanford.edu/~ragho/hive-icde2010.pdf

Hadoop 2.0新知識; HDFS2 HA,Snapshot, ResourceManager,ApplicationsManager, NodeManager


進階:

  • HDFS,Replica如何定位

  • HDFS Design

  • Hadoop 參數調優,性能優化,Cluster level: JVM, Map/Reduce Slots, Job level: Reducer #, Memory, use Combiner? use Compression?

  • 7 Tips for Improving MapReduce Performance

  • Hadoop Summit 2010 Tuning Hadoop To Deliver Performance To Your Application

  • HBase 搭建,Region server, key如何選取?
  • 數據傾斜怎麼辦?

演算法:

  • 字典同位詞
  • 翻譯SQL語句 select count(x) from a group by b;
  • MapReduce Algorithms
  • Designing algorithms for Map Reduce

Blog

關注Cloudera, Hortonworks, MapR

  • 董的博客

  • Hadoop學習資料

相關係統

  • 數據流系統: Storm

  • 內存計算系統: Spark and Shark

  • 互動式實時系統:Cloudera Impala, Apache Drill (Dremel開源實現),Tez (Hortonworks)

公司列表:

  • Powered by

其他

  • Hadoop進化目標:開發部署傻瓜化,性能更強勁,最後為程序員標配。
  • 核心都是被寡頭控制的,記得一邊文章說一流的公司賣標準,二流的公司賣技術,三 流的公司賣產品,H和C有最多的committer,自然就影響著整個Hadoop社區。
  • 技術就是日新月異,還是多看看那些公司的博客,關注感興趣的新產品,Hortonworks Stack
  • 在Hadoop系統中從頭裸寫MapReduce不現實了,ETL基本靠Hive,Pig, 還有Cascading,Scalding
  • MapReduce並不是最優的,僅適合批處理,很多問題:JVM的啟動overhead很大,小 Job更明顯,數據必須先存儲,不適合迭代計算,延遲高。DB學術圈討論很久tradeoff 了,MapReduce: 一個巨大的倒退

關Hadoop學習小編特地找到了阿里大數據專家封神(阿里封神談hadoop學習之路-博客-雲棲社區-阿里雲)以下是其對於Hadoop學習之路的一些見解:

Hadoop是一個由Apache基金會所開發的開源分散式系統基礎架構。用戶可以在不了解分散式底層細節的情況下,開發分散式程序,充分利用集群的威力進行高速運算和存儲。Hadoop得以在大數據處理應用中廣泛應用得益於其自身在數據提取、變形和載入(ETL)方面上的天然優勢。Hadoop的分散式架構,將大數據處理引擎儘可能的靠近存儲。

為了幫助大家進一步了解Hadoop,雲棲社區組織翻譯了GitHub Awesome Hadoop 資源,涵蓋Hadoop中常見的庫與工具、存儲方式、資料庫,以及相關的書籍、網站等資源。

Hadoop學習資源集合-博客-雲棲社區-阿里雲


hadoop個人感覺可以從簡到難逐步學習。
首先了解其基本架構,mapreduce基本原理。可以看hadoop權威指南。然後開始實踐,裝個虛擬機,搭一個偽分散式集群。然後嘗試使用hdfs. 開發mapreduce程序,可以用java寫,也可以寫streaming程序(c python php都可以寫)。開始寫簡單的統計程序,如wordcount , topk等,然後連接,然後複雜的矩陣計算,實現一些演算法等。注意開發過程中要學會利用日誌去調試,例如把調式信息打到標準錯誤,通過日誌跟蹤。開發熟練後你可能很想了解hadoop框架內部實現。這時可以去跟源碼,市場上有很多這種書,可以自己對著源碼看,可以從某個點切入,例如mapreduce詳細過程。面試問得最多的是: partition, shuffle, sort 等。假若崗位是需要修改優化hadoop,源碼需要掌握,假若是開發,不是必須,但了解內部機理對自己優化程序有幫助。hadoop很多問題是在實際場景中去遇到和解決的,例如幾百台節點的集群namenode該怎麼配置,掛了如何快速恢復,不穩定如何解決,作業調度,日誌管理等。


2015年一直是大數據的一年,通過創新的技術的提出,數據驅動的決策和成果為中心的分析取得了巨大進步。目前大數據在全球範圍內以58%的速度成長,而這一趨勢在2016會進一步增大。全球企業,無論大小,都在尋找高水平的hadoop專家。

作為一個大數據專家,就必須知道正確的流行語,學習正確的技術,並準備的正確答案常見Hadoop的面試問題。

下面是排名前50的Hadoop面試問題,這將保證你順利入選進入下一階段面試的最終名單。小編匯總了Hadoop集群,MapReduce,Pig,Hive,HDFS的問題和答案,這個博客助你通往你的下一個Hadoop的工作。

Hadoop的HDFS和Hadoop的面試問題
1)列出Hadoop集群的Hadoop守護進程和相關的角色。
Namenode:它運行上Master節點上,負責存儲的文件和目錄所有元數據。它管理文件的塊信息,以及塊在集群中分布的信息。

Datanode:它是一個存儲實際數據的Slave節點。它定時向Namenode發送本節點上塊的信息。

Secondary Namenode:它會定期通過Editlog合併NameNode的變化,從而它r的日誌不會過大。它可以在NameNode的故障的情況下做為副本使用。

JobTracker:這是運行在Namenode上,負責提交和跟蹤MapReduce Job的守護程序。它會向Tasktracker分配的任務。

TaskTracker:這是Datanode上運行的守護進程。它在Slave節點上負責具體任務的運行。

ResourceManager的(Hadoop的2.X):它負責YARN上運行的資源和調度。

NodeManager(Hadoop的2.X):它可以運行在Slave節點,並負責啟動應用程序的容器,監測他們的資源使用情況(CPU,內存,磁碟,網路),並報告這些到ResourceManager。

JobHistoryServer(Hadoop的2.X):它維護有關的MapReduce工作中的應用終止後的信息。

2)項目所需要的大數據工作的一些Hadoop的工具。
Hive,HBase,Ambari等等。有很多的Hadoop工具的大數據。要了解更多關於這些工具,請訪問大數據對基本的Hadoop工具的Edureka博客:http://www.edureka.co/blog/essential-hadoop-tools-for-big-data

3)列出的Hadoop 1和Hadoop 2之間的差異。
在Hadoop的1.x中,「Namenode」有單點問題。在Hadoop的2.x中,我們有主動和被動「Namenodes」。如果主動「的Namenode」失敗,則被動「的Namenode」負責。正因為如此,高可用性可以Hadoop中2.x中來實現

此外,在Hadoop的2.X,YARN提供了一個中央資源管理器。通過YARN,你現在可以在Hadoop中運行多個應用程序,共享公共資源。 MR2是一種特殊類型的運行於YARN MapReduce框架之上的分散式應用。其他工具也可以通過YARN執行數據處理。

要了解更多關於Hadoop的2.X的優勢,請閱讀本博客:http://www.edureka.co/blog/introduction-to-hadoop-2-0-and-advantages-of-hadoop-2-0/

4)什麼是主動和被動的「Namenodes」?
在Hadoop的2.x中,我們有兩個Namenodes-主動「Namenode」 被動「Namenode」。主動「Namenode」是在集群中運行的Namenode。被動「的Namenode」是一個備用「的Namenode」,裡面有主動「的Namenode」的數據。當主動「Namenode」失敗,則被動「Namenode」集群中替換主動「Namenode」。因此,集群是從來不會沒有「Namenode」,所以它永遠不會失敗。

5)怎樣才能刪除或Hadoop集群添加節點?
其中一個Hadoop框架的最吸引人的特點是硬體的利用率。然而,這導致了Hadoop集群頻繁「DataNode」崩潰。 Hadoop框架的另一個顯著特點是,根據對數據量的快速增長便於進行規模擴展。由於這兩個原因,在Hadoop管理員最常見的任務之一是在Hadoop集群,委託(添加)和停用(刪除)「數據節點」。

閱讀這篇博客Edureka獲得在調試和退役節點詳細了解在Hadoop集群:http://www.edureka.co/blog/commissioning-and-decommissioning-nodes-in-a-hadoop-cluster/

6)當兩個客戶端嘗試訪問對HDFS相同的文件,會發生什麼?
HDFS只支持獨佔寫入。

當第一個客戶端連接「Namenode」打開文件進行寫入時,「Namenode」授予租約的客戶端創建這個文件。當第二個客戶端試圖打開同一個文件寫入時,「Namenode」會注意到該文件的租約已經授予給另一個客戶端,並拒絕第二個客戶端打開請求

7)為什麼我們有時會得到一個「文件只能被複制到0節點,而不是1」的錯誤?
這是因為「的Namenode」沒有任何可用的DataNodes。

8)怎樣才能在HDFS關閉「安全模式」?
您可以使用命令:Hadoop dfsadmin -safemode

9)如何在HDFS定義「block」?Hadoop1和2中Hadoop塊大小是多少?是否可以改變?
「塊」是可被讀取或寫入的數據的最小量。 HDFS中的文件被分解成塊大小的塊,它們被存儲作為獨立的單元。

Hadoop的1默認塊大小:64 MB

Hadoop的2默認塊大小:128 MB

是,塊可以被配置。該dfs.block.size參數可在HDFS-site.xml文件被用來設置一個塊的大小。

10)你如何在Hadoop中定義「rack awareness」?
它是在「Namenode」上確定塊放置方式,以盡量減少在同一機架內「DataNodes」之間的網路流量的方式。比方說,我們考慮複製因子3(默認),該策略是「數據的每個塊,兩個副本將在一個機架中,第三個副本存在於不同的機架」。這條規則被稱為「副本放置策略」。

11)為什麼Hadoop適用於大型數據集的應用程序,而不是具有大量的小文件的應用程序?
相較於在多個分布數據量小的文件 ,HDFS更適合在一個文件中具有大量的數據集。這是因為「Namenode」是非常昂貴的,高性能的系統中,它是不慎重的佔據「Namenode」通過了為多個小文件生成的元數據的不必要量的空間。因此,當在一個單獨文件中的大量的數據,「Namenode」將佔據更少的空間。因此,為獲得最佳的性能,HDFS支持大數據集,而不是多個小文件。

12)什麼是傳統的關係型資料庫和Hadoop之間的基本區別?
傳統的RDBMS是用於交易系統報告和存檔數據,而Hadoop是存儲和處理的分散式文件系統的海量數據的方法。當你想尋求大數據的一個記錄RDBMS將是有益的。因此,當你在一次存儲很大的文件並隨後進行分析,Hadoop將是有益的。

13)解釋HDFS索引過程。
Hadoop的有它自己的索引數據的方式。取決於塊大小,HDFS將繼續存儲數據的最後部分。它還會告訴你數據的下一部分的位置。

14)什麼是「speculative running」在Hadoop中?
如果一個節點出現運行一個任務較慢,主節點可以冗餘另一個節點上執行同一任務的另一實例。這裡,它第一個完成任務的將被接受,而另一個被殺死。這個過程被稱為「speculative running」。

15)你如何在Hadoop集群中實現HA(高可用性)?
您可以設置HA兩種不同的方式;使用Quorum Jounal Manager(QJM),或NFS共享存儲。為了詳細了解這種情況,請閱讀本Edureka博客:http://www.edureka.co/blog/how-to-set-up-hadoop-cluster-with-hdfs-high-availability/

16)為什麼在HDFS,「讀」是並行的,但「寫」不是?
使用的MapReduce程序,該文件可以通過分割成塊被讀取。不過,寫入時MapReduce並行 不能適用。

17)我怎樣才能重新啟動「Namenode」?
點擊stop-all.sh,然後點擊start-all.sh OR

18)如果您在嘗試訪問HDFS或者其相應的文件得到一個「連接被拒絕Java異常"的錯誤會發生什麼?
這可能意味著「Namenode」不工作了。「Namenode」可能是在「安全模式」或「Namenode」的IP地址可能改變了。

19)什麼是「商品硬體」?是否包括內存?
「商品硬體」是一個不具有高品質和高可用性非昂貴的系統。 Hadoop的可安裝在任何一般硬體上。我們不需要超級電腦或高端的硬體來讓Hadoop工作。是的,商品硬體包括RAM,因為有些服務可能仍然在RAM運行內存。

20)什麼是「HDFS塊」和「輸入分片」之間的區別?
「HDFS塊」是數據的基本物理單元,而「輸入分割」是數據的邏輯劃分。

21)什麼是「全分散式」模式的特點是什麼?
「全分散式」模式,在生產環境中使用,在那裡我們有形成Hadoop集群的機器"N"號。 Hadoop守護進程在計算機集群上運行。有一些「的Namenode」運行一台主機,另一台主機上「Datanode」運行,然後有一些「TaskTracker /NodeManager」運行的機器。我們有獨立的主機和從機在這種分布的。

22)Hadoop可以運行在三種模式。
在其中的Hadoop可以運行三種模式為:

1.獨立(本地)模式

2.偽分散式模式

3.完全分散式模式

23)「zookeeper」在Hadoop集群中的作用?
「zookeeper」的目的是集群管理。 「zookeeper」將幫助你實現的Hadoop節點之間的協調。 也有助於:

管理跨節點配置
實現可靠的消息傳遞
實現冗餘服務
同步流程執行
圍繞MapReduce的Hadoop面試問題
24)什麼是「MapReduce的」?
它是一個框架或用於通過使用分散式編程的計算機的集群處理大型數據集的編程模型。

25)什麼是運行「MapReduce的」程序的語法?

Hadoop jar file.jar / input_path / output_path

26)你會如何調試Hadoop的代碼?
有許多方法來調試Hadoop的代碼,但最普遍的方法是:

使用計數器。
利用Hadoop框架所提供的Web界面。

27)「MapReduce的」計劃的主要配置參數?
在「MapReduce的」架構,用戶需要指定這些參數:

在分散式文件系統作業的輸入位置
在分散式文件系統作業的輸出位置
輸入格式
輸出格式
包含「map」功能類
包含「reduce」功能類
28)什麼是「MapReduce的」默認的輸入類型/格式?
默認情況下,MapReduce的類型輸入類型是「文本」。

29)為什麼我們不能在一個映射器進行「聚合」(加法)的原因是什麼?我們為什麼需要這個了「reduce」?
因為排序不在「mapper」中發生。排序僅在reducer側發生。在「mapper」的方法初始化取決於每個輸入。在「聚合」時,我們將失去以前的實例的值。對於每一行,一個新的「mapper」將得到初始化。對於每一行,input split再次被分為「mapper」。因此,我們不能跟蹤前一行的值。

30)Hadoop中「RecordReader」的目的是什麼?
在「InputSplit」定義工作片,但並沒有描述如何訪問它。的「RecordReader」級從其源載入數據,並將其轉換成適合於「mapper」讀的(鍵,值)對。「RecordReader」實例是由「輸入格式」中定義。

31)在「MapReduce框架」解釋「分散式緩存」
「分散式緩存」,是由「MapReduce框架」提供了一個重要特徵。當你想在Hadoop集群共享跨多個節點的文件,「分散式緩存」便會被用到。這些文件可以以可執行的「jar」文件或簡單的「屬性」文件駐留。

看看這個Edureka博客網路研討會記錄與MapReduce的分散式緩存:http://www.edureka.co/blog/distributed-cache-with-mapreduce

32)「Hadoop框架」提供應用程序的運行時同步在「分配緩存」所做的更改時採取什麼樣的策略?
這是一個棘手的問題。不存在這樣的機制。 「分散式緩存」的設計是在作業執行時間「只讀」。

33)「reducer」之間如何互相溝通?
這又是一個棘手的問題。在「MapReduce的」編程模型不允許「reducer」相互溝通。 「reducer」單獨運行。
加入數據是Hadoop的最有吸引力的方面之一。組織數據與「減少不良加入」微風。要了解更多信息,做檢查出這個博客Edureka以「減少不良網路研討會錄音加盟的MapReduce:http://www.edureka.co/blog/reduce-side-joins-with-mapreduce

34)什麼是一個「MapReduce的分區」?
「MapReduce的分區」可以確保同一個key的所有值去到同一個「reducer」,從而允許「reducer」對應的map輸出的平均分布。它通過確定哪個「reducer」是負責該特定鍵從而把map輸出重定向給reducer。

35)什麼是「combiner」?
「combiner」是一個小型的「reducer」,執行本地的「reduce」任務。它接收從一個特定的「節點」上的map輸入並把輸出發送到「reducer」。通過減少所需發送到reducer的數據量增強「MapReduce的」效率。

36)你知道什麼關於「SequenceFileInputFormat」?
「SequenceFileInputFormat」是序列文件內讀取輸入格式。鍵和值是用戶定義的。它是被一個「MapReduce的」作業的輸出之間傳遞數據到一些其他的「MapReduce的」作業的輸入優化的特定壓縮二進位文件格式。

圍繞Hadoop的Pig面試問題
37)什麼是「Bag」?
Bag是「Pig」的數據模型之一。這是可能出現的重複元組的無序集合。 「包」在分組時用於存儲集合。 Bag的大小是本地磁碟大小,這意味著「bag」的大小是有限的大小。當一個「bag」是滿的,「Pig」將這個「bag」放到本地磁碟,只保留「bag」的某些部分在內存中。這是沒有必要的完整「bag」裝配到存儲器。我們代表用「{}」代表bag。

38)什麼是「FOREACH」?
「FOREACH」用於轉換數據,併產生新的數據項。名稱本身表示為數據「bag」的各要素,將執行相應的動作。

語法:FOREACH bagname GENERATE表達式,表達式,... ..

這句話的意思是,經過提到的表達式「生成」將應用於數據「bag」當前記錄。

39)為什麼我們需要在「pig」規劃「的MapReduce」?
「pig」是一個高層次的平台,Hadoop的數據分析問題,更容易執行。我們使用這個平台的語言是「pig拉丁」。寫在「pig拉丁」程序就像是寫在SQL,這裡我們需要執行引擎來執行查詢的查詢。所以,當一個程序是用「隱語」,「pig編譯器」可將程序轉換成「MapReduce的」工作。在這裡,「MapReduce的」充當執行引擎。

40)pig中的co-group是什麼?
「co-group」通過分組來連接數據。這組需要他們有共同的域的元素,然後返回一組包含兩個獨立的「bag」的記錄。第一個「bag」包括從第一數據與公共數據集記錄集,而第二個「bag」包括從所述第二數據集與公共數據集設定記錄。

41)什麼是「豬拉丁」不同的關係操作?
他們是:

i. for each

ii. order by

iii. filters

iv. group

v. distinct

vi. join

vii. limit

Hive相關Hadoop的面試問題
42)什麼是Hive中的「SERDE」?
通過「SERDE」你可以讓「Hive」來處理記錄。「SERDE」是一種「串列」和一個「解串器」的組合。 「hive」使用「SERDE」(和「FILEFORMAT」)來讀取和寫入錶行。

43)可以默認的hive Metastore」被多個用戶(進程)在同一時間使用?
「Derby資料庫」是默認的「hive Metastore」。多個用戶(進程)不能在同一時間訪問它。它主要用於執行單元測試。

44)「hive」存儲表中的數據的默認位置是?
HDFS://NameNode/用戶/hive/warehouse

45)Hive中什麼是通用的UDF?
這是使用Java程序來服務一些具體根據現行的功能不需要覆蓋「hive」創建UDF。它可以通過編程方式檢測輸入參數的類型,並提供適當的響應。

圍繞Hadoop的Oozie的面試問題
46)你如何配置Hadoop的一個「Oozie的」工作?
「Oozie的」集成了Hadoop的堆棧支持多種類型的Hadoop作業,如「Java的MapReduce的」,「流MapReduce」,「pig」,「hive」和「Sqoop」中的其餘部分。要了解「Oozie的」在細節和了解如何配置AM「Oozie的」工作,做檢查出這個博客Edureka:http://www.edureka.co/blog/brief-introduction-to-oozie/

圍繞Hadoop的Sqoop面試問題
47)解釋在Hadoop中「Sqoop」。
「Sqoop」是用於一個RDBMS並在Hadoop HDFS之間傳送數據的一種工具。使用「Sqoop」,數據可以從一個RDBMS(如MySQL或Oracle)插入HDFS以及從HDFS文件RDBMS出口數據傳輸。

圍繞Hadoop的HBase的面試問題
48)解釋hbase中的「WAL」和「Hlog」
「WAL」(預寫日誌)是類似於「MySQL的BIN」登錄;它記錄中發生的數據的所有更改。它是Hadoop中「HLogkeys」標準序列文件。這些密鑰由一個序列號,以及實際數據,並用於重播尚未在伺服器崩潰後保留的數據。所以,在伺服器發生故障的情況下,「WAL」作品作為生命線和檢索丟失的數據。

49)提起「HBase的」和「關係型資料庫」之間的區別是什麼?
HBase的和關係型的資料庫-TOP-50-Hadoop的採訪,問題

圍繞spark Hadoop的面試問題
50)你能在任何特定的Hadoop版本和hbase建立spark嗎?
是的,你可以建立「spark」為特定的Hadoop版本。看看這個Edureka博客了解詳情:http://www.edureka.co/blog/yarn-hive-get-electrified-by-spark/


歡迎訪問網站:http://www.qiqur.cn

歡迎關注微信號:奇趣兒beta

歡迎掃描二維碼:

http://weixin.qq.com/r/1DgkPBTEVUkqrVBf923G (二維碼自動識別)


按照淘寶購買習慣形成的資料庫記錄分析人地位能完成的演算法能完成,就可以勝任多數工作了吧


1、Hadoop集群可以運行的3個模式分別是什麼, 都有哪些注意點?

  單機(本地)模式:這種模式在一台單機上運行,沒有分散式文件系統,而是直接讀寫本地操作系統的文件系統。在單機模式(standalone)中不會存在守護進程,所有東西都運行在一個JVM上。這裡同樣沒有DFS,使用的是本地文件系統。單機模式適用於開發過程中運行MapReduce程序,這也是最少使用的一個模式。

  偽分散式模式:也是在一台單機上運行,但用不同的Java進程模仿分散式運行中的各類結點(NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode),偽分散式(Pseudo)適用於開發和測試環境,在這個模式中,所有守護進程都在同一台機器上運行。

  全分散式模式:全分布模式通常被用於生產環境,使用N台主機組成一個Hadoop集群,Hadoop守護進程運行在每台主機之上。這裡會存在Namenode運行的主機,Datanode運行的主機,以及task tracker運行的主機。在分散式環境下,主節點和從節點會分開。

2、VM是否可以稱為Pseudo

不是,兩個事物,同時Pseudo只針對Hadoop。
當Job Tracker宕掉時,Namenode會發生什麼?

當Job Tracker失敗時,集群仍然可以正常工作,只要Namenode沒問題。
是客戶端還是Namenode決定輸入的分片?

這並不是客戶端決定的,在配置文件中以及決定分片細則。

3、是否可以在Windows上運行Hadoop?

可以,但是最好不要這麼做,Red Hat Linux或者是Ubuntu才是Hadoop的最佳操作系統。

4、Hadoop是否遵循UNIX模式?

是的,在UNIX用例下,Hadoop還擁有「conf」目錄。

5、Hadoop安裝在什麼目錄下?

Cloudera和Apache使用相同的目錄結構,Hadoop被安裝在&cd/usr/lib/hadoop-0.20/&。當然,我們還可以自定義安裝目錄。

6、Namenode、ResourceManager的默認埠號是?

Namenode:50070;ResourceManager:8088。

7、Hadoop的核心配置是什麼?

Hadoop現在擁有3個配置文件:1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。這些文件都保存在conf/子目錄下。

8、RAM的溢出因子是?

溢出因子(Spill factor)是臨時文件中儲存文件的大小,也就是Hadoop-temp目錄。

9、fs.mapr.working.dir只是單一的目錄?

fs.mapr.working.dir只是一個目錄。

10、hdfs-site.xml的3個主要屬性?

· dfs.name.dir決定的是元數據存儲的路徑以及DFS的存儲方式(磁碟或是遠端)

· dfs.data.dir決定的是數據存儲的路徑

· fs.checkpoint.dir用於第二Namenode

11、如何退出輸入模式?

退出輸入的方式有:1,按ESC;2,鍵入:q(如果你沒有輸入任何當下)或者鍵入:wq(如果你已經輸入當下),並且按下Enter。
當你輸入hadoopfsck /造成「connection refused java exception』」時,系統究竟發生了什麼?

這意味著Namenode沒有運行在你的VM之上。
我們使用Ubuntu及Cloudera,那麼我們該去哪裡下載Hadoop,或者是默認就與Ubuntu一起安裝?

這個屬於Hadoop的默認配置,你必須從Cloudera或者Edureka的dropbox下載,然後在你的系統上運行。當然,你也可以自己配置,但是你需要一個Linux box,Ubuntu或者是Red Hat。在Cloudera網站或者是Edureka的Dropbox中有安裝步驟。

12、「jps」命令的用處?

這個命令可以檢查Namenode、Datanode、Task Tracker、 Job Tracker是否正常工作。

13、如何重啟Namenode?

點擊stop-all.sh,再點擊start-all.sh。
鍵入sudo hdfs(Enter),su-hdfs (Enter),/etc/init.d/ha(Enter),及/etc/init.d/hadoop-0.20-namenode start(Enter)。

14. Fsck的全名?

全名是:File System Check。

15、如何檢查Namenode是否正常運行?

如果要檢查Namenode是否正常工作,使用命令/etc/init.d/hadoop-0.20-namenode status或者就是簡單的jps。
mapred.job.tracker命令的作用?

可以讓你知道哪個節點是Job Tracker。

16、/etc /init.d命令的作用是?

/etc /init.d說明了守護進程(服務)的位置或狀態,其實是LINUX特性,和Hadoop關係不大。

17、如何在瀏覽器中查找Namenode?

如果你確實需要在瀏覽器中查找Namenode,你不再需要localhost:8021,Namenode的埠號是50070。

18、如何從SU轉到Cloudera?

從SU轉到Cloudera只需要鍵入exit。

19、啟動和關閉命令會用到哪些文件?

Slaves及Masters。

20、Slaves由什麼組成?

Slaves由主機的列表組成,每台1行,用於說明數據節點。

21、Masters由什麼組成?

Masters同樣是主機的列表組成,每台一行,用於說明第二Namenode伺服器。

22、hadoop-env.sh是用於做什麼的?

hadoop-env.sh提供了Hadoop中. JAVA_HOME的運行環境。

23、Master文件是否提供了多個入口?

是的你可以擁有多個Master文件介面。

24、hadoop-env.sh文件當下的位置?

hadoop-env.sh現在位於conf。

25、在Hadoop_PID_DIR中,PID代表了什麼?

PID代表了「Process ID」。

26、/var/hadoop/pids用於做什麼?

/var/hadoop/pids用來存儲PID。

27、hadoop-metrics.properties文件的作用是?

hadoop-metrics.properties被用做「Reporting」,控制Hadoop報告,初始狀態是「not to report」。

28、Hadoop需求什麼樣的網路?

Hadoop核心使用Shell(SSH)來驅動從節點上的伺服器進程,並在主節點和從節點之間使用password-less SSH連接。

29、全分散式環境下為什麼需求password-less SSH?

這主要因為集群中通信過於頻繁,Job Tracker需要儘可能快的給Task Tracker發布任務。

30、password-less SSH會導致安全問題嗎?

完全不用擔心。Hadoop集群是完全隔離的,通常情況下無法從互聯網進行操作。與眾不同的配置,因此我們完全不需要在意這種級別的安全漏洞,比如說通過互聯網侵入等等。Hadoop為機器之間的連接提供了一個相對安全的方式。

31、SSH工作的埠號是?

SSH工作的埠號是NO.22,當然可以通過它來配置,22是默認的埠號。

31、SSH中的注意點還包括?

SSH只是個安全的shell通信,可以把它當做NO.22上的一種協議,只需要配置一個密碼就可以安全的訪問。

32、為什麼SSH本地主機需要密碼?

在SSH中使用密碼主要是增加安全性,在某些情況下也根本不會設置密碼通信。

33、如果在SSH中添加key,是否還需要設置密碼?

是的,即使在SSH中添加了key,還是需要設置密碼。

34、假如Namenode中沒有數據會怎麼樣?

沒有數據的Namenode就不能稱之為Namenode,通常情況下,Namenode肯定會有數據。

歡迎關注大數據技術博客:過往記憶
歡迎關注大數據技術微信公共帳號:iteblog_hadoop

http://weixin.qq.com/r/z0OWjpLENc9Krdbt9xbd (二維碼自動識別)


java是必須要學習的。否則很多東西在後續開發的時候會遇到很多麻煩的地方。
先學習java基礎就可以。
另外linux也是需要的,環境變數等等概念還是要知道的,基本命令也要會一些。
推薦幾本書:
java基礎:java核心技術 兩本
hadoop:hadoop實戰
Hadoop核心系統原理 http://www.kokojia.com/xitongyunwei/video22625-1250.html這個鏈接裡面內容挺好的,有興趣的可以看看,說不定對你有所幫助。


Java/RPC/Hadoop/Linux/HBase/Sqoop/Hive/

其他的根據需要去學習。


加入群大數據hadoop、openstack 群號216318576,hadoop工程師們都進來交流交流啊


受教了。


貌似很全面,先收了。最近準備看看。


推薦閱讀:

現在還有必要學習五筆嗎?
如何戒掉三國殺?
學習精神分析存在哪些困難?
圖書館是一種資源浪費嗎?
明知道不會有結果或者能成功的事,堅持下去是否還有意義?

TAG:學習 | 面試 | Hadoop | 面試技巧 | 面試問題 |