? ? hadoop的分布式文件系統(tǒng)HDFS的存儲方式是,將數(shù)據(jù)分成block,分布式存儲在整個hadoop集群的datanode中,每個block默認的大小是64M,這些block文件的具體存儲位置是在hadoop的配置文件中定義的,進入/home/hadoop2/hadoop2/etc/hadoop的配置文件目錄(hadoop版本為社區(qū)版2.2.0):
vi
/home/hadoop2/hadoop2/etc/hadoop/hdfs-
site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:
9001
</value>
</property>
<property>
<name>dfs.namenode.name.
dir
</name>
<value>
file
:/home/hadoop2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.
dir
</name>
<value>
file
:/home/hadoop2/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>
2
</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>
true
</value>
</property>
</configuration>
其中,標黃色的屬性dfs.datanode.data.dir為block存儲路徑的設置選項。
? ? 正常情況下,我們?nèi)缟蠄D中的設置自己設定的路徑就可以了;但是,隨著hdfs中的數(shù)據(jù)量越來越大,會出現(xiàn)datanode上block存儲路徑所在的掛載點空間不足的情況,本文中的情況就是 /home 掛載點的剩余空間即將不足了,但是在該datanode主機上,/ 掛載點還有非常多的剩余空間,我們希望將數(shù)據(jù)存儲到 / 掛載點的目錄下,防止 /home 掛載點被塞滿。
? ?這樣我們首先需要切換到root管理員用戶下,因為 / 掛載點的擁有者是root,我們的hadoop2用戶對該目錄沒有足夠的權(quán)限。接著我們在該目錄下創(chuàng)建一個存儲block的文件目錄:
su
-
mkdir
/hdfs/data
這樣還不能直接設置路徑,由于我們是用root用戶創(chuàng)建的目錄,該目錄的擁有者和組群都是root,hadoop2用戶沒有足夠權(quán)限,如果設置為datanode的block存儲路徑,將會拋出異常,導致datanode進程關閉,hadoop集群無法正常啟動。我們需要更改/hdfs目錄及其子目錄的擁有者和組群為hadoop2,如下:
cd /
chown
hadoop2:hadoop2 -R /hdfs
?chown命令用于修改所有者,其中,hadoop2:hadoop2為擁有者和組群,-R為迭代修改所有子目錄和文件。
這樣我們就可以修改hdfs-site.xml文件的datanode的屬性為多個路徑:
<property>
<name>dfs.datanode.data.
dir
</name>
<value>
file
:
///
home/hadoop2/dfs/data,/hdfs/data
</value>
</property>
路徑之間只需用逗號 “ , ”分隔就可以了。
這樣設置后,重新啟動集群的dfs,bin/start-dfs.sh,通過jps命令查看集群的相關進程是否都正常啟動:
jps
6935
HQuorumPeer
6115
SecondaryNameNode
6423
NodeManager
6317
ResourceManager
18005
Bootstrap
5837
NameNode
5956
DataNode
7143
HRegionServer
7005
HMaster
2351
Jps
標黃色的為啟動dfs后必須存在的進程,其他的進程為Hbase相關進程。這樣設置啟動以后,再往HDFS中寫入數(shù)據(jù)時,產(chǎn)生的block數(shù)據(jù)塊就會分別寫入兩個不同的目錄中,均勻分布,不會出現(xiàn)一個路徑的掛載空間不足的情況,如果再次占滿,可以再次掛載新的磁盤,繼續(xù)添加路徑。
另外,不同的datanode中,block的路徑屬性可以設置為不相同,不影響集群的正常運行。
?
轉(zhuǎn)載請注明出處: http://www.cnblogs.com/bxljoy/p/3863539.html ?
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

