關於Hadoop
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
查看版本
- 1
- 2
- 3
- 4
- 5
- 6
- 7
運行jar文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
檢查Hadoop本地庫和壓縮庫的可用性
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
文件歸檔 Archive
hadoop不適合小文件的存儲,小文件本身就占用了很多metadata,就會造成namenode越來越大。
Hadoop Archives (HAR files)是在0.18.0版本中引入的,它的出現就是為了
緩解大量小文件消耗namenode內存的問題。
HAR文件是通過在HDFS上構建一個層次化的文件系統來工作。一個HAR文件是通過hadoop的archive命令來創建,而這個命令實際上也是運行了一個MapReduce任務來將小文件打包成HAR。對於client端來說,使用HAR文件沒有任何影響。所有的原始文件都使用har://URL。但在HDFS端它內部的文件數減少了。
通過HAR來讀取一個文件並不會比直接從HDFS中讀取文件高效,而且實際上可能還會稍微低效一點,因為對每一個HAR文件的訪問都需要完成兩層讀取,index文件的讀取和文件本身數據的讀取。並且盡管HAR文件可以被用來作為MapReduce job的input,但是並沒有特殊的方法來使maps將HAR文件中打包的文件當作一個HDFS文件處理。
創建文件 hadoop archive -archiveName xxx.har -p /src /dest
查看內容 hadoop fs -lsr har:///dest/xxx.har
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
關於HDFS
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
校驗檢查某個目錄是否健康
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
更加詳細的查看命令
- 1
作用:
檢查文件系統的健康狀態
可以查看一個文件所在的數據塊
可以刪除一個壞塊。
可以查找一個缺失的塊。
balancer磁盤均衡器
命令:hdfs balancer
,也可以動過腳本啟動均衡器。
Hadoop的HDFS集群非常容易出現機器與機器之間磁盤利用率不平衡的情況,比如集群中添加新的數據節點。當HDFS出現不平衡狀況的時候,將引發很多問題,比如MR程序無法很好地利用本地計算的優勢,機器之間無法達到更好的網絡帶寬使用率,機器磁盤無法利用等等。可見,保證HDFS中的數據平衡是非常重要的。
- 1
hdfs dfsadmin
可以設置安全模式,如出現異常可以設置為只讀模式。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
edits和fsimage文件查看器
edits和fsimage是兩個至關重要的文件,其中edits負責保存自最新檢查點后命名空間的變化,起着日志的作用,而fsimage則保存了最新的檢查點信息。這個兩個文件中的內容使用普通文本編輯器是無法直接查看的,幸運的是hadoop為此准備了專門的工具用於查看文件的內容,這些工具分別為oev和oiv,可以使用hdfs調用執行。
oiv(offline image viewer的縮寫),用於將fsimage文件的內容轉儲到指定文件中以便於閱讀,該工具還提供了只讀的WebHDFS API以允許離線分析和檢查hadoop集群的命名空間。oiv在處理非常大的fsimage文件時是相當快的,如果該工具不能夠處理fsimage,它會直接退出。該工具不具備向后兼容性,比如使用hadoop-2.4版本的oiv不能處理hadoop-2.3版本的fsimage,只能使用hadoop-2.3版本的oiv。就像它的名稱所提示的(offline),oiv也不需要hadoop集群處於運行狀態。oiv具體語法可以通過在命令行輸入hdfs oiv
查看。
oiv支持三種輸出處理器,分別為Ls、XML和FileDistribution,通過選項-p指定。
Ls是默認的處理器,該處理器的輸出與lsr命令的輸出極其相似,以相同的順序輸出相同的字段,比如目錄或文件的標志、權限、副本數量、所有者、組、文件大小、修改日期和全路徑等。與lsr不同的是,該處理器的輸出包含根路徑/,另一個重要的不同是該處理器的輸出不是按照目錄名稱和內容排序的,而是按照在fsimage中的順序顯示。除非命名空間包含較少的信息,否則不太可能直接比較該處理器和lsr命令的輸出。Ls使用INode塊中的信息計算文件大小並忽略-skipBlocks選項。示例如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
XML處理器輸出fsimage的xml文檔,包含了fsimage中的所有信息,比如inodeid等。該處理器的輸出支持XML工具的自動化處理和分析,由於XML語法格式的冗長,該處理器的輸出也最大。
- 1
- 2
FileDistribution是分析命名空間中文件大小的工具。為了運行該工具需要通過指定最大文件大小和段數定義一個整數范圍[0,maxSize],該整數范圍根據段數分割為若干段[0, s[1], …, s[n-1], maxSize],處理器計算有多少文件落入每個段中([s[i-1], s[i]),大於maxSize的文件總是落入最后的段中,即(s[n-1], maxSize)。輸出文件被格式化為由tab分隔的包含Size列和NumFiles列的表,其中Size表示段的起始,NumFiles表示文件大小落入該段的文件數量。在使用FileDistribution處理器時還需要指定該處理器的參數maxSize和step,若未指定,默認為0。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
oev是(offline edits viewer(離線edits查看器)的縮寫),該工具只操作文件因而並不需要hadoop集群處於運行狀態。該工具提供了幾個輸出處理器,用於將輸入文件轉換為相關格式的輸出文件,可以使用參數-p指定。
目前支持的輸出格式有binary(hadoop使用的二進制格式)、xml(在不使用參數p時的默認輸出格式)和stats(輸出edits文件的統計信息)。
該工具支持的輸入格式為binary和xml,其中的xml文件為該工具使用xml處理器的輸出文件。
由於沒有與stats格式對應的輸入文件,所以一旦輸出為stats格式將不可以再轉換為原有格式。比如輸入格式為bianry,輸出格式為xml,可以通過將輸入文件指定為原來的輸出文件,將輸出文件指定為原來的輸入文件實現binary和xml的轉換,而stats則不可以。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
在輸出文件中,每個RECORD記錄了一次操作,當edits文件破損進而導致hadoop集群出現問題時,保存edits文件中正確的部分是可能的,可以通過將原有的bianry文件轉換為xml文件,並手動編輯xml文件然后轉回bianry文件來實現。最常見的edits文件破損情況是丟失關閉記錄的部分(OPCODE為-1),關閉記錄如下所示。如果在xml文件中沒有關閉記錄,可以在最后正確的記錄后面添加關閉記錄,關閉記錄后面的記錄都將被忽略。
- 1
- 2
- 3
- 4
- 5
關於yarn
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
查看yarn當前運行任務列表,可使用如下命令查看:
- 1
如需殺死當前某個作業,使用kill application-id的命令如下:
- 1