您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何使用FUSE掛載HDFS,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
因為要使用iozone和dd對HDFS做個簡單的測試,所以需要將HDFS掛載到本地,掛載過程不復雜,但中間出現(xiàn)了各種各樣的錯誤,弄了有半個星期,終于測試完畢?,F(xiàn)將整個掛載及解決錯誤的過程記錄下來,大家共同學習討論。
一、FUSE安裝
安裝步驟很簡單
1、解壓 $ tar zxvf fuse-2.9.3.tar.gz
2、進入fuse目錄 $ cd /usr/local/fuse-2.9.3
3、$ ./configure
4、$ make
5、$ make install
6、$ modprobe fuse (自動載入fuse模塊)
二、HDFS掛載
1、增加系統(tǒng)配置
$ sudo vi /etc/profile
增加如下內(nèi)容
重啟集群,發(fā)現(xiàn)所有的datanode都在啟動后的幾秒鐘內(nèi)掛掉了,查看日志,發(fā)現(xiàn)報錯:
FATAL ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Shutting down. Incompatible version or revision.DataNode version '1.2.1' and revision '1503152' and NameNode version '1.2.2-SNAPSHOT' and revision ' and hadoop.relaxed.worker.version.check is not enabled and hadoop.skip.worker.version.check is not enabled
版本不匹配,還以為是ant編譯過程中使用的包的版本問題,結果使用ant clean命令把之前編譯的都清除了。以為這下應該恢復正常了,結果更糟糕的問題出現(xiàn)了。集群可以正常啟動了,通過命令行hadoop dfsadmin -report能夠看到每個節(jié)點都處于正常狀態(tài),但是就是不能通過瀏覽器查看。
三、iozone測試
iozone測試比較簡單,iozone主要用來測試操作系統(tǒng)文件系統(tǒng)性能的測試工具,該工具所測試的范圍主要有,Write , Re-write, Read, Re-Read, Random Read, Random Write, Random Mix, Backwards Read, Record Rewrite, Strided Read, Fwrite, Frewrite, Fread, Freread, Mmap, Async I/O。使用iozone可以在多線程、多cpu,并指定cpu cache空間大小以及同步或異步I/O讀寫模式的情況下進行測試文件操作性能。
命令為:iozone –s 128k –i 0 –i 1 –i 2 –i 3 –i 4 –i 5 –i 8 –t 8 –r 1m –B > test.txt
參數(shù)解釋:0=write/rewrite, 1=read/re-read, 2=random-read/write 3=Read-backwards, 4=Re-write-record, 5=stride-read, 6=fwrite/re-fwrite, 7=fread/Re-fread, 8=random mix, 9=pwrite/Re-pwrite, 10=pread/Re-pread, 11=pwritev/Re-pwritev, 12=preadv/Re-preadv). =pread/Re-pread, 11=pwritev/Re-pwritev, 12=preadv/Re-preadv,-t表示線程數(shù),-r block size 指定一次寫入/讀出的塊大小,-s file size 指定測試文件的大小,-f filename 指定測試文件的名字,完成后會自動刪除(這個文件必須指定你要測試的那個硬盤中),-F file1 file2... 指定多線程下測試的文件名,-B或-b指定到輸出文件。iozone參數(shù)很多,可以根據(jù)使用需求具體學習某個參數(shù)。
四、dd測試
dd測試并不是標準的磁盤和文件系統(tǒng)讀寫測試工具,只是Linux系統(tǒng)的一個磁盤命令,但dd命令實現(xiàn)的磁盤拷貝功能,可以間接地反映磁盤的讀寫能力,因此,在測試磁盤和文件系統(tǒng)的讀寫性能時,也常常通過dd命令進行測試。dd測試讀寫命令分開,
寫入操作:dd if=/dev/zero of=/tmp/hdfs/zerofiles bs=4M count=1240 conv=fdatasync
讀取操作:dd if=/tmp/hdfs/zerofiles of=/dev/null bs=4M count=1240
其中,if表示input file,即輸入文件;of表示output file,即輸出文件;bs表示一次讀取或?qū)懭氲膲K大??;count表示寫入或讀取多少塊;conv表示用指定的參數(shù)轉(zhuǎn)換文件。實際使用時,可以根據(jù)自己的需求進行調(diào)整。
五、總結
最后,簡單總結一下遇到了幾個問題及解決辦法
1、FUSE編譯出錯: ./configure后出現(xiàn)error
解決辦法:在Ubuntu12.04LTS環(huán)境下,使用fuse-2.7.4或fuse-2.8.5兩個版本都會出現(xiàn)各種各樣的問題,但換用fuse-2.9.3后,不再報錯,其他版本沒有進行嘗試;
2、版本不匹配:使用ant對hadoop的模塊fuse-dfs編譯后,datanode不能啟動,且報版本不匹配錯誤
解決辦法:在hadoop/conf/core-site.xml配置文件中增加配置信息(每個節(jié)點都要修改)
<property>
<name>hadoop.relaxed.worker.version.check</name>
<value>true</value>
</property>
<property>
<name>hadoop.skip.worker.version.check</name>
<value>true</value>
</property>
由于默認配置中這兩個屬性值都為false,集群啟動時會檢查版本,不匹配時datanode就會拒絕連接到
namenode上,造成集群中節(jié)點個數(shù)為0,也就是datanode沒有啟動;
3、不能通過瀏覽器查看集群狀態(tài):
原因:ant clean之后,之前編譯過的模塊都被清除了,猜測清除的模塊可能涉及到瀏覽器顯示這一部分的實現(xiàn)
解決辦法:重新將FUSE模塊編譯回來,不要輕易清除編譯模塊
4、測試文件不能寫入HDFS
原因:普通ubuntu用戶對hadoop hdfs沒有寫入權限
解決辦法:開放hadoop目錄的權限,命令為: hadoop fs -chmod 777 /user/hadoop
關于如何使用FUSE掛載HDFS就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。