hadoop某節點執行較慢,通過什麼機制解決

時間 2022-06-19 11:20:04

1樓:老王從來不扯淡

乙個節點需要執行的命令 答:(1)hadoop job clist 得到job的id,然後執 行 hadoop job -kill jobid就可以殺死乙個指定jobid的job工作了。 (2)hadoop fs -rmr /tmp/aaa 3 增加乙個新的節點在新的幾點上執行 hadoop daemon.

sh start datanode hadooop daemon.sh start tasktracker 然後在主節點中執行 hadoop dfsadmin -refreshnodes 刪除乙個節點的時候,只需要在主節點執行 hadoop mradmin -refreshnodes 請列出你所知道的hadoop排程器,並簡要說明其工作方法 答:fifo schedular :

預設,先進先出的原則 capacity sc

hadoop上傳檔案效率特別慢,怎麼解決

2樓:

一、讀寫機制

首先來看檔案讀取機制:儘管datanode實現了檔案儲存空間的水平擴充套件和多副本機制,但是針對單個具體檔案的讀取,hadoop預設的api介面並沒有提供多datanode的並行讀取機制。基於hadoop提供的api介面實現的雲盤客戶端也自然面臨同樣的問題。

hadoop的檔案讀取流程如下圖所示:

使用hdfs提供的客戶端開發庫,向遠端的namenode發起rpc請求;

namenode會視情況返回檔案的部分或者全部block列表,對於每個block,namenode都會返回有該block拷貝的datanode位址;

客戶端開發庫會選取離客戶端最接近的datanode來讀取block;

讀取完當前block的資料後,關閉與當前的datanode連線,並為讀取下乙個block尋找最佳的datanode;

當讀完列表的block後,且檔案讀取還沒有結束,客戶端開發庫會繼續向namenode獲取下一批的block列表。

讀取完乙個block都會進行checksum驗證,如果讀取datanode時出現錯誤,客戶端會通知namenode,然後再從下乙個擁有該block拷貝的datanode繼續讀取。

這裡需要注意的關鍵點是:多個datanode順序讀取。

其次再看檔案的寫入機制:

使用hdfs提供的客戶端開發庫,向遠端的namenode發起rpc請求;

namenode會檢查要建立的檔案是否已經存在,建立者是否有許可權進行操作,成功則會為檔案建立乙個記錄,否則會讓客戶端丟擲異常;

當客戶端開始寫入檔案的時候,開發庫會將檔案切分成多個packets,並在內部以"data queue"的形式管理這些packets,並向namenode申請新的blocks,獲取用來儲存replicas的合適的datanodes列表, 列表的大小根據在namenode中對replication的設定而定。開始以pipeline(管道)的形式將packet寫入所有的replicas中。開發庫把packet以流的方式寫入第乙個 datanode,該datanode把該packet儲存之後,再將其傳遞給在此pipeline中的下乙個datanode,直到最後乙個 datanode,這種寫資料的方式呈流水線的形式。

最後乙個datanode成功儲存之後會返回乙個ack packet,在pipeline裡傳遞至客戶端,在客戶端的開發庫內部維護著"ack queue",成功收到datanode返回的ack packet後會從"ack queue"移除相應的packet。

如果傳輸過程中,有某個datanode出現了故障,那麼當前的pipeline會被關閉,出現故障的datanode會從當前的 pipeline中移除,剩餘的block會繼續剩下的datanode中繼續以pipeline的形式傳輸,同時namenode會分配乙個新的 datanode,保持replicas設定的數量。

二、解決方案

1.檔案整體層面:採用並行訪問多執行緒(多程序)份多檔案並行讀取。

2.block塊讀取:改寫hadoop介面擴充套件,多block並行讀取。

2.上傳效率優化

上傳效率優化只能採用檔案整體層面的並行處理,不支援分block機制的多block並行讀取。

閱讀全文

某二叉樹共有節點,其中有度為1的節點,則葉子節點數為多少

阪本大佬 葉子節點數為五。首先由明確二叉樹的基本概念以及度的基本概念。1 二叉樹 在電腦科學中,二叉樹是每個結點最多有兩個子樹的樹結構。2 度 一個節點的子樹數目,如果有一個子樹那麼度為1,如果沒有則度為零 葉子節點 如果度為2就是有兩個子樹。計算常用公式 設二叉樹度為1節點個數為n1,度為2節點個...

vista下執行某軟體

應該是不相容。可以進到該軟體的執行程式,那個.exe檔案,右鍵屬性,點選 相容性 項,試一試。不行的話,看看這個軟體的最新版本。我也好幾個軟體不能在vista下使用,已經沒有新版本,只好用兩台電腦了 都是正版啊 裝雙系統也行 是不相容vista系統 可能是軟體本身的問題,也可能是系統的問題!重灌一下...

執行3DMAX應把虛擬記憶體設為多少較合適

虛擬記憶體就是在你的物理記憶體不夠用時把一部分硬碟空間作為記憶體來使用,不過由於硬碟傳輸的速度要比記憶體傳輸速度慢的多,所以使用虛擬記憶體比物理記憶體效率要慢。設的太大會產生大量的碎片,嚴重影響系統速度,設的太小就不夠用,於是系統就會提示你虛擬記憶體太小。根據微軟公司的建議,虛擬記憶體設為物理記憶體...