最新Hadoop面試題匯總資料_第1頁
最新Hadoop面試題匯總資料_第2頁
最新Hadoop面試題匯總資料_第3頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單選題1. 下面哪個程序負責 HDFS 數據存儲。a) NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 答案 C datanode2. HDfS 中的 block 默認保存幾份?a) 3份b)2份c)1份d)不確定 答案A默認3分3. 下列哪個程序通常與 NameNode 在一個節點啟動?a) SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker答案 D4. Hadoop 作者a)Martin Fowler b)Kent Beck c)Doug cut

2、ting 答案 C Doug cutting5. HDFS 默認 Block Sizea)32MB b)64MB c)128MB答案: 1.X 版本是 64M2. X版本是128M6. 下列哪項通常是集群的最主要瓶頸a)CPU b)網絡c)磁盤10 d)內存答案:C磁盤7. Doug Cutting 所創立的項目的名稱都受到其家人的啟發,以下項目不是由他創立的項目是A HadoopB NutchCLuceneDSolr答案: D8. 配置Hadoop時,JAVA_HOME包含在哪一個配置文件中ABCD 答案:hadoop-default.xmlhadoop-env.sh hadoop-site

3、.xml configuration.xslB9. Hadoop 配置文件中, hadoop-site.xml 顯示覆蓋 hadoop-default.xml 里的內容。在版本 0.20 中, hadoop-site.xml被分離成三個XML文件,不包括A conf-site.xmlBmapred-site.xmlCcore-site.xmlDhdfs-site.xml答案: A10. HDFS默認的當前工作目錄是 的值需要在哪個配置文件內說明A. mapred-site.xmlB. core-site.xmlC.hdfs-site.xmlD. 答案:以上均不是B11. 關于Hadoop單機模

4、式和偽分布式模式的說法,正確是ABCD 答案:兩者都起守護進程,且守護進程運行在一臺機器上單機模式不使用 HDFS但加載守護進程兩者都不與守護進程交互,避免復雜性后者比前者增加了 HDFS輸入輸出以及可檢查內存使用情況 D12. 下列關于Hadoop API的說法錯誤的是A.Hadoop 的文件 API 不是通用的,只用于HDFS文件系統B.Configuration 類的默認實例化方法是以HDFS系統的資源配置為基礎的C.FileStatus 對象存儲文件和目錄的元數據D.FSDataInputStream 是 java.io.DataInputStream 的子類答案:A13. HDFS的

5、NameNode負責管理文件系統的命名空間,將所 有的文件和文件夾的元數據保存在一個文件系統樹中, 這些 信息也會在硬盤上保存成以下文件:A .日志B. 命名空間鏡像C. 兩者都是答案: C14. HDFS的 namenode保存了一個文件包括哪些數據塊,分 布在哪些數據節點上,這些信息也存儲在硬盤上。A .正確B.錯誤答案: B知識點:在系統啟動的時候從數據節點收集而成的15.Secondary namenode就是namenode出現問題時的備用節點八、A .正確B.錯誤答案: B知識點: 它和元數據節點負責不同的事情。 其主要功能就是周期性將元數據節點的命名 空間鏡像文件和修改日志合并,

6、以防日志文件過大。合并過后的命名空間鏡像文件也在 Secondary namenode 保存了一份,以防 namenode 失敗的時候,可以恢復。16. HDFS的是基于流數據模式訪問和處理超大文件的需求而 開發的,默認的最基本的存儲單位是64M,具有高容錯、高可靠性、高可擴展性、高吞吐率等特征,適合的讀寫任務是A 一次寫入,少次讀寫B. 多次寫入,少次讀寫C. 一次寫入,多次讀寫D. 多次寫入,多次讀寫 答案: C17. HDFS無法高效存儲大量小文件,想讓它能處理好小文件,比較可行的改進策略不包括A. 利用SequenceFile、MapFile、Har等方式歸檔小文件B. 多Master

7、設計C. Block大小適當調小D. 調大name node內存或將文件系統元數據存到硬盤里 答案: D18. 關于HDFS的文件寫入,正確的是A.B.C.D.答案:支持多用戶對同一文件的寫操作 用戶可以在文件任意位置進行修改 默認將文件塊復制成三份存放 復制的文件塊默認都存在同一機架上C19. Hadoop fs 中的 -get 和 -put 命令操作對象是A.文件B.目錄C.兩者都是答案:C20. Namenode 在啟動時自動進入安全模式, 在安全模式階段,說法錯誤的是A.B.C.D.答案:安全模式目的是在系統啟動時檢查各個DataNode 上數據塊的有效性根據策略對數據塊進行必要的復制

8、或刪除 當數據塊最小百分比數滿足的最小副本數條件時,會自動退出安全模式 文件系統允許有修改D21. 下列關于HDFS為存儲MapReduce并行切分和處理的數據做的設計,錯誤的是ABCD 答案:FSDataInputStream 擴展了 DataInputStream 以支持隨機讀 為實現細粒度并行,輸入分片 (Input Split) 應該越小越好 一臺機器可能被指派從輸入文件的任意位置開始處理一個分片 輸入分片是一種記錄的邏輯劃分,而 HDFS 數據塊是對輸入數據的物理分割 B多選題1. 關于 SecondaryNameNode 哪項是正確的?a) 它是 NameNode的熱備b) 它對內

9、存沒有要求c) 它的目的是幫助 NameNode合并編輯日志,減少 NameNode啟動時間d) SecondaryNameNode 應與 NameNode 部署到一個節點答案 C D2. 下列哪項可以作為集群的管理?a)Puppet b)Pdsh c)Cloudera Manager d)Zookeeper答案 1: ABC3. 配置機架感知的下面哪項正確a) 如果一個機架出問題,不會影響數據讀寫b) 寫入數據的時候會寫到不同機架的DataNode中c) MapReduce 會根據機架獲取離自己比較近的網絡數據答案 ABC具體可以參考hadoop 機架感知 -加強集群穩固性,該如何配置 ha

10、doop 機架感知4. Client 端上傳文件的時候下列哪項正確a) 數據經過 NameNode傳遞給DataNodeb) Client 端將文件切分為 Block ,依次上傳c) Client只上傳數據到一臺 DataNode,然后由 NameNode負責 Block復制工作答案 B5. 下列哪個是 Hadoop 運行的模式a)單機版b)偽分布式c)分布式答案 ABC6. Cloudera 提供哪幾種安裝 CDH 的方法a)Cloudera manager b)Tarball c)Yum d)Rpm答案:ABCD具體可以參考Hadoop CDH四種安裝方式總結及實例指導簡答題1. Hado

11、op集群可以運行的3個模式?1)單機(本地)模式 ;2)偽分布式模式 ;3)全分布式模式 ;2. 單機(本地)模式中的注意點?在單機模式(standalone )中不會存在守護進程,所有東西都運行在一個 JVM上。這里 同樣沒有 DFS使用的是本地文件系統。單機模式適用于開發過程中運行MapReduce程序,這也是最少使用的一個模式。3. 偽分布模式中的注意點?偽分布式(Pseudo)適用于開發和測試環境,在這個模式中,所有守護進程都在同一臺 機器上運行。4. 全分布模式又有什么注意點?N 臺主機組成一個 Hadoop 集群,Namenode 運行的主機, Datanode全分布模式通常被用于

12、生產環境,這里我們使用Hadoop 守護進程運行在每臺主機之上。這里會存在運行的主機, 以及 task tracker 運行的主機。 在分布式環境下, 主節點和從節點會分開。5. Hadoop 是否遵循 UNIX 模式?是的,在 UNIX 用例下, Hadoop 還擁有“ conf ”目錄。6. Hadoop 的核心配置是什么?Hadoop 的核心配置通過兩個 xml 文件來完成: 1,hadoop-default.xml ;2,hadoop-site.xml 。 這些文件都使用 xml 格式,因此每個 xml 中都有一些屬性, 包括名稱和值, 但是當下這 些文件都已不復存在。7. 那當下又該

13、如何配置?Hadoop 現在擁有 3 個配置文件: 1,core-site.xml ;2,hdfs-site.xml ;3,mapred-site.xml 。 這些文件都保存在 conf/ 子目錄下。8. fs.mapr.working.dir 只是單一的目錄?fs.mapr.working.dir 只是一個目錄。9. hdfs-site.xml 的 3 個主要屬性?決定的是元數據存儲的路徑以及DFS的存儲方式(磁盤或是遠端)dfs.data.dir 決定的是數據存儲的路徑fs.checkpoint.dir 用于第二 Namenode10. 如何退出輸入模式?退出輸入的方式有:1,按ESC 2

14、,鍵入:q (如果你沒有輸入任何當下)或者鍵入:wq(如果你已經輸入當下) ,并且按下 Enter。11. “ jps ”命令的用處?這個命令可以檢查 Name node、Data node、Task Tracke、Job Tracker是否正常工作。12. 如何重啟 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)。13.

15、Fsck的全名?全名是: File System Check。14. mapred.job.tracker 命令的作用?可以讓你知道哪個節點是 Job Tracker。15. /etc /init.d 命令的作用是?/etc /init.d 說明了守護進程(服務)的位置或狀態,其實是LINUX 特性,和 Hadoop 關系不大。16. 如何在瀏覽器中查找 Namenode? 如果你確實需要在瀏覽器中查找 Namenode ,你不再需要 localhost:8021 ,Namenode 的 端口號是 50070 。17. hadoop-env.sh 是用于做什么的?hadoop-env.sh 提

16、供了 Hadoop 中.JAVA_HOME的運行環境。18. Master 文件是否提供了多個入口?是的你可以擁有多個 Master 文件接口。19. Hadoop-env.sh 文件當下的位置?hadoop-env.sh 現在位于 conf。20. 在 Hadoop_PID_DIR中,PID代表了什么?PID代表了“ Process ID'。21. /var/hadoop/pids 用于做什么?/var/hadoop/pids 用來存儲 PID。22. Hadoop 需求什么樣的網絡?Hadoop核心使用Shell (SSH來驅動從節點上的服務器進程,并在主節點和從節點之 間使用 p

17、assword-less SSH連接。23. 全分布式環境下為什么需求password-less SSH?這主要因為集群中通信過于頻繁, Job Tracker需要盡可能快的給 Task Tracker發布任務。24. SSH工作的端口號是?SSH工作的端口號是 NO.22,當然可以通過它來配置,22是默認的端口號。25. 為什么SSH本地主機需要密碼?在SSH中使用密碼主要是增加安全性,在某些情況下也根本不會設置密碼通信。26. 如果在SSH中添加key,是否還需要設置密碼?是的,即使在 SSH中添加了 key,還是需要設置密碼。27. 假如 Namenode 中沒有數據會怎么樣?沒有數據的

18、 Name node就不能稱之為 Name node,通常情況下,Name node肯定會有數 據28. 當Job Tracke宕掉時,Namenode會發生什么?當Job Tracker失敗時,集群仍然可以正常工作,只要Name node沒問題。29. 是否可以在 Windows 上運行 Hadoop?你最好不要這么做, Red Hat Linux 或者是 Ubuntu 才是 Hadoop 的最佳操作系統。在 Hadoop 安裝中, Windows 通常不會被使用, 因為會出現各種各樣的問題。 因此, Windows 絕對不是 Hadoop 的推薦系統。30. 簡要描述如何安裝配置一個apa

19、che開源版hadoop,描述即可,列出步驟更好1. 配置主機名2. 配置 Hosts3. 配置面密碼互通4. 安裝 JDK5. 安裝 hadoop6. 配置 hadoop(1) 修改 hadoop-env.sh(2) 修改 core-site.xml(3) 修改 hdfs-site.xml(4) 修改 mapred-site.xml(5) 修改 yarn-site.xml(6) 修改 slaves7. 配置hadoop的環境變量8. 格式化 namenode32. 請列出正常工作的hadoop集群中hadoop都需要啟動哪些進程,他們的作用分別是什么?NameNode - hdfs名字節點,

20、存儲 hdfs元數據SecondaryNameNode -輔助 NameNode 實現 fsimage 文件和 edits 文件的合并DataNode -存儲數據的節點ResourceManager -負責集群中所有資源的統一管理和分,它接收來自各個節點 (NodeManager )的資源匯報信息,并把這些信息按照一定的策略分配給各個應用程序NodeManager -是YARN中每個節點上的代理,它管理Hadoop集群中單個計算節點,包括與ResourceMa nger保持通信,監督 Con tai ner的生命周期管理,監控每個Con tai ner的資源使用(內存、CPU等)情況,追蹤節點

21、健康狀況,管理日志和不同應用程序用到的附屬服務(auxiliary service)33. 請寫出以下執行命令1 )殺死一個job?hadoop job -kill job_id2) 刪除hdfs上的/tmp/aaa目錄hadoop fs -rmdir /tmp/aaa3加入一個新的存儲節點和刪除一個計算節點需要刷新集群狀態命令?hadoop bala nee5. 請列出你所知道的 hadoop調度器,并簡要說明其工作方法?(1) 默認的調度器FIFO(2) 計算能力調度器 Cap acity Scheduler(3) 公平調度器 Fair Scheduler(4) 適用于異構集群的調度器LA

22、TE(5) 適用于實時作業的調度器Deadline Scheduler 和 Constraint-based Scheduler |6. 請列出在你以前工作中所使用過的開發map reduce的語言?Java7. 當前日志采樣格式為34. hive 有哪些方式保存元數據,各有哪些特點?Hive原生使用derby作為元數據庫,無法并發調用hive可以將 Hive 元數據保存在 mysql 數據庫中 遠程服務器模式,在服務器端啟動一個 MetaStoreServer ,客戶端利用 Thrift 協議通過 MetaStoreServer 訪問元數據庫35. 請簡述 hadoop 怎么樣實現二級排序?

23、有兩種方法進行二次排序,分別為: buffer and in memory sort和 value-to-key conversion 。對于 buffer and in memory sort,主要思想是:在 reduce() 函數中,將某個 key 對應的所有 value保存下來,然后進行排序。 這種方法最大的缺點是:可能會造成 out of memory 。對于 value-to-key conversion ,主要思想是:將 key 和部分 value 拼接成一個組合 key (實現 WritableComparable 接口或者調用 setSortComparatorClass 函數

24、),這樣 reduce 獲取的結果便是先按 key 排序,后按 value 排序的結果,需要注意的是,用戶需要自己實現 Paritioner ,以便只按照 key 進行 數據劃分36. 簡述 hadoop 實現 join 的幾種方法?2.1 reduce side joinreduce side join 是一種最簡單的 join 方式,其主要思想如下:在 map 階段, map 函數同時讀取兩個文件 File1 和 File2 ,為了區分兩種來源的 key/value 數據對, 對每 條數據打一個標簽( tag ),比如: tag=0 表示來自文件 File1 , tag=2 表示來自文件

25、File2 。即: map 階 段的主要任務是對不同文件中的數據打標簽。在reduce階段,reduce函數獲取key相同的來自Filel和File2文件的value list ,然后對于同一個 key , 對 File1 和 File2 中的數據進行 join (笛卡爾乘積) 。即: reduce 階段進行實際的連接操作。2.2 map side join之所以存在 reduce side join ,是因為在 map 階段不能獲取所有需要的 join 字段,即:同一個 key 對應 的字段可能位于不同 map 中。 Reduce side join 是非常低效的,因為 shuffle 階段

26、要進行大量的數據傳 輸。Map side join 是針對以下場景進行的優化:兩個待連接表中,有一個表非常大,而另一個表非常小,以 至于小表可以直接存放到內存中。 這樣,我們可以將小表復制多份, 讓每個 map task 內存中存在一份 (比 如存放到 hash table 中),然后只掃描大表:對于大表中的每一條記錄 key/value ,在 hash table 中查找 是否有相同的 key 的記錄,如果有,則連接后輸出即可。為了支持文件的復制, Hadoop 提供了一個類 DistributedCache ,使用該類的方法如下:(1 )用戶使用靜態方法 DistributedCache.

27、addCacheFile() 指定要復制的文件,它的參數是文件的 URI (如果是 HDFS 上的文件,可以這樣: hdfs:/namenode:9000/home/XXX/file,其中 9000 是自己配置的NameNode 端口號)。JobTracker在作業啟動之前會獲取這個 URI列表,并將相應的文件拷貝到各個 TaskTracker 的本地磁盤上。 ( 2 )用戶使用 DistributedCache.getLocalCacheFiles() 方法獲取文件目 錄,并使用標準的文件讀寫 API 讀取相應的文件。2.3 SemiJoinSemiJoin ,也叫半連接, 是從分布式數據庫

28、中借鑒過來的方法。 它的產生動機是: 對于 reduce side join , 跨機器的數據傳輸量非常大,這成了 join 操作的一個瓶頸,如果能夠在 map 端過濾掉不會參加 join 操作 的數據,則可以大大節省網絡 IO 。實現方法很簡單:選取一個小表,假設是 File1 ,將其參與 join 的 key 抽取出來,保存到文件 File3 中, File3 文件一般很小,可以放到內存中。在 map 階段,使用 DistributedCache 將 File3 復制到各個 TaskTracker 上,然后將 File2 中不在 File3 中的 key 對應的記錄過濾掉,剩下的 redu

29、ce 階段的工作與 reduce side join 相同。2.4 reduce side join + BloomFilter在某些情況下, SemiJoin 抽取出來的小表的 key 集合在內存中仍然存放不下, 這時候可以使用 BloomFiler 以節省空間。BloomFilter 最常見的作用是:判斷某個元素是否在一個集合里面。它最重要的兩個方法是: add() 和 contains() 。最大的特點是不會存在 false negative ,即:如果 contains() 返回 false ,則該元素一定不在 集合中,但會存在一定的 true negative ,即:如果 conta

30、ins() 返回 true ,則該元素可能在集合中。 因而可將小表中的 key 保存到 BloomFilter 中,在 map 階段過濾大表,可能有一些不在小表中的記錄沒 有過濾掉(但是在小表中的記錄一定不會過濾掉) ,這沒關系,只不過增加了少量的網絡 IO 而已。37. 請用Java實現非遞歸二分查找?public static int binarySearch(IntegersrcArray,int des)/ 第一個位置 .int low=0;/最高位置 .數組長度 -1,因為下標是從 0開始的 .int high=srcArray.length-1;/當low"指針”和hig

31、h不重復的時候. while(low<=high)/ 中間位置計算 ,low+ 最高位置減去最低位置 ,右移一位 ,相當于除 2.也可以用 (high+low)/2int middle=low+(high-low)>>1);/ 與最中間的數字進行判斷 ,是否相等 ,相等的話就返回對應的數組下標.if(des=srcArraymiddle)return middle;/如果小于的話則移動最高層的"指針"else if(des<srcArraymiddle)high=middle-1;/ 移動最低的 "指針"else low=midd

32、le+1;return -1;38. 請簡述 mapreduce 中,combiner, partition 作用?Partition :分區操作是shuffle操作中的一個重要過程,作用就是將map的結果按照規則分發到不同reduce中進行處理,從而按照分區得到多個輸出結果Combi ner:每一個 MapperTask可能會產生大量的輸出,combi ner的作用就是在 Map perTask端對輸出先做一次合并,以減少傳輸到reducerTask的數據量39用mapreduce如何處理數據傾斜問題1. 增加reduce的jvm內存2. 增加reduce個數3. customer part

33、iti on4. 其他優化的討論.5. reduce sort merge 排序算法的討論6. 正在實現中的 hive skewed join.7. pipeli ne8. dist inct9. index 尤其是 bitmap index40 Hive中內部表和外部表的區別內部表現有表后有數據,數據在hive的hdfs目錄下管理外部表先有數據后有表,數據不再hive的hdfs目錄下管理刪除表時,內部表對應文件被刪除刪除表時,外部表對應的文件不會被刪除41用JAVA使用非遞歸二分查找參看題3742HADOOP如何處理大量小文件(1)Hadoop ArchiveHadoop Archive或者

34、HAR,是一個高效地將小文件放入 HDFS塊中的文件存檔工具,它能夠 將多個小文件打包成一個 HAR文件,這樣在減少 namenode內存使用的同時,仍然允許對 文件進行透明的訪問。對某個目錄/foo/bar下的所有小文件存檔成 /outputdir/ zoo.har :hadoop archive -archiveName zoo.har -p /foo/bar /outputdir當然,也可以指定 HAR的大小(使用-Dhar.block.size)。HAR是在Hadoop file system之上的一個文件系統,因此所有fs shell命令對HAR文件均可用, 只不過是文件路徑格式不一

35、樣,HAR的訪問路徑可以是以下兩種格式:har:/scheme-hostname:port/archivepath/fileinarchivehar:/archivepath/fileinarchive( 本節點 )可以這樣查看HAR文件存檔中的文件:hadoop dfs -ls har:/user/zoo/foo.har輸出:har:/user/zoo/foo.har/hadoop/dir1har:/user/zoo/foo.har/hadoop/dir2使用HAR時需要兩點,第一,對小文件進行存檔后,原文件并不會自動被刪除,需要用戶 自己刪除;第二,創建HAR文件的過程實際上是在運行一個m

36、ap reduce作業,因而需要有一個 hadoop 集群運行此命令。此外,HAR還有一些缺陷:第一,一旦創建,Archives便不可改變。要增加或移除里面的文件,必須重新創建歸檔文件。第二,要歸檔的文件名中不能有空格,否則會拋出異常,可以將空格用其他符號替換(使用-Dhar.space.replacement.enable=true 禾口 -Dhar.space.replacement 參數 )。(2)Sequence filesequenee file由一系列的二進制 key/value組成,如果為 key小文件名,value為文件內容, 則可以將大批小文件合并成一個大文件。Hadoop-

37、0.21.0 中提供了 SequenceFile,包括 Writer, Reader和 SequenceFileSorter 類進行寫, 讀和排序操作。如果 hadoop 版本低于 0.21.0 的版本,實現方法可參見 3。(3)CombineFileInputFormatCombineFileInputFormat 是一種新的 inputformat ,用于將多個文件合并成一個單獨的 split, 另外,它會考慮數據的存儲位置。43hdfs 中的 block 默認保存幾份?3份44 hive udf繼承那個類創建類繼承UDF自己編寫一個evaluate方法,返回值和參數任意。45. 請列出正

38、常工作的hadoop集群中hadoop都需要啟動哪些 進程,他們的作用分別是什么?參看題3246、Maperduce處理過程1) 輸入文件(File)2) 格式化輸入文件(InputFormat )3) 分割器(InputSplit)4) RecordReader5) Mapper6) 分區和洗牌(Partition & Shuffle )7) Sort8) Reducer9) 格式化輸出(OutputFormat )47、Hadoop 流程參看題4848、Hadoop上傳細節使用HDFS提供的客戶端開發庫 Clie nt,向遠程的Name node發起RPC請求;Name node會

39、檢查要創建的文件是否已經存在,創建者是否有權限進行操作,成功 則會為文件創建一個記錄,否則會讓客戶端拋出異常;當客戶端開始寫入文件的時候,開發庫會將文件切分成多個packets,并在內部以數據隊列"data queue"的形式管理這些 packets,并向Name node申請新的blocks,獲取用來 存儲replicas的合適的data nodes列表, 列表的大小根據在 Name node中對replicati on的設 置而定。開始以pipeline (管道)的形式將 packet寫入所有的replicas中。開發庫把 packet 以流的方式寫入第一個data n

40、ode,該data node把該packet存儲之后,再將其傳遞給在此pipeli ne中的下一個data node,直到最后一個data node,這種寫數據的方式呈流水線的形式。最后一個data node成功存儲之后會返回一個ack packet,在pipeli ne里傳遞至客戶端,在客戶端的開發庫內部維護著"ack queue",成功收到data node返回的ack packet后會從"ack queue"移除相應的 packet。如果傳輸過程中,有某個data node出現了故障,那么當前的pipeli ne會被關閉, 出現故障的 datano

41、de 會從當前的 pipeline 中移除, 剩余的 block 會繼續剩下的 datanode 中 繼續以 pipeline 的形式傳輸,同時 Namenode 會分配一個新的 datanode ,保持 replicas 設定 的數量。49、Zookeeper 的做什么的zookeeper 是一個開放源碼的分布式協調服務,是一種典型的分布式數據一致性解決方 案。由雅虎創建,貢獻給了apache 。利用 zookeeper 可以實現數據發布訂閱、負載均衡、命名服務、分布式協調 / 通知、集 群管理、分布式鎖、分布式隊列等功能。50、NIO是什么NIO是jdk4提供的一種新的io方式,也叫做非阻

42、塞式10,特點是可以在非阻塞模式下進行工作,ACCEPT CONNECT READ WRITE都不會產生阻塞,從而可以解決 BIO在高并發場景下遇到的問題。51、Hbase的細節hbase中的表在行的方向上分隔為多個HRegion,分散在不同的 RegionServer中這樣做的目的是在查詢時可以將工作量分布到多個RegionServer中以提高速度region 由startkey,endkey)表示HRegion 是 hbase 分布式存儲和負載均衡的最小單元要注意HRegion不在hdfs中,而是在RegionServer的內存中,在內存(其實也有數據在 本地文件系統中, 因為內存空間畢竟

43、是有限的) 中存儲數據以提高查詢性能, 對于修改會將 數據同步到 hdfs 中,以持久化數據。hbase 中的數據按照 rowkey 的字典順序(字典順序! !先比較第一位 如果相同再比較 第二位。)按序存儲,所以當以 rowkey 查詢數據時,可以提高速度。hregion的分裂,當hregion變的很大時會分裂成兩個,存放到不同的 RegionServer 中, 防止一個 Region 過大,導致查詢其中數據時速度很慢hbase 的系統結構: 主要有 clie nt master region Server zookeeper52、什么是分布式分布式處理則是將不同地點的, 或具有不同功能的,

44、 或擁有不同數據的多臺計算機通過 通信網絡連接起來, 在控制系統的統一管理控制下, 協調地完成大規模信息處理任務的計算 機系統。53 函數式編程的好處:1. 代碼簡潔,開發快速2. 接近自然語言,易于理解3. 更方便的代碼管理4. 易于“并發編程”5. 代碼的熱升級 (函數式編程沒有副作用, 只要保證接口不變, 內部實現是外部無關 的。所以,可以在運行狀態下直接升級代碼,不需要重啟,也不需要停機。 )54在linux中,比如啟動hadoop,會打印很多日志,什么命令可以不顯示這些日志?可以通過在命令前增加上 nohup 命令來實現55 concurrent 的 map 加鎖是加部分 鎖 是加的

45、哪部分?數據分段上56 環形緩沖區集群搭配的作用和優化?每個 MapperTask 有一個環形內存緩沖區, 用于存儲 map 任務的輸出。 默認大小 100MB (io.sort.mb 屬性),一旦達到閥值 0.8(io.sort.spill.percent ) ,一個后臺線程把內容寫到 (spill) 磁盤的指定目錄( mapred.local.dir )下的新建的一個溢出寫文件。寫磁盤前, 要 partition,sort,Combiner 。如果有后續的數據, 將會繼續寫入環形緩沖區中, 最終寫入下一個溢出文件中。環形緩沖區是一種緩沖區技術, 通過首尾相接的方式循環使用緩沖區, 解決了數

46、據量過 大時緩沖區大小過大的問題。57、 zookeeper 原理leader 和所有的 follower 都可以提供查詢功能 只有 leader 能夠提供增刪改的功能,如果客戶端連接 follower 表示要進行增刪改, follower 會將請求轉發給 leader 來處理。所有的增刪改的操作都會有一個版本號, 這個版本號是遞增唯一的, 用來記錄提案的順 序。如何選老大?選老大情況 1:集群剛啟動時,誰當老大都可以,一般是最先啟動的做老大選老大情況 2:老大掛了,集群會暫時停止對外服務進入選舉階段,所有follower都會廣播一個自己的所持有的最高版本給整個集群, 當大家收到其他 foll

47、woer 發過來的最高 版本信息后,就會進行投票,投給收到的版本信息最高的 follwer ,每個機器只能發一票, 此時選擇集群中數據版本最高的機器做老大, 任意一個 follower 當發現自己收到了過半的投 票(自己也可以投給自己) ,可以認為獲得了選舉勝利,可以成為 leader 了。老大如何決定一個提案是否通過?如果老大自己說了算, 那么如果剛好老大掛了, 其他人不知道老大同一的提案, 可 能就造成新選出來的 leader 不知道之前老大同意過的提案,從而造成違反一致性。不可行如果老大把提案發給所有人, 所有人都同意了才能通過提案, 這時如果集群中任意 一臺機器出問題,投票都無法進行,

48、相當于存在單節點故障的可能。不可取。折中一下, 老大收到提案后,發給所有人,所有人收到后都要回復老大,當老大收 到過半同意的投票時,則通過這個提案。這樣一來, 極端的情況下只要集群中有過半的機器還活著, 選出來的老大是一定知 道之前老大最后提案的。! 引申出來的結論是, zookeeper 集群必須過半存活才能正常工作!!又引申出來的結論是, 偶數臺機器提供的集群可靠性和偶數 -1 臺機器提供的可靠 性是相同的!所以 zookeeper 集群中機器的數量最好是基數個。58、 hadoop 的 namenode 可以存那些數據包括文件和 Block 之間關系的信息、 Block 數量信息、 Bl

49、ock 和 DataNode 之間的關系信 息59 NIO 和 BIO傳統的 BIO 面臨的問題:在執行如下操作時會產生阻塞:ACCEPT CONNECT READ WRITE 在高并發場景下,如上的方法產生的阻塞可能會產生一些無法避免的問題。在開發服務器程序時, 通常針對于每一個客戶端都要創建一個線程來處理, 而線程 的開辟和運行是相當耗費資源的, 服務器能夠運行的并發線程數量是很有限的。 在高并發場 景下, 大量的客戶端并發連接導致服務器創建大量線程, 會直接影響服務器的性能。 而一些 場景下客戶端連接后傳輸的數據并不多, 只是保持連接的狀態, 此時創建的大量線程閑置著 浪費服務器資源。

50、所以我們想到用少量的線程來處理多個客戶端的連接, 但是這種方式下傳 統 BIO 會有阻塞的問題決定了是無法實現的。NIO也叫做非阻塞式10,特點是可以在非阻塞模式下進行工作, ACCEPT CONNECT READ WRITE時都不會產生阻塞,從而可以解決 BI0在高并發場景下遇到的問題。BI0:面向流操作的是字節或字符InputStream OutputStream Reader Writer流只能單向傳輸數據 操作的是字節或字符NI0:面向通道操作的是緩沖區Channel Buffer Selector通道可以雙向的傳輸數據 操作的是緩沖區60 聚類包括那些?一堆數據,怎么用聚類中的一個算法實現?K-MEANSk-means 算法接受輸入量 k ;然后將 n 個數據對象劃分為 k 個聚類以便使得所獲得的聚類 滿足: 同一聚類中的對象相似度較高; 而不同聚類中的對象相似度較小。 聚類相似度是利用 各聚類中對象的均值所獲得一個“中心對象” (引力中心)來進行計算的。k-means 算法的工作過程說明如下:首先從 n 個數據對象任

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論