大數據面試題(一)

1.  列舉出Hadoop中定義的最經常使用的InputFormats,那個是默認的?java

TextInputFormat(默認)用於讀取純文本文件,key是每一行的位置偏移量,是LongWritable類型的,value是每一行的內容,爲Text類型 KeyValueTextInputFormat 一樣用於讀取文件,若是行被分隔符(缺省是tab)分割爲兩部分,第一部分爲key,剩下的部分 爲value;若是沒 有分隔符,整行做爲 key,value爲空 SequenceFileInputFormat 用於讀取sequence file。 sequence file是Hadoop用於存儲數據自定義格式的binary文件。它有 兩個子類: SequenceFileAsBinaryInputFormat,將 key和value以BytesWritable的類型讀出;SequenceFileAsTextInputFormat,將key和value以Text類型讀出node

2..TextInputFormat和KeyValueInputFormat類不一樣之處在於哪裏?mysql

答:TextInputFormat讀取文本文件中的全部行,提供了行的偏移做爲Mapper的鍵,實際的行做爲 mapper的值。 KeyValueInputFormat讀取文本文件,解析全部行到中,首個空格前的字符是mapper的key,行的其他部分則是mapper的值面試

3. Hadoop中InputSplit是什麼? 算法

答:InputSplit是指分片,在MapReduce做業中,做爲map task最小輸入單位。分片是基於文件基礎上出來的概念,通俗的理解一個文件可 以切分爲多少個片斷,每一個片斷包括了等信息。在 MapTask 拿到這些分片後,會知道從哪開 始讀取數據。sql

4. Hadoop框架中文件拆分是如何被觸發的?shell

  答:經過運行輸入格式類中的getInputSplit()方法。 數據庫

5. 考慮一種狀況:Map/Reduce系統中,HDFS塊大小是64MB,輸入格式FileInputFormat,有三個文件64K,65MB,127MB, 那麼有hadoop框架會將 輸入劃分紅多少?編程

 答:hadoop將會作5個拆分,64K文件拆分1個,65MB文件拆分2個,127MB文件拆分2個。 設計模式

6. hadoop中的RecordReader的目的是什麼?

 1)以怎樣的方式從分片中讀取一條記錄,每讀取一條記錄都會調用RecordReader類;

  2)系統默認的RecordReader是LineRecordReader,如TextInputFormat;而SequenceFileInputFormat的RecordReader是SequenceFileRecordReader;

  3)LineRecordReader是用每行的偏移量做爲map的key,每行的內容做爲map的value;

  4)應用場景:自定義讀取每一條記錄的方式;自定義讀入key的類型,如但願讀取的key是文件的路徑或名字而不是該行在文件中的偏移量。 系統默認的LineRecordReader是按照每行的偏移量作爲map輸出時的key值,每行的內容做爲map的value值,默認的分隔符是 回車和換行。 如今要更改map對應的輸入的值,key對應的文件的路徑(或者是文件名),value對應的是文件的內容 (content)。 那麼咱們須要重寫InputFormat和RecordReader,由於RecordReader是在InputFormat中調用的,固然重寫RecordReader纔是重點!

7. 若是hadoop中沒有定義定製分區,那麼如何在輸出到reduce前執行數據分區? Partitioner /override getPartition()

   答:默認的分區器爲各個鍵計算一個哈希值,並分配給基於這個結果的分區。

8. 什麼是Combiner?舉個例子,何時使用combiner,何時不用?

答:當map生成的數據過大時,帶寬就成了瓶頸,怎樣精簡壓縮傳給Reduce的數據,有不影響最終的結果呢。有一種方法就是使 用 Combiner,Combiner號稱本地的Reduce,Reduce最終的輸入,是Combiner的輸出 Combiner的做用是把一個map產生的多個合併成一個新的,而後再將新的做爲reduce的輸入; 在map函數與reduce函數之間多了一個combine函數,目的是爲了減小map輸出的中間結果,這樣減小了reduce複製map輸出的數據,減小網絡 傳輸負載; 並非全部狀況下都能使用Combiner,Combiner適用於對記錄彙總的場景(如求和),可是,求平均數的場景就不能使用Combiner了。若是能夠 使用Combiner,通常狀況下,和咱們的reduce函數是一致的。

9. 什麼是jobtracker? jobtracker有哪些特別的函數?

 答:

1,  JobTracker是整個MapReduce計算框架中的主服務,至關於集羣的「管理者」,負責整個集羣的做業控制和資源管理  

2,  main()函數

10. 什麼是tasktracker?

TaskTracker是JobTracker和Task之間的橋樑:一方面,從JobTracker接收並執行各類命令:運行任務、提交任務、殺死任務 等;另外一方面,將本地節點上各個任務的狀態經過心跳週期性彙報給JobTracker。TaskTracker與JobTracker和Task之間採用了 RPC協議進行通訊。

11. hadoop中job和task之間是什麼關係?

  概述:

 (1)Hadoop MapReduce採用Master/Slave結構。

*Master:是整個集羣的惟一的全局管理者,功能包括:做業管理、狀態監控和任務調度等,即MapReduce中的JobTracker。

 *Slave:負責任務的執行和任務狀態的回報,即MapReduce中的TaskTracker。

JobTracker剖析:

 (1)概述:JobTracker是一個後臺服務進程,啓動以後,會一直監聽並接收來自各個TaskTracker發送的心跳信息,包括資源使用 狀況和任務運行狀況等信息。

 (2)JobTracker的主要功能:

 1.做業控制:在hadoop中每一個應用程序被表示成一個做業,每一個做業又被分紅多個任務,JobTracker的做業控制模塊則負責做業 的分解和狀態監控。

 *最重要的是狀態監控:主要包括TaskTracker狀態監控、做業狀態監控和任務狀態監控。主要做用:容錯和爲任務調度提供決 策依據。

2.資源管理。

  TaskTracker剖析:

 (1)TaskTracker概述:TaskTracker是JobTracker和Task之間的橋樑:一方面,從JobTracker接收並執行各類命令:運行任務、提交 任務、殺死任務等;另外一方面,將本地節點上各個任務的狀態經過心跳週期性彙報給JobTracker。TaskTracker與JobTracker和 Task之間採用了RPC協議進行通訊。

(2)TaskTracker的功能:

1.彙報心跳:Tracker週期性將全部節點上各類信息經過心跳機制彙報給JobTracker。這些信息包括兩部分:

 *機器級別信息:節點健康狀況、資源使用狀況等。

 *任務級別信息:任務執行進度、任務運行狀態等。

2.執行命令:JobTracker會給TaskTracker下達各類命令,主要包括:啓動任務(LaunchTaskAction)、提交任務 (CommitTaskAction)、殺死任務(KillTaskAction)、殺死做業(KillJobAction)和從新初始化(TaskTrackerReinitAction)。

12. 假設hadoop一個job產生了100個task, 而且其中的一個task失敗了,hadoop會如何處理?

hadoop自己的一個設計理念就是在普通的pc硬件上構建高可靠性的系統,任何failed task都不會引發整個job的失敗,由於全部失敗的任務 都會被從新執行(reschedule execution),只有當從新執行的次數超過4次,纔會把這任務標記爲失敗,致使整個job的失敗。

13. 經過劃分多個節點上任務,hadoop實現了並行處理,對少數慢節點可能會限制剩下其餘程序的 速率,並拖慢了整個程序。hadoop提供了什麼機制防止這種狀況的發生? speculative execution。舉個簡單的例子,若是某個job有2000個map task,已經完成了1999個,只剩下一個task因爲硬件比較慢而成爲拖尾 任務,爲了減小拖尾任務對整個job運行時間的影響,jobtracker會從新啓動一個如出一轍的duplicate task和原有的task並行的執行,這樣有一 個task執行成功,整個map過程就會結束。speculative execution(推測執行)只有個處理拖尾任務的優化策略,並不能提升系統的可靠性

14. hadoop推測執行是如何實現的?

 答:Hadoop會爲該task啓動備份任務,讓speculative task與原始task同時處理一份數據,哪一個先運行完,則將誰的結果做爲最終結果,而且在 運行完成後Kill掉另一個任務。

15. Unix中使用命令行,如何查看hadoop集羣中的全部運行的任務?或是kill掉任務?

 jps

16. 什麼是hadoop streming?

答:Haoop支持用其餘語言來編程,須要用到名爲Streaming的通用API, Streaming主要用於編寫簡單,短小的MapReduce程序,能夠經過腳 本語言編程,開發更快捷,並充分利用非Java庫

17. 解釋hadoop和hadoop生態系統兩個概念

 答:Hadoop是一個可以對大量數據進行分佈式處理的軟件框架,Hadoop的核心是HDFS和Mapreduce,hadoop2.0還包括YARN hadoop生態系統:包含 HDFS mapreduce hive hbase zookeeper sqoop flume pig mahout

 18. 說明hadoop2.0的基本構成

 HDFS

 MapReduce

 YARN

 19. 相比於HDFS1.0. 2.0最主要的改進在哪幾個方面?

 引入一個新的資源管理系統YARN

 HDFS單點故障得以解決

 Hadoop 2.0的最大變化出如今內核(HDFS、MapReduce和YARN)

20. 試使用步驟1,步驟2,步驟3.……說明YARN中運行應用程序的基本流程

步驟1 用戶向YARN中提交應用程序,其中包括ApplicationMaster程序、啓動ApplicationMaster的命令、用戶程序等。

步驟2 ResourceManager爲該應用程序分配第一個Container,並與對應的Node-Manager通訊,要求它在這個Container中啓動應用程序的 ApplicationMaster。

步驟3 ApplicationMaster首先向ResourceManager註冊,這樣用戶能夠直接經過ResourceManage查看應用程序的運行狀態,而後它將爲各 個任務申請資源,並監控它的運 行狀態,直到運行結束,即重複步驟4~7。

步驟4 ApplicationMaster採用輪詢的方式經過RPC協議向ResourceManager申請和領取資源。

步驟5 一旦ApplicationMaster申請到資源後,便與對應的NodeManager通訊,要求它啓動任務Task。

步驟6 NodeManager爲任務Task設置好運行環境(包括環境變量、JAR包、二進制程序等)後,將任務啓動命令寫到一個腳本中,並經過 運行該腳本啓動任務Task。

步驟7 各個任務Task經過某個RPC協議向ApplicationMaster彙報本身的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀 態,從而能夠在任務失敗時從新啓動任務。 在應用程序運行過程當中,用戶可隨時經過RPC向ApplicationMaster查詢應用程序的當前運行狀態。

步驟8 應用程序運行完成後,ApplicationMaster向ResourceManager註銷並關閉本身。 10. MapReducer2.0與Yarn是否等同,嘗試解釋說明。

21. MapReducer2.0中, MRAppMaster主要做用是什麼,MRappMaster如何實現任務容錯的?

22. 什麼是MRAppMaster?

咱們知道,在MRv1中,JobTracker存在諸多問題,包括存在單點故障,擴展受限等,爲了解決這些問題,Apache對MRv1進行了改進,提 出了YARN,YARN將JobTracker中的做業控制和資源管理兩個功能分開,分別由兩個不一樣的進程處理,進而解決了原有JobTracker存在的問 題。通過架構調整以後,YARN已經徹底不一樣於MRv1,它已經變成了一個資源管理平臺,或者說應用程序管理框架。運行於YARN之上的計 算框架不僅限於MapReduce一種,也能夠是其餘流行計算框架,好比流式計算、迭代式計算等類型的計算框架。爲了將一個計算框架運行於 YARN之上,用戶須要開發一個組件—ApplicationMaster。做爲一個開始,YARN首先支持的計算框架是MapReduce,YARN爲用戶實現好了 MapReduce的ApplicationMaster,也就是本文要介紹了MRAppMaster。

23. 相比於JobTracker,MRAppMaster有什麼不一樣?

既然MRAppMaster是由JobTracker衍化而來的,那麼是否將JobTracker的代碼稍加修改,就變成了MRAppMaster呢,答案是否認的。事實 上,YARN僅重用了MRv1中的少量代碼,基本可看作重寫了MRAppMaster。

YARN採用了新的軟件設計思想,包括對象服務化、事件驅動的異步編程模型的。做爲YARN的一部分,MRAppMaster的實現也採用了這 些設計思想。

下面簡要介紹一下MRAppMaster的實現細節 

在正式介紹MRAppMaster以前,咱們先回顧一下MRv1的實現。咱們都知道,MRv1主要由兩種服務組成,即:JobTracker和TaskTracker, 而在YARN中,TaskTracker已經由NodeManager代替,所以,咱們在此重點分析JobTracker。JobTracker包含資源管理和做業控制兩個功能, 在YARN中,做業管理由ResourceManager實現,所以,只剩下做業控制這一個功能(由MRAppMaster實現)。MRv1中每一個做業由一個 JobInProgress控制,每一個任務由一個TaskInProgress控制,因爲每一個任務可能有多個運行實例,所以,TaskInProgress實際管理了多個運行實 例Task Attempt,對於每一個運行實例,可能運行了一個MapTask或者ReduceTask,另外,每一個Map Task或者Reduce Task會經過RPC協議將狀態 彙報給TaskTracker,再由TaskTracker進一步彙報給JobTracker 在MRAppMaster中,它只負責管理一個做業,包括該做業的資源申請、做業運行過程監控和做業容錯等。MRAppMaster使用服務模型和 事件驅動的異步編程模型對JobInProgress和TaskInProgress進行了重寫(分別對應JobImpl和TaskImpl),並讓Map Task和Reduce Task(Map Task和Reduce Task重用了MRv1中的代碼)直接經過RPC將信息彙報給MRAppMaster。此外,爲了可以運行於YARN之上,MRAppMaster還要 與ResourceManager和NodeManager兩個新的服務通訊(用到兩個新的RPC協議),以申請資源和啓動任務,這些都使得MRAppMaster徹底不一樣於JobTracker。

24. 爲何會產生yarn,它解決了什麼問題。有什麼優點?

25. job的運行流程(提交一個job的流程)

 

job的執行流程以下: dataInput- >split- >Mapper- >Combine- >(產出臨時數據)-->Partition- >Sort- >Reducer- >最終數據

26. hadoop生態圈中各類框架的運用場景

27. hive中的壓縮格式RCFile.TextFile.SequenceFile各有什麼區別,以上三種格式同樣大的文件哪一個佔用空間大小

 textfile(默認) 存儲空間消耗比較大,而且壓縮的text 沒法分割和合並 查詢的效率最低,能夠直接存儲,加載數據的速度最高 sequencefile 存儲空間消耗最大,壓縮的文件能夠分割和合並 查詢效率高,須要經過text文件轉化來加載 rcfile 存儲空間最小,查詢的效率最高 ,須要經過text文件轉化來加載,加載的速度最低

28. hadoop中的一個HA壓縮

29. Flume收集到的數據不少個小文件,我而要寫MR處理時將這些文件合併(是在MR中進行優化 ,不讓一個小文件一個MapReduce)

30. 大家的集羣規模?

 開發集羣:10臺(8臺可用)8核cpu

31. 大家的數據是用什麼導入到數據庫的?導入到什麼數據庫?

處理以前的導入:經過hadoop命令導入到hdfs文件系統 處理完成以後的導出:利用hive處理完成以後的數據,經過sqoop導出到mysql數據庫中,以供報表使用

32. 大家的業務數據量多大?有多少行數據?(面試三家,都問)

 開發時使用的是部分數據,不是全量數據。有將近一億行(8. 9千萬吧, 全體不詳, 通常開發不是特別關心這個問題)

33. 大家處理數據是直接讀數據庫的數據仍是讀文本數據?

 將日誌數據導入到hdfs以後時行處理

34. 大家寫hive的hql語句,大概有多少條?

 不清楚,我本身寫的時候也沒統計

35. 大家提交job任務大概有多少個?這些job執行完成大概用多少時間(都問。)

 沒統計過。加上測試的會不少

36. hive跟hbase的區別是?

37. 你在項目中主要的工做任務是?

利用hive分析數據

38. 你在項目遇到了哪些難題。是怎麼解決的?

 某些任務執行時間過長, 且失敗率太高。 檢查日誌後發現沒有執行完就失敗,緣由出在 hadoop的job的timout太短(相對於集羣的能力來講)設置長一點就行

39. 你本身寫過udf函數麼?寫了哪些

40. 你的項目提交到job的時候數據量有多大?(常問)

41. reduce後輸出的數據量有多大?

42. 一個網絡商城1天大概產生多少G日誌?4tb

43. 大概有多少條日誌記錄

44. 日訪問大概有多少個?百萬

45. hdfs的 client端,複製到第三個副本時宕機,hdfs怎麼恢復下次寫第三副本?block塊信息是先寫 dataNode仍是先寫nameNode?

46. 快排現場寫程序實現?

47. jvm的內存是怎麼分配原理?

48. 毒酒問題---1000桶酒,其中1桶有毒,而一旦吃了,毒性會在一週後發做。問最少須要多少隻 老鼠可在一週內找出毒酒?

49. 用棧實現隊列?

50. 鏈表倒序實現?

51. 多線程模型怎麼(生產,消費者)? 平時併發多線程都用哪些實現方式?

52. synchronized是同步悲觀鎖嗎?互斥?怎麼寫同步提升效率?

 synchronized 關鍵字至關於 lock(M.class), 是將整個對象鎖住,爲提升效率,可使用讀寫鎖

53. 4億個數字,找出哪些是重複的,要用最小的比較次數,寫程序實現

54. java是傳值仍是傳址?

55. java處理多線程,另外一線程一直等待?

56. 在線安裝ssh的命令以及文件解壓的命令?

57. 把公鑰都追加到受權文件的命令?該命令是否在root用戶下執行?

58. HadoopHA集羣中各個服務啓動和關閉的順序?

59. HDFS中的block塊默認保存幾份?默認大小多少?

60. NameNode中的meta數據是存放在NameNode自身仍是datanode等其它節點.DataNode節點自身是否有meta數據存在?

61. 下列哪一個程序一般與NameNode在一個節點啓動?

62. 下面哪一個程序負責HDFS數據存儲?

63. 在Hadoop HA集羣中Zookeeper 的主要做用,以及啓動和查看狀態的命令?

sh bin/zkServer.sh start sh bin/zkServer.sh status

64. HBase在進行模型設計進重點在什麼地方?一張表中定義多少個Colum family最合適?爲何?

65. 如何提升HBase客戶端的讀寫性能?請舉例說明。

66. 基於Hadoop HA集羣記性MapReduce開發時,Configuration 如何設置hbase.zookeeper.quorum屬性的值?

67. 在hadoop開發過程當中使用過哪些算法?其應用場景是什麼?

68. MapReduce程序如何發佈?若是MapReduce中涉及到了第三方的jar包,該如何處理 14. 在實際工做中使用過哪些運維工具,請分別闡述其做用。

69. hadoop中combiner的做用?

70. IO的原理。IO模型有幾種?

71. Windows用什麼樣的模型,Linux用什麼樣的模型?

72. 一臺機器如何應對那麼多的請求訪問。高併發到底怎麼實現,一個請求怎麼產生的。 在服務端怎麼處理的。最後怎麼返回給用戶的。整個的環節操做系統是怎麼控制的?

73. 以你的實際經驗,說下怎麼樣預防全表掃描

74. 網絡七層協議

76. 集合HashTable和HashMap的區別

1.HashTable的方法是同步的,HashMap未經同步

2.HashTable不容許null值(key和value都不能夠),HashMap容許null值(key和value均可以)。

77.zookeeper優勢,用在什麼場合

78.HBase中的metastore用來作什麼的

 79java優點及緣由

 80. jvm優化

 81寫一個冒泡排序

82. hadoop底層存儲設計

83. 文件大小默認64M,改成128有啥影響

 84. RPC原理

85. NameNode與SecondaryNameNode的區別與聯繫

 86. 介紹MapReduce整個過程.好比把WordCount的例子的細節講清楚(重點講shuffle)

 87. 對Hadoop有沒有調優經驗.有沒有什麼使用心得(調優從參數調優提及)

 88. MapReduce出現單點負載過大,怎麼負載平衡?(能夠用Partioner)

89. 說說值與引用對象的區別

90. 談談你對反射機制的理解及用途

91. ArrayList, Vector, LinkdList的區別及其優缺點?HashMap,HashTable的區別及其優缺點?

 92. 列出線程的實現方式? 如何實現同步

 93. 列出至少5種設計模式? 用代碼或UML類圖描述其中用到的技術難點及其解決思路

 94. 談談你最近正在研究的技術.談談你最近項目中用到的技術難點及其解決思路

 95. hdfs中的block默認保存幾份?

 96. 哪一個程序一般與nn在一個節點啓動 Jobtracker

 97. 列舉幾個配置文件優化?

98. 寫出你對zookeeper的理解

99. DataNode首次加入cluster的時候,若是log報告不兼容文件版本.那須要NameNode執行格式化操做,這樣處理的緣由是?

100. 談談數據傾斜,如何發生的.並給出優化方案 可以想到的關於數據傾斜的一些解決方式(歡迎補充,尤爲是有沒有作搜索或者數據挖掘的朋友有碰到相似問題):

1. 增長reduce 的jvm內存

2. 增長reduce 個數

3.customer partition

4. 其餘優化的討論.

5. reduce sort merge排序算法的討論

6. 正在實現中的hive skewed join.

7. pipeline

8. distinct

9. index 尤爲是bitmap index

101. 介紹一下HBase過濾器

 HBase爲篩選數據提供了一組過濾器,經過這個過濾器能夠在HBase中的數據的多個維度(行,列,數據版本)上進行對數據的篩選操 做,也就是說過濾器最終可以篩選的數據可以細化到具體的一個存儲單元格上(由行鍵,列明,時間戳定位)。一般來講,經過行鍵,值 來篩選數據的應用場景較多。

1. RowFilter:篩選出匹配的全部的行,對於這個過濾器的應用場景,是很是直觀的:使用BinaryComparator能夠篩選出具備某個行鍵的行, 或者經過改變比較運算符(下面的例子中是CompareFilter.CompareOp.EQUAL)來篩選出符合某一條件的多條數據,如下就是篩選出行鍵爲 row1的一行數據:

2. PrefixFilter:篩選出具備特定前綴的行鍵的數據。這個過濾器所實現的功能其實也能夠由RowFilter結合RegexComparator來實現,不過這 裏提供了一種簡便的使用方法,如下過濾器就是篩選出行鍵以row爲前綴的全部的行:

 3. KeyOnlyFilter:這個過濾器惟一的功能就是隻返回每行的行鍵,值所有爲空,這對於只關注於行鍵的應用場景來講很是合適,這樣忽略 掉其值就能夠減小傳遞到客戶端的數據量,能起到必定的優化做用

4. RandomRowFilter:從名字上就能夠看出其大概的用法,本過濾器的做用就是按照必定的概率(<=0會過濾掉全部的行,>=1會包含全部的 行)來返回隨機的結果集,對於一樣的數據集,屢次使用同一個RandomRowFilter會返回不通的結果集,對於須要隨機抽取一部分數據的應 用場景,可使用此過濾器:

 102. MapReduce基本執行過程

103. 談談hadoop2和hadoop2的區別

104. HBase集羣安裝注意事項

105. 記錄包含值域F和值域G.要別統計相同G值的記錄中不一樣的F值的數目,簡單編寫過程

106. HDFS原理.以及各個模塊的職責

107. MR的工做原理

108. map方法是如何調用reduce方法的.

109. shell如何判斷文件是否存在.若是不存在該如何處理

108. fsimage和edit的區別

109. DataNode在什麼狀況下不會備份

110. hdfs體系結構

111. flush的過程  

112. hadoop集羣搭建過程.寫出步驟

113. hadoop集羣運行過程當中啓動哪些線程.各自的做用是什麼?

114. /tmp/hadoop-root/dfs/name the path is not exists or is not accessable. NameNode main 中報錯.怎麼解決

115. 工做中編寫mapreduce用到的語言. 編寫一個mapreduce程序

116. hadoop 命 >殺死一個job任務 >刪除/tmp/aaa/文件目錄 >hadoop集羣添加或刪除節點時.刷新集羣狀態的命令

117. hadoop的調度器有哪些?工做原理

118. mapreduce的join方法有哪些?

119. Hive無數據保存的方法有哪些?各有什麼特色

120. java實現非遞歸二分法算法

121. mapreduce中combiner和Partion的做用

122. 如何實現 mapreduce的二次排序

123. hadoop的高度機制

124. 機架感知

125. MR數據傾斜緣由和解決方案?

126. 集羣HA

127. 對於HIVE. 你寫過哪些UDF函數.做用是什麼

128. hdfs的數據壓縮算法

129. mapreduce的調度模式

130. hive底層與數據庫交互原理

131. hadoop運行原理

132. mapreduce的原理

133. hdfs存儲機制

134. Hive內部表和外部表的區別

一、在導入數據到外部表,數據並無移動到本身的數據倉庫目錄下,也就是說外部表中的數據並非由它本身來管理的!而 表則不一 樣;

二、在刪除表的時候,Hive將會把屬於表的元數據和數據所有刪掉;而刪除外部表的時候,Hive僅僅刪除外部表的元數據,數 據 是不會 刪除的! 那麼,應該如何選擇使用哪一種表呢?在大多數狀況沒有太多的區別,所以選擇只是我的喜愛的問題。可是做爲一個經驗,如 果全部處理 都須要由Hive完成,那麼你應該建立表,不然使用外部表!

135. HBase的rowkey怎麼建立比較好.列族怎麼建立比較好

136. 用mapreduce怎麼處理數據傾斜問題?

137. hadoop框架中中怎麼優化.

138. HBase內部什麼機制

139. 咱們在開發分佈式計算job的.是否能夠去掉reduce階段

140. hive底層與數據庫交互原理

 

1.  列舉出Hadoop中定義的最經常使用的InputFormats,那個是默認的?

TextInputFormat(默認)用於讀取純文本文件,key是每一行的位置偏移量,是LongWritable類型的,value是每一行的內容,爲Text類型 KeyValueTextInputFormat 一樣用於讀取文件,若是行被分隔符(缺省是tab)分割爲兩部分,第一部分爲key,剩下的部分 爲value;若是沒 有分隔符,整行做爲 key,value爲空 SequenceFileInputFormat 用於讀取sequence file。 sequence file是Hadoop用於存儲數據自定義格式的binary文件。它有 兩個子類: SequenceFileAsBinaryInputFormat,將 key和value以BytesWritable的類型讀出;SequenceFileAsTextInputFormat,將key和value以Text類型讀出

2..TextInputFormat和KeyValueInputFormat類不一樣之處在於哪裏?

答:TextInputFormat讀取文本文件中的全部行,提供了行的偏移做爲Mapper的鍵,實際的行做爲 mapper的值。 KeyValueInputFormat讀取文本文件,解析全部行到中,首個空格前的字符是mapper的key,行的其他部分則是mapper的值

3. Hadoop中InputSplit是什麼?

答:InputSplit是指分片,在MapReduce做業中,做爲map task最小輸入單位。分片是基於文件基礎上出來的概念,通俗的理解一個文件可 以切分爲多少個片斷,每一個片斷包括了等信息。在 MapTask 拿到這些分片後,會知道從哪開 始讀取數據。

4. Hadoop框架中文件拆分是如何被觸發的?

  答:經過運行輸入格式類中的getInputSplit()方法。

5. 考慮一種狀況:Map/Reduce系統中,HDFS塊大小是64MB,輸入格式FileInputFormat,有三個文件64K,65MB,127MB, 那麼有hadoop框架會將 輸入劃分紅多少?

 答:hadoop將會作5個拆分,64K文件拆分1個,65MB文件拆分2個,127MB文件拆分2個。

6. hadoop中的RecordReader的目的是什麼?

 1)以怎樣的方式從分片中讀取一條記錄,每讀取一條記錄都會調用RecordReader類;

  2)系統默認的RecordReader是LineRecordReader,如TextInputFormat;而SequenceFileInputFormat的RecordReader是SequenceFileRecordReader;

  3)LineRecordReader是用每行的偏移量做爲map的key,每行的內容做爲map的value;

  4)應用場景:自定義讀取每一條記錄的方式;自定義讀入key的類型,如但願讀取的key是文件的路徑或名字而不是該行在文件中的偏移量。 系統默認的LineRecordReader是按照每行的偏移量作爲map輸出時的key值,每行的內容做爲map的value值,默認的分隔符是 回車和換行。 如今要更改map對應的輸入的值,key對應的文件的路徑(或者是文件名),value對應的是文件的內容 (content)。 那麼咱們須要重寫InputFormat和RecordReader,由於RecordReader是在InputFormat中調用的,固然重寫RecordReader纔是重點!

7. 若是hadoop中沒有定義定製分區,那麼如何在輸出到reduce前執行數據分區? Partitioner /override getPartition()

   答:默認的分區器爲各個鍵計算一個哈希值,並分配給基於這個結果的分區。

8. 什麼是Combiner?舉個例子,何時使用combiner,何時不用?

答:當map生成的數據過大時,帶寬就成了瓶頸,怎樣精簡壓縮傳給Reduce的數據,有不影響最終的結果呢。有一種方法就是使 用 Combiner,Combiner號稱本地的Reduce,Reduce最終的輸入,是Combiner的輸出 Combiner的做用是把一個map產生的多個合併成一個新的,而後再將新的做爲reduce的輸入; 在map函數與reduce函數之間多了一個combine函數,目的是爲了減小map輸出的中間結果,這樣減小了reduce複製map輸出的數據,減小網絡 傳輸負載; 並非全部狀況下都能使用Combiner,Combiner適用於對記錄彙總的場景(如求和),可是,求平均數的場景就不能使用Combiner了。若是能夠 使用Combiner,通常狀況下,和咱們的reduce函數是一致的。

9. 什麼是jobtracker? jobtracker有哪些特別的函數?

 答:

1,  JobTracker是整個MapReduce計算框架中的主服務,至關於集羣的「管理者」,負責整個集羣的做業控制和資源管理  

2,  main()函數

10. 什麼是tasktracker?

TaskTracker是JobTracker和Task之間的橋樑:一方面,從JobTracker接收並執行各類命令:運行任務、提交任務、殺死任務 等;另外一方面,將本地節點上各個任務的狀態經過心跳週期性彙報給JobTracker。TaskTracker與JobTracker和Task之間採用了 RPC協議進行通訊。

11. hadoop中job和task之間是什麼關係?

  概述:

 (1)Hadoop MapReduce採用Master/Slave結構。

*Master:是整個集羣的惟一的全局管理者,功能包括:做業管理、狀態監控和任務調度等,即MapReduce中的JobTracker。

 *Slave:負責任務的執行和任務狀態的回報,即MapReduce中的TaskTracker。

JobTracker剖析:

 (1)概述:JobTracker是一個後臺服務進程,啓動以後,會一直監聽並接收來自各個TaskTracker發送的心跳信息,包括資源使用 狀況和任務運行狀況等信息。

 (2)JobTracker的主要功能:

 1.做業控制:在hadoop中每一個應用程序被表示成一個做業,每一個做業又被分紅多個任務,JobTracker的做業控制模塊則負責做業 的分解和狀態監控。

 *最重要的是狀態監控:主要包括TaskTracker狀態監控、做業狀態監控和任務狀態監控。主要做用:容錯和爲任務調度提供決 策依據。

2.資源管理。

  TaskTracker剖析:

 (1)TaskTracker概述:TaskTracker是JobTracker和Task之間的橋樑:一方面,從JobTracker接收並執行各類命令:運行任務、提交 任務、殺死任務等;另外一方面,將本地節點上各個任務的狀態經過心跳週期性彙報給JobTracker。TaskTracker與JobTracker和 Task之間採用了RPC協議進行通訊。

(2)TaskTracker的功能:

1.彙報心跳:Tracker週期性將全部節點上各類信息經過心跳機制彙報給JobTracker。這些信息包括兩部分:

 *機器級別信息:節點健康狀況、資源使用狀況等。

 *任務級別信息:任務執行進度、任務運行狀態等。

2.執行命令:JobTracker會給TaskTracker下達各類命令,主要包括:啓動任務(LaunchTaskAction)、提交任務 (CommitTaskAction)、殺死任務(KillTaskAction)、殺死做業(KillJobAction)和從新初始化(TaskTrackerReinitAction)。

12. 假設hadoop一個job產生了100個task, 而且其中的一個task失敗了,hadoop會如何處理?

hadoop自己的一個設計理念就是在普通的pc硬件上構建高可靠性的系統,任何failed task都不會引發整個job的失敗,由於全部失敗的任務 都會被從新執行(reschedule execution),只有當從新執行的次數超過4次,纔會把這任務標記爲失敗,致使整個job的失敗。

13. 經過劃分多個節點上任務,hadoop實現了並行處理,對少數慢節點可能會限制剩下其餘程序的 速率,並拖慢了整個程序。hadoop提供了什麼機制防止這種狀況的發生? speculative execution。舉個簡單的例子,若是某個job有2000個map task,已經完成了1999個,只剩下一個task因爲硬件比較慢而成爲拖尾 任務,爲了減小拖尾任務對整個job運行時間的影響,jobtracker會從新啓動一個如出一轍的duplicate task和原有的task並行的執行,這樣有一 個task執行成功,整個map過程就會結束。speculative execution(推測執行)只有個處理拖尾任務的優化策略,並不能提升系統的可靠性

14. hadoop推測執行是如何實現的?

 答:Hadoop會爲該task啓動備份任務,讓speculative task與原始task同時處理一份數據,哪一個先運行完,則將誰的結果做爲最終結果,而且在 運行完成後Kill掉另一個任務。

15. Unix中使用命令行,如何查看hadoop集羣中的全部運行的任務?或是kill掉任務?

 jps

16. 什麼是hadoop streming?

答:Haoop支持用其餘語言來編程,須要用到名爲Streaming的通用API, Streaming主要用於編寫簡單,短小的MapReduce程序,能夠經過腳 本語言編程,開發更快捷,並充分利用非Java庫

17. 解釋hadoop和hadoop生態系統兩個概念

 答:Hadoop是一個可以對大量數據進行分佈式處理的軟件框架,Hadoop的核心是HDFS和Mapreduce,hadoop2.0還包括YARN hadoop生態系統:包含 HDFS mapreduce hive hbase zookeeper sqoop flume pig mahout

 18. 說明hadoop2.0的基本構成

 HDFS

 MapReduce

 YARN

 19. 相比於HDFS1.0. 2.0最主要的改進在哪幾個方面?

 引入一個新的資源管理系統YARN

 HDFS單點故障得以解決

 Hadoop 2.0的最大變化出如今內核(HDFS、MapReduce和YARN)

20. 試使用步驟1,步驟2,步驟3.……說明YARN中運行應用程序的基本流程

步驟1 用戶向YARN中提交應用程序,其中包括ApplicationMaster程序、啓動ApplicationMaster的命令、用戶程序等。

步驟2 ResourceManager爲該應用程序分配第一個Container,並與對應的Node-Manager通訊,要求它在這個Container中啓動應用程序的 ApplicationMaster。

步驟3 ApplicationMaster首先向ResourceManager註冊,這樣用戶能夠直接經過ResourceManage查看應用程序的運行狀態,而後它將爲各 個任務申請資源,並監控它的運 行狀態,直到運行結束,即重複步驟4~7。

步驟4 ApplicationMaster採用輪詢的方式經過RPC協議向ResourceManager申請和領取資源。

步驟5 一旦ApplicationMaster申請到資源後,便與對應的NodeManager通訊,要求它啓動任務Task。

步驟6 NodeManager爲任務Task設置好運行環境(包括環境變量、JAR包、二進制程序等)後,將任務啓動命令寫到一個腳本中,並經過 運行該腳本啓動任務Task。

步驟7 各個任務Task經過某個RPC協議向ApplicationMaster彙報本身的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀 態,從而能夠在任務失敗時從新啓動任務。 在應用程序運行過程當中,用戶可隨時經過RPC向ApplicationMaster查詢應用程序的當前運行狀態。

步驟8 應用程序運行完成後,ApplicationMaster向ResourceManager註銷並關閉本身。 10. MapReducer2.0與Yarn是否等同,嘗試解釋說明。

21. MapReducer2.0中, MRAppMaster主要做用是什麼,MRappMaster如何實現任務容錯的?

22. 什麼是MRAppMaster?

咱們知道,在MRv1中,JobTracker存在諸多問題,包括存在單點故障,擴展受限等,爲了解決這些問題,Apache對MRv1進行了改進,提 出了YARN,YARN將JobTracker中的做業控制和資源管理兩個功能分開,分別由兩個不一樣的進程處理,進而解決了原有JobTracker存在的問 題。通過架構調整以後,YARN已經徹底不一樣於MRv1,它已經變成了一個資源管理平臺,或者說應用程序管理框架。運行於YARN之上的計 算框架不僅限於MapReduce一種,也能夠是其餘流行計算框架,好比流式計算、迭代式計算等類型的計算框架。爲了將一個計算框架運行於 YARN之上,用戶須要開發一個組件—ApplicationMaster。做爲一個開始,YARN首先支持的計算框架是MapReduce,YARN爲用戶實現好了 MapReduce的ApplicationMaster,也就是本文要介紹了MRAppMaster。

23. 相比於JobTracker,MRAppMaster有什麼不一樣?

既然MRAppMaster是由JobTracker衍化而來的,那麼是否將JobTracker的代碼稍加修改,就變成了MRAppMaster呢,答案是否認的。事實 上,YARN僅重用了MRv1中的少量代碼,基本可看作重寫了MRAppMaster。

YARN採用了新的軟件設計思想,包括對象服務化、事件驅動的異步編程模型的。做爲YARN的一部分,MRAppMaster的實現也採用了這 些設計思想。

下面簡要介紹一下MRAppMaster的實現細節 

在正式介紹MRAppMaster以前,咱們先回顧一下MRv1的實現。咱們都知道,MRv1主要由兩種服務組成,即:JobTracker和TaskTracker, 而在YARN中,TaskTracker已經由NodeManager代替,所以,咱們在此重點分析JobTracker。JobTracker包含資源管理和做業控制兩個功能, 在YARN中,做業管理由ResourceManager實現,所以,只剩下做業控制這一個功能(由MRAppMaster實現)。MRv1中每一個做業由一個 JobInProgress控制,每一個任務由一個TaskInProgress控制,因爲每一個任務可能有多個運行實例,所以,TaskInProgress實際管理了多個運行實 例Task Attempt,對於每一個運行實例,可能運行了一個MapTask或者ReduceTask,另外,每一個Map Task或者Reduce Task會經過RPC協議將狀態 彙報給TaskTracker,再由TaskTracker進一步彙報給JobTracker 在MRAppMaster中,它只負責管理一個做業,包括該做業的資源申請、做業運行過程監控和做業容錯等。MRAppMaster使用服務模型和 事件驅動的異步編程模型對JobInProgress和TaskInProgress進行了重寫(分別對應JobImpl和TaskImpl),並讓Map Task和Reduce Task(Map Task和Reduce Task重用了MRv1中的代碼)直接經過RPC將信息彙報給MRAppMaster。此外,爲了可以運行於YARN之上,MRAppMaster還要 與ResourceManager和NodeManager兩個新的服務通訊(用到兩個新的RPC協議),以申請資源和啓動任務,這些都使得MRAppMaster徹底不一樣於JobTracker。

24. 爲何會產生yarn,它解決了什麼問題。有什麼優點?

25. job的運行流程(提交一個job的流程)

 

job的執行流程以下: dataInput- >split- >Mapper- >Combine- >(產出臨時數據)-->Partition- >Sort- >Reducer- >最終數據

26. hadoop生態圈中各類框架的運用場景

27. hive中的壓縮格式RCFile.TextFile.SequenceFile各有什麼區別,以上三種格式同樣大的文件哪一個佔用空間大小

 textfile(默認) 存儲空間消耗比較大,而且壓縮的text 沒法分割和合並 查詢的效率最低,能夠直接存儲,加載數據的速度最高 sequencefile 存儲空間消耗最大,壓縮的文件能夠分割和合並 查詢效率高,須要經過text文件轉化來加載 rcfile 存儲空間最小,查詢的效率最高 ,須要經過text文件轉化來加載,加載的速度最低

28. hadoop中的一個HA壓縮

29. Flume收集到的數據不少個小文件,我而要寫MR處理時將這些文件合併(是在MR中進行優化 ,不讓一個小文件一個MapReduce)

30. 大家的集羣規模?

 開發集羣:10臺(8臺可用)8核cpu

31. 大家的數據是用什麼導入到數據庫的?導入到什麼數據庫?

處理以前的導入:經過hadoop命令導入到hdfs文件系統 處理完成以後的導出:利用hive處理完成以後的數據,經過sqoop導出到mysql數據庫中,以供報表使用

32. 大家的業務數據量多大?有多少行數據?(面試三家,都問)

 開發時使用的是部分數據,不是全量數據。有將近一億行(8. 9千萬吧, 全體不詳, 通常開發不是特別關心這個問題)

33. 大家處理數據是直接讀數據庫的數據仍是讀文本數據?

 將日誌數據導入到hdfs以後時行處理

34. 大家寫hive的hql語句,大概有多少條?

 不清楚,我本身寫的時候也沒統計

35. 大家提交job任務大概有多少個?這些job執行完成大概用多少時間(都問。)

 沒統計過。加上測試的會不少

36. hive跟hbase的區別是?

37. 你在項目中主要的工做任務是?

利用hive分析數據

38. 你在項目遇到了哪些難題。是怎麼解決的?

 某些任務執行時間過長, 且失敗率太高。 檢查日誌後發現沒有執行完就失敗,緣由出在 hadoop的job的timout太短(相對於集羣的能力來講)設置長一點就行

39. 你本身寫過udf函數麼?寫了哪些

40. 你的項目提交到job的時候數據量有多大?(常問)

41. reduce後輸出的數據量有多大?

42. 一個網絡商城1天大概產生多少G日誌?4tb

43. 大概有多少條日誌記錄

44. 日訪問大概有多少個?百萬

45. hdfs的 client端,複製到第三個副本時宕機,hdfs怎麼恢復下次寫第三副本?block塊信息是先寫 dataNode仍是先寫nameNode?

46. 快排現場寫程序實現?

47. jvm的內存是怎麼分配原理?

48. 毒酒問題---1000桶酒,其中1桶有毒,而一旦吃了,毒性會在一週後發做。問最少須要多少隻 老鼠可在一週內找出毒酒?

49. 用棧實現隊列?

50. 鏈表倒序實現?

51. 多線程模型怎麼(生產,消費者)? 平時併發多線程都用哪些實現方式?

52. synchronized是同步悲觀鎖嗎?互斥?怎麼寫同步提升效率?

 synchronized 關鍵字至關於 lock(M.class), 是將整個對象鎖住,爲提升效率,可使用讀寫鎖

53. 4億個數字,找出哪些是重複的,要用最小的比較次數,寫程序實現

54. java是傳值仍是傳址?

55. java處理多線程,另外一線程一直等待?

56. 在線安裝ssh的命令以及文件解壓的命令?

57. 把公鑰都追加到受權文件的命令?該命令是否在root用戶下執行?

58. HadoopHA集羣中各個服務啓動和關閉的順序?

59. HDFS中的block塊默認保存幾份?默認大小多少?

60. NameNode中的meta數據是存放在NameNode自身仍是datanode等其它節點.DataNode節點自身是否有meta數據存在?

61. 下列哪一個程序一般與NameNode在一個節點啓動?

62. 下面哪一個程序負責HDFS數據存儲?

63. 在Hadoop HA集羣中Zookeeper 的主要做用,以及啓動和查看狀態的命令?

sh bin/zkServer.sh start sh bin/zkServer.sh status

64. HBase在進行模型設計進重點在什麼地方?一張表中定義多少個Colum family最合適?爲何?

65. 如何提升HBase客戶端的讀寫性能?請舉例說明。

66. 基於Hadoop HA集羣記性MapReduce開發時,Configuration 如何設置hbase.zookeeper.quorum屬性的值?

67. 在hadoop開發過程當中使用過哪些算法?其應用場景是什麼?

68. MapReduce程序如何發佈?若是MapReduce中涉及到了第三方的jar包,該如何處理 14. 在實際工做中使用過哪些運維工具,請分別闡述其做用。

69. hadoop中combiner的做用?

70. IO的原理。IO模型有幾種?

71. Windows用什麼樣的模型,Linux用什麼樣的模型?

72. 一臺機器如何應對那麼多的請求訪問。高併發到底怎麼實現,一個請求怎麼產生的。 在服務端怎麼處理的。最後怎麼返回給用戶的。整個的環節操做系統是怎麼控制的?

73. 以你的實際經驗,說下怎麼樣預防全表掃描

74. 網絡七層協議

76. 集合HashTable和HashMap的區別

1.HashTable的方法是同步的,HashMap未經同步

2.HashTable不容許null值(key和value都不能夠),HashMap容許null值(key和value均可以)。

77.zookeeper優勢,用在什麼場合

78.HBase中的metastore用來作什麼的

 79java優點及緣由

 80. jvm優化

 81寫一個冒泡排序

82. hadoop底層存儲設計

83. 文件大小默認64M,改成128有啥影響

 84. RPC原理

85. NameNode與SecondaryNameNode的區別與聯繫

 86. 介紹MapReduce整個過程.好比把WordCount的例子的細節講清楚(重點講shuffle)

 87. 對Hadoop有沒有調優經驗.有沒有什麼使用心得(調優從參數調優提及)

 88. MapReduce出現單點負載過大,怎麼負載平衡?(能夠用Partioner)

89. 說說值與引用對象的區別

90. 談談你對反射機制的理解及用途

91. ArrayList, Vector, LinkdList的區別及其優缺點?HashMap,HashTable的區別及其優缺點?

 92. 列出線程的實現方式? 如何實現同步

 93. 列出至少5種設計模式? 用代碼或UML類圖描述其中用到的技術難點及其解決思路

 94. 談談你最近正在研究的技術.談談你最近項目中用到的技術難點及其解決思路

 95. hdfs中的block默認保存幾份?

 96. 哪一個程序一般與nn在一個節點啓動 Jobtracker

 97. 列舉幾個配置文件優化?

98. 寫出你對zookeeper的理解

99. DataNode首次加入cluster的時候,若是log報告不兼容文件版本.那須要NameNode執行格式化操做,這樣處理的緣由是?

100. 談談數據傾斜,如何發生的.並給出優化方案 可以想到的關於數據傾斜的一些解決方式(歡迎補充,尤爲是有沒有作搜索或者數據挖掘的朋友有碰到相似問題):

1. 增長reduce 的jvm內存

2. 增長reduce 個數

3.customer partition

4. 其餘優化的討論.

5. reduce sort merge排序算法的討論

6. 正在實現中的hive skewed join.

7. pipeline

8. distinct

9. index 尤爲是bitmap index

101. 介紹一下HBase過濾器

 HBase爲篩選數據提供了一組過濾器,經過這個過濾器能夠在HBase中的數據的多個維度(行,列,數據版本)上進行對數據的篩選操 做,也就是說過濾器最終可以篩選的數據可以細化到具體的一個存儲單元格上(由行鍵,列明,時間戳定位)。一般來講,經過行鍵,值 來篩選數據的應用場景較多。

1. RowFilter:篩選出匹配的全部的行,對於這個過濾器的應用場景,是很是直觀的:使用BinaryComparator能夠篩選出具備某個行鍵的行, 或者經過改變比較運算符(下面的例子中是CompareFilter.CompareOp.EQUAL)來篩選出符合某一條件的多條數據,如下就是篩選出行鍵爲 row1的一行數據:

2. PrefixFilter:篩選出具備特定前綴的行鍵的數據。這個過濾器所實現的功能其實也能夠由RowFilter結合RegexComparator來實現,不過這 裏提供了一種簡便的使用方法,如下過濾器就是篩選出行鍵以row爲前綴的全部的行:

 3. KeyOnlyFilter:這個過濾器惟一的功能就是隻返回每行的行鍵,值所有爲空,這對於只關注於行鍵的應用場景來講很是合適,這樣忽略 掉其值就能夠減小傳遞到客戶端的數據量,能起到必定的優化做用

4. RandomRowFilter:從名字上就能夠看出其大概的用法,本過濾器的做用就是按照必定的概率(<=0會過濾掉全部的行,>=1會包含全部的 行)來返回隨機的結果集,對於一樣的數據集,屢次使用同一個RandomRowFilter會返回不通的結果集,對於須要隨機抽取一部分數據的應 用場景,可使用此過濾器:

 102. MapReduce基本執行過程

103. 談談hadoop2和hadoop2的區別

104. HBase集羣安裝注意事項

105. 記錄包含值域F和值域G.要別統計相同G值的記錄中不一樣的F值的數目,簡單編寫過程

106. HDFS原理.以及各個模塊的職責

107. MR的工做原理

108. map方法是如何調用reduce方法的.

109. shell如何判斷文件是否存在.若是不存在該如何處理

108. fsimage和edit的區別

109. DataNode在什麼狀況下不會備份

110. hdfs體系結構

111. flush的過程  

112. hadoop集羣搭建過程.寫出步驟

113. hadoop集羣運行過程當中啓動哪些線程.各自的做用是什麼?

114. /tmp/hadoop-root/dfs/name the path is not exists or is not accessable. NameNode main 中報錯.怎麼解決

115. 工做中編寫mapreduce用到的語言. 編寫一個mapreduce程序

116. hadoop 命 >殺死一個job任務 >刪除/tmp/aaa/文件目錄 >hadoop集羣添加或刪除節點時.刷新集羣狀態的命令

117. hadoop的調度器有哪些?工做原理

118. mapreduce的join方法有哪些?

119. Hive無數據保存的方法有哪些?各有什麼特色

120. java實現非遞歸二分法算法

121. mapreduce中combiner和Partion的做用

122. 如何實現 mapreduce的二次排序

123. hadoop的高度機制

124. 機架感知

125. MR數據傾斜緣由和解決方案?

126. 集羣HA

127. 對於HIVE. 你寫過哪些UDF函數.做用是什麼

128. hdfs的數據壓縮算法

129. mapreduce的調度模式

130. hive底層與數據庫交互原理

131. hadoop運行原理

132. mapreduce的原理

133. hdfs存儲機制

134. Hive內部表和外部表的區別

一、在導入數據到外部表,數據並無移動到本身的數據倉庫目錄下,也就是說外部表中的數據並非由它本身來管理的!而 表則不一 樣;

二、在刪除表的時候,Hive將會把屬於表的元數據和數據所有刪掉;而刪除外部表的時候,Hive僅僅刪除外部表的元數據,數 據 是不會 刪除的! 那麼,應該如何選擇使用哪一種表呢?在大多數狀況沒有太多的區別,所以選擇只是我的喜愛的問題。可是做爲一個經驗,如 果全部處理 都須要由Hive完成,那麼你應該建立表,不然使用外部表!

135. HBase的rowkey怎麼建立比較好.列族怎麼建立比較好

136. 用mapreduce怎麼處理數據傾斜問題?

137. hadoop框架中中怎麼優化.

138. HBase內部什麼機制

139. 咱們在開發分佈式計算job的.是否能夠去掉reduce階段

140. hive底層與數據庫交互原理

相關文章
相關標籤/搜索