十萬個為什麼(hadoop 1期)?

2021-10-12 01:14:38 字數 3231 閱讀 4507

納尼?納尼?納尼?

1.什麼是map的資料本地化優化?

hadoop 在儲存有輸入資料(hdfs中的資料)的節點上執行map任務,可以獲得最佳效能,因為他無需使用寶貴的集群頻寬資源。這就是所謂的資料本地化優化,但是有時對於乙個map任務的輸入分片來說,儲存該分片的hdfs資料塊副本的所有節點可能正在執行其他map任務,此時作業排程需要從某一資料塊所在的機架中的乙個節點上尋找乙個空閒的map槽(slot)來執行該map任務分片。僅僅在非常偶然的情況下,會使用其他機架中的節點執行該map 任務,這將導致機架與機架之間的網路傳輸。

2.為什麼map最佳分片大小與塊大小相同?

因為它是確保可以儲存在單個節點上的最大輸入塊的大小,如果分片跨越兩個資料塊,那麼對於任何乙個hdfs節點,基本上都不可能同時儲存這兩個資料塊,因此分片中的部分資料需要通過網路傳輸到map任務執行的節點,與使用本地資料執行整個mao任務相比,這種方法顯然效率更低。

3.map任務將其輸入寫入本地硬碟,而非hdfs,這是為什麼?
因為map的輸出是中間結果,該中間結果由reduce任務處理後才產生最終輸出結果,一旦完成,map的輸出結果就可以刪除。因此如果把他儲存在hdfs中並實現備份,難免有些小題大做。如果執行map任務的節點在將map中間結果傳送給reduce任務之前失敗,hadoop 將在另乙個節點上重新執行這個map以再次構建map中間結果。

hdfs 的塊比磁碟的塊大,其目的是為了最小化定址開銷。如果塊足夠大,從磁碟傳輸資料的時間會明顯大於定位這個塊開始位置所需的時間。因而,傳輸乙個由多個塊組成的大檔案的時間取決於磁碟傳輸速率。

但是這個引數也不會設定的過大,mr中的map任務通常一次只處理乙個塊中的資料,因此如果任務數太少,作業的執行速度就會比較慢。 

5.hdfs 中塊進行抽象的好處是什麼?
>1 乙個檔案的大小可以大於網路中任意乙個磁碟的容量。檔案的所有塊並不需要儲存在同乙個磁碟上。

>2 使用抽象塊而非整個檔案作為儲存單元,大大簡化了儲存子系統的設計。對於故障種類繁多的分布式系統來說尤為重要

>3 塊還非常適合用於資料備份進而提供資料容錯能力和提高可用性 

6.hadoop 對於namenode單點問題有哪些容錯機制?

>1 備份那些組成檔案系統運輸局持久狀態的檔案,hadoop 可以通過配置使namenode在多個檔案系統上儲存元資料的持久狀態。這些寫操作是實時同步的,且是原子操作。一般的配置是,將持久狀態寫入本地磁碟的同時,寫入乙個遠端掛載的網路檔案系統(nfs)。

>2 執行乙個輔助namenode,但它不能被用作namenode,這個輔助namenode的重要作用是定期合併編輯日誌與命名空間映象,以防止編輯日誌過大。這個輔助namenode 一般在另一台單獨的物理計算機上執行,因為他需要占用大量cpu時間,並且需要與namenode 一樣多的記憶體執行合併操作。 

7.hadoop2 對hdfs 高可用(ha)是怎麼做的?

配置活動-備用(active-standby)namenode,當活動namenode失效,備用namenode就會接管他的任務並開始服務與來自客戶端的請求,不會有任何明顯中斷。

1.namenode之間通過高可用共享儲存(nfs或**m)實現編輯日誌的共享,只有活動namenode才能對外提供讀寫服務,活動namenode把editlog寫入jn中,備用namenode從jn中獲取editlog合併到fsimage中,當備用的namenode接管工作之後,它將通讀共享編輯日誌直至末尾,以實現與活動namenode的狀態同步,並繼續讀取由活動namenode寫入的新條目。

2.datanode同時向namenode傳送資料塊處理報告,因為資料塊的對映資訊儲存在namenode的記憶體裡,而非磁碟。

3.客戶端需要使用特定的機制來處理namenode的失效問題,這一機制對使用者是透明的

4.輔助namenode的角色被備用namenode所包含,備用namenode為活動namenode命名空間設定週期性檢查點

5.為了實現熱備,增加failovercontroller(故障轉移控制器)和zookeeper,failovercontroller與zookeeper通訊,通過zookeeper選舉機制,failovercontroller通過rpc讓namenode轉換為active或standby。 

nfs(network file system 網路檔案系統)nfs作為active namenode和standby namenode之間資料共享的儲存。

active namenode會把最近的edits檔案寫到nfs,而standby namenode從nfs中把資料讀過來。

這個方式的缺點是,如果active或standby有乙個和nfs之間網路有問題,則會造成他們之前資料的同步出問題。並且不能保證同一時間只有乙個namenode向nfs中寫入資料

**m(quorum journal manager 群體日誌管理器)【目前hadoop2.x使用】

**m是乙個專用的hdfs實現,提供了乙個高可用的編輯日誌。這種方式可以解決上述nfs容錯機制不足的問題。

同一時間**m僅允許乙個namenode向編輯日誌中寫入資料。

故障轉移控制器(failover controller),管理著將活動namenode轉移為備用namenode的轉換過程。有多重故障轉移控制器,但預設的一種是使用了zookeeper來確保有且僅有乙個活動namenode。每乙個namenode執行著乙個輕量級的故障轉移控制器。其工作就是監視宿主namenode是否失效(通過乙個簡單的心跳機制實現)並在namenode失效時進行故障轉移管理員也可以手動發起故障轉移,例如在日常維護時。

jn:active和standby之間是通過一組日誌節點journal node(數量是奇數,可以是3,5,7...,2n+1)來共享資料。active把最近的edits檔案寫到2n+1個journal node上,只要有n+1個寫入成功,就認為這次寫入操作成功了。然後standby就可以從journalnode上讀取了。**m方式有容錯的機制,可以容忍n個journalnode的失敗。  

十萬個為什麼

目錄 import sys import some module noqa答案 將 noqa新增到一行表示linter 乙個自動檢查 質量的程式 不應該檢查此行.可能生成的任何警告都將被忽略。那條線可能有一些 看起來很糟糕 的東西,但開發商理解並打算出於某種原因它在那裡 有關更多資訊,請參閱flak...

十萬個為什麼 SVG

這兩天學習了下 svg 在專案中的使用,學到了以前很多不知道東西,在這裡打算以問答的形式作個總結。專案中使用 svg 的好處?svg總結起來用兩個優點,首先最主要的放大不會失真,其次相對同樣的圖示.png,圖示.svg 位元組更小。所以應用到專案中意義就非常明顯,放大不會失真,那麼針對 androi...

十萬個為什麼 亂序(二)

為什麼注意力會被消弱?注意會如同肌肉一般,在集中注意的過程中會消耗大量的能量。如果人體處於血糖濃度不足的情況下,那麼注意力難以集中。自控力與注意力有什麼關係?在自控的時候,我們必然需要集中注意力控制,那麼可以將注意力體現為自控力的燃料。興奮狀態下,自控力會有什麼變換?如果有一種藥物可以保持興奮,那麼...