如何使用FUSE挂载HDFS

这篇文章给大家介绍如何使用FUSE挂载HDFS,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了桓仁免费建站欢迎大家使用!

因为要使用iozone和dd对HDFS做个简单的测试,所以需要将HDFS挂载到本地,挂载过程不复杂,但中间出现了各种各样的错误,弄了有半个星期,终于测试完毕。现将整个挂载及解决错误的过程记录下来,大家共同学习讨论。

一、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、增加系统配置

              $ sudo vi /etc/profile

               增加如下内容

重启集群,发现所有的datanode都在启动后的几秒钟内挂掉了,查看日志,发现报错:

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命令把之前编译的都清除了。以为这下应该恢复正常了,结果更糟糕的问题出现了。集群可以正常启动了,通过命令行hadoop dfsadmin -report能够看到每个节点都处于正常状态,但是就是不能通过浏览器查看。

三、iozone测试

 iozone测试比较简单,iozone主要用来测试操作系统文件系统性能的测试工具,该工具所测试的范围主要有,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

参数解释: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表示线程数,-r block size 指定一次写入/读出的块大小,-s file size 指定测试文件的大小,-f filename 指定测试文件的名字,完成后会自动删除(这个文件必须指定你要测试的那个硬盘中),-F file1 file2... 指定多线程下测试的文件名,-B或-b指定到输出文件。iozone参数很多,可以根据使用需求具体学习某个参数。

四、dd测试

 dd测试并不是标准的磁盘和文件系统读写测试工具,只是Linux系统的一个磁盘命令,但dd命令实现的磁盘拷贝功能,可以间接地反映磁盘的读写能力,因此,在测试磁盘和文件系统的读写性能时,也常常通过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表示一次读取或写入的块大小;count表示写入或读取多少块;conv表示用指定的参数转换文件。实际使用时,可以根据自己的需求进行调整。

五、总结

最后,简单总结一下遇到了几个问题及解决办法

1、FUSE编译出错: ./configure后出现error

     解决办法:在Ubuntu12.04LTS环境下,使用fuse-2.7.4或fuse-2.8.5两个版本都会出现各种各样的问题,但换用fuse-2.9.3后,不再报错,其他版本没有进行尝试;

2、版本不匹配:使用ant对hadoop的模块fuse-dfs编译后,datanode不能启动,且报版本不匹配错误

     解决办法:在hadoop/conf/core-site.xml配置文件中增加配置信息(每个节点都要修改)

                   

                            hadoop.relaxed.worker.version.check

                            true

                    

                   

                            hadoop.skip.worker.version.check

                            true

                    

                     由于默认配置中这两个属性值都为false,集群启动时会检查版本,不匹配时datanode就会拒绝连接到

                     namenode上,造成集群中节点个数为0,也就是datanode没有启动;

3、不能通过浏览器查看集群状态:

     原因:ant clean之后,之前编译过的模块都被清除了,猜测清除的模块可能涉及到浏览器显示这一部分的实现

     解决办法:重新将FUSE模块编译回来,不要轻易清除编译模块

4、测试文件不能写入HDFS

     原因:普通ubuntu用户对hadoop hdfs没有写入权限

     解决办法:开放hadoop目录的权限,命令为: hadoop fs -chmod 777 /user/hadoop

关于如何使用FUSE挂载HDFS就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享题目:如何使用FUSE挂载HDFS
链接地址:http://scyanting.com/article/ghedci.html