9 13 hadoop分布式檔案系統使用指南

2022-09-17 16:15:14 字數 4800 閱讀 6050

當請求被傳送到伺服器時,我們需要執行一些基於響應的任務。

每當 readystate 改變時,就會觸發

本文件的目標是為hadoop分布式檔案系統(hdfs)的使用者提供乙個學習的起點,這裡的hdfs既可以作為hadoop集群的一部分,也可以作為乙個獨立的分布式檔案系統。雖然hdfs在很多環境下被設計成是可正確工作的,但是了解hdfs的工作原理對在特定集群上改進hdfs的執行效能和錯誤診斷都有極大的幫助。

hdfs是hadoop應用用到的乙個最主要的分布式儲存系統。乙個hdfs集群主要由乙個namenode和很多個datanode組成:namenode管理檔案系統的元資料,而datanode儲存了實際的資料。hdfs的體系結構在這裡有詳細的描述。本文件主要關注使用者以及管理員怎樣和hdfs進行互動。hdfs架構設計中的**描述了namenode、datanode和客戶端之間的基本的互動操作。基本上,客戶端聯絡namenode以獲取檔案的元資料或修飾屬性,而真正的檔案i/o操作是直接和datanode進行互動的。

下面列出了一些多數使用者都比較感興趣的重要特性。

下面的文件描述了如何安裝和搭建hadoop集群:

文件餘下部分假設使用者已經安裝並執行了至少包含乙個datanode節點的hdfs。就本文目的來說,namenode和datanode可以執行在同乙個物理主機上。

namenode和datanode各自啟動了乙個內建的web伺服器,顯示了集群當前的基本狀態和資訊。在預設配置下namenode的首頁位址是http://namenode-name:50070/。這個頁面列出了集群裡的所有datanode和集群的基本狀態。這個web介面也可以用來瀏覽整個檔案系統(使用namenode首頁上的"browse the file system"鏈結)。

hadoop包括一系列的類shell的命令,可直接和hdfs以及其他hadoop支援的檔案系統進行互動。bin/hadoop fs -help 命令列出所有hadoop shell支援的命令。而 bin/hadoop fs -help command-name 命令能顯示關於某個命令的詳細資訊。這些命令支援大多數普通檔案系統的操作,比如複製檔案、改變檔案許可權等。它還支援一些hdfs特有的操作,比如改變檔案副本數目。

'bin/hadoop dfsadmin' 命令支援一些和hdfs管理相關的操作。bin/hadoop dfsadmin -help 命令能列出所有當前支援的命令。比如:

namenode將對檔案系統的改動追加儲存到本地檔案系統上的乙個日誌檔案(edits)。當乙個namenode啟動時,它首先從乙個映像檔案(fsimage)中讀取hdfs的狀態,接著應用日誌檔案中的edits操作。然後它將新的hdfs狀態寫入(fsimage)中,並使用乙個空的edits檔案開始正常操作。因為namenode只有在啟動階段才合併fsimage和edits,所以久而久之日誌檔案可能會變得非常龐大,特別是對大型的集群。日誌檔案太大的另乙個***是下一次namenode啟動會花很長時間。

secondary namenode定期合併fsimage和edits日誌,將edits日誌檔案大小控制在乙個限度下。因為記憶體需求和namenode在乙個數量級上,所以通常secondary namenode和namenode執行在不同的機器上。secondary namenode通過bin/start-dfs.sh在conf/masters中指定的節點上啟動。

secondary namenode的檢查點程序啟動,是由兩個配置引數控制的:

secondary namenode儲存最新檢查點的目錄與namenode的目錄結構相同。 所以namenode可以在需要的時候讀取secondary namenode上的檢查點映象。

如果namenode上除了最新的檢查點以外,所有的其他的歷史映象和edits檔案都丟失了, namenode可以引入這個最新的檢查點。以下操作可以實現這個功能:

namenode會從fs.checkpoint.dir目錄讀取檢查點, 並把它儲存在dfs.name.dir目錄下。 如果dfs.name.dir目錄下有合法的映象檔案,namenode會啟動失敗。 namenode會檢查fs.checkpoint.dir目錄下映象檔案的一致性,但是不會去改動它。

命令的使用方法請參考secondarynamenode 命令

.hdfs的資料也許並不是非常均勻的分布在各個datanode中。乙個常見的原因是在現有的集群上經常會增添新的datanode節點。當新增乙個資料塊(乙個檔案的資料被儲存在一系列的塊中)時,namenode在選擇datanode接收這個資料塊之前,會考慮到很多因素。其中的一些考慮的是:

由於上述多種考慮需要取捨,資料可能並不會均勻分布在datanode中。hdfs為管理員提供了乙個工具,用於分析資料塊分布和重新平衡datanode上的資料分布。hadoop-1652的附件中的乙個pdf是乙個簡要的rebalancer管理員指南。

使用方法請參考balancer 命令.

通常,大型hadoop集群是以機架的形式來組織的,同乙個機架上不同節點間的網路狀況比不同機架之間的更為理想。另外,namenode設法將資料塊副本儲存在不同的機架上以提高容錯性。hadoop允許集群的管理員通過配置dfs.network.script引數來確定節點所處的機架。當這個指令碼配置完畢,每個節點都會執行這個指令碼來獲取它的機架id。預設的安裝假定所有的節點屬於同乙個機架。這個特性及其配置引數在hadoop-692所附的pdf上有更詳細的描述。

namenode啟動時會從fsimage和edits日誌檔案中裝載檔案系統的狀態資訊,接著它等待各個datanode向它報告它們各自的資料塊狀態,這樣,namenode就不會過早地開始複製資料塊,即使在副本充足的情況下。這個階段,namenode處於安全模式下。namenode的安全模式本質上是hdfs集群的一種唯讀模式,此時集群不允許任何對檔案系統或者資料塊修改的操作。通常namenode會在開始階段自動地退出安全模式。如果需要,你也可以通過'bin/hadoop dfsadmin -safemode'命令顯式地將hdfs置於安全模式。namenode首頁會顯示當前是否處於安全模式。關於安全模式的更多介紹和配置資訊請參考j**adoc:setsafemode()

。hdfs支援fsck命令來檢查系統中的各種不一致狀況。這個命令被設計來報告各種檔案存在的問題,比如檔案缺少資料塊或者副本數目不夠。不同於在本地檔案系統上傳統的fsck工具,這個命令並不會修正它檢測到的錯誤。一般來說,namenode會自動修正大多數可恢復的錯誤。hdfs的fsck不是乙個hadoop shell命令。它通過'bin/hadoop fsck'執行。 命令的使用方法請參考fsck命令

fsck可用來檢查整個檔案系統,也可以只檢查部分檔案。

當在乙個已有集群上公升級hadoop時,像其他的軟體公升級一樣,可能會有新的bug或一些會影響到現有應用的非相容性變更出現。在任何有實際意義的hdsf系統上,丟失資料是不被允許的,更不用說重新搭建啟動hdfs了。hdfs允許管理員退回到之前的hadoop版本,並將集群的狀態回滾到公升級之前。更多關於hdfs公升級的細節在公升級wiki上可以找到。hdfs在乙個時間可以有乙個這樣的備份。在公升級之前,管理員需要用bin/hadoop dfsadmin -finalizeupgrade(公升級終結操作)命令刪除存在的備份檔案。下面簡單介紹一下一般的公升級過程:

這裡的檔案許可權和其他常見平台如linux的檔案許可權類似。目前,安全性僅限於簡單的檔案許可權。啟動namenode的使用者被視為hdfs的超級使用者。hdfs以後的版本將會支援網路驗證協議(比如kerberos)來對使用者身份進行驗證和對資料進行加密傳輸。具體的細節請參考許可權使用管理指南。

現在,hadoop已經執行在上千個節點的集群上。powered by hadoop頁面列出了一些已將hadoop部署在他們的大型集群上的組織。hdfs集群只有乙個namenode節點。目前,namenode上可用記憶體大小是乙個主要的擴充套件限制。在超大型的集群中,增大hdfs儲存檔案的平均大小能夠增大集群的規模,而不需要增加namenode的記憶體。預設配置也許並不適合超大規模的集群。hadoop faq頁面列舉了針對大型hadoop集群的配置改進。

這個使用者手冊給使用者提供了乙個學習和使用hdsf檔案系統的起點。本文件會不斷地進行改進,同時,使用者也可以參考更多的hadoop和hdfs文件。下面的列表是使用者繼續學習的起點:

hadoop wiki:hadoop wiki文件首頁。這個指南是hadoop**樹中的一部分,與此不同,hadoop wiki是由hadoop社群定期編輯的。

hadoop wiki上的faq。

hadoop j**adoc api。

hadoop使用者郵件列表:core-user[at]hadoop.apache.org。

檢視conf/hadoop-default.xml檔案。這裡包括了大多數配置引數的簡要描述。

命令手冊:命令使用說明。

last published: 10/10/2020 17:29:59

onreadystatechange 事件。

readystate 屬性存有 xmlhttprequest 的狀態資訊。

下面是 xmlhttprequest 物件的三個重要的屬性:

屬性描述

onreadystatechange

儲存函式(或函式名),每當 readystate 屬性改變時,就會呼叫該函式。

readystate

存有 xmlhttprequest 的狀態。從 0 到 4 發生變化。

status

200: "ok"

404: 未找到頁面

在 onreadystatechange 事件中,我們規定當伺服器響應已做好被處理的準備時所執行的任務。

當 readystate 等於 4 且狀態為 200 時,表示響應已就緒:

嘗試一下 »

注意:onreadystatechange 事件被觸發 4 次(0 - 4), 分別是: 0-1、1-2、2-3、3-4,對應著 readystate 的每個變化。

hadoop分布式安裝

工欲善其事,必先利其器。在資料橫行的時代,我們的大神hadoop 出來了,作為分布式處理資料 不但快,而且一般用配置不高的電腦業可以做集群。那麼,現在就開始安裝我們的hadoop 進入hadoop之旅 檔案,這裡就去 apache 的命令進行解壓 tar zxvf hadoop x.tar.gz 好...

hadoop分布式快取

概念 使用distributedcache方法 1.在main方法中載入共享檔案的hdfs路徑,路徑可以是目錄也可以是檔案。可以在路徑中末位追加 別名,在map階段可以使用該別名 string cache hdfs cache cache myfile myfile是別名job.addcachefi...

hadoop偽分布式

首先是本機模式的搭建,如 1 hdfs dfs ls 檢視本地分布式檔案系統,查詢結果為你本機linux檔案系統,說明你的本地模式已經搭建成功 2 進入安裝目錄hadoop資料夾下,進入etc hadoop下對四個配置檔案進行配置 core site.xml hdfs site.xml mapred...