? ? hadoop的分布式文件系統(tǒng)HDFS的存儲(chǔ)方式是,將數(shù)據(jù)分成block,分布式存儲(chǔ)在整個(gè)hadoop集群的datanode中,每個(gè)block默認(rèn)的大小是64M,這些block文件的具體存儲(chǔ)位置是在hadoop的配置文件中定義的,進(jìn)入/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>
其中,標(biāo)黃色的屬性dfs.datanode.data.dir為block存儲(chǔ)路徑的設(shè)置選項(xiàng)。
? ? 正常情況下,我們?nèi)缟蠄D中的設(shè)置自己設(shè)定的路徑就可以了;但是,隨著hdfs中的數(shù)據(jù)量越來(lái)越大,會(huì)出現(xiàn)datanode上block存儲(chǔ)路徑所在的掛載點(diǎn)空間不足的情況,本文中的情況就是 /home 掛載點(diǎn)的剩余空間即將不足了,但是在該datanode主機(jī)上,/ 掛載點(diǎn)還有非常多的剩余空間,我們希望將數(shù)據(jù)存儲(chǔ)到 / 掛載點(diǎn)的目錄下,防止 /home 掛載點(diǎn)被塞滿。
? ?這樣我們首先需要切換到root管理員用戶下,因?yàn)?/ 掛載點(diǎn)的擁有者是root,我們的hadoop2用戶對(duì)該目錄沒(méi)有足夠的權(quán)限。接著我們?cè)谠撃夸浵聞?chuàng)建一個(gè)存儲(chǔ)block的文件目錄:
su - mkdir /hdfs/data
這樣還不能直接設(shè)置路徑,由于我們是用root用戶創(chuàng)建的目錄,該目錄的擁有者和組群都是root,hadoop2用戶沒(méi)有足夠權(quán)限,如果設(shè)置為datanode的block存儲(chǔ)路徑,將會(huì)拋出異常,導(dǎo)致datanode進(jìn)程關(guān)閉,hadoop集群無(wú)法正常啟動(dòng)。我們需要更改/hdfs目錄及其子目錄的擁有者和組群為hadoop2,如下:
cd /
chown
hadoop2:hadoop2 -R /hdfs
?chown命令用于修改所有者,其中,hadoop2:hadoop2為擁有者和組群,-R為迭代修改所有子目錄和文件。
這樣我們就可以修改hdfs-site.xml文件的datanode的屬性為多個(gè)路徑:
<property> <name>dfs.datanode.data. dir </name> <value> file : /// home/hadoop2/dfs/data,/hdfs/data </value> </property>
路徑之間只需用逗號(hào) “ , ”分隔就可以了。
這樣設(shè)置后,重新啟動(dòng)集群的dfs,bin/start-dfs.sh,通過(guò)jps命令查看集群的相關(guān)進(jìn)程是否都正常啟動(dòng):
jps 6935 HQuorumPeer 6115 SecondaryNameNode 6423 NodeManager 6317 ResourceManager 18005 Bootstrap 5837 NameNode 5956 DataNode 7143 HRegionServer 7005 HMaster 2351 Jps
標(biāo)黃色的為啟動(dòng)dfs后必須存在的進(jìn)程,其他的進(jìn)程為Hbase相關(guān)進(jìn)程。這樣設(shè)置啟動(dòng)以后,再往HDFS中寫(xiě)入數(shù)據(jù)時(shí),產(chǎn)生的block數(shù)據(jù)塊就會(huì)分別寫(xiě)入兩個(gè)不同的目錄中,均勻分布,不會(huì)出現(xiàn)一個(gè)路徑的掛載空間不足的情況,如果再次占滿,可以再次掛載新的磁盤(pán),繼續(xù)添加路徑。
另外,不同的datanode中,block的路徑屬性可以設(shè)置為不相同,不影響集群的正常運(yùn)行。
?
轉(zhuǎn)載請(qǐng)注明出處: http://www.cnblogs.com/bxljoy/p/3863539.html ?
hadoop 2.2.0的datanode中存儲(chǔ)block的多個(gè)文件夾的負(fù)載均衡問(wèn)題
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
