【Hadoop】如何将虚拟机上的hdfs挂载为主机操作系统的一个分区

来源:互联网 发布:spark 编程 编辑:程序博客网 时间:2024/06/03 02:16

    概述:本文探讨如何将虚拟机上的hdfs挂载为主机操作系统的一个分区,并给出可能用到的接口软件,以及这些接口软件与Hadoop配合工作时可能遇到的问题。在VirtualBox环境下搭建好hadoop环境后,想要在主机操作系统方便的浏览到存储在hadoop的内容,并对hdfs文件系统进行读写操作,这里涉及到多个接口软件。第一步是把hdfs文件系统挂载为一个Unix文件系统,第二步是对这个挂载的文件夹进行网络访问。本文的技术方案可以总结为:hadoop+FUSE(或WebDAV)+iSCSI(或Samba)

测试环境:CentOS 6.4

Hadoop集群说明:一个namenode和三个datanode协同工作,以下所列接口软件都安装在namenode上

一、从hdfs到Unix文件系统

(1)用FUSE挂载hdfs文件系统

    用户空间文件系统(FUSE)允许把按照用户空间实现的文件系统整合成一个Unix文件系统。通过使用Hadoop的Fuse-DFS功能模块,任意一个Hadoop文件系统均可以作为一个标准文件系统进行挂载。随后便可以使用Unix工具(如ls和cat)与该文件系统进行系统交互,还可以通过任意一种编程语言调用POSIX库来访问文件系统。如何用FUSE挂载hdfs,配置过程可以参考以下几个配置文档: 

      http://www.360doc.com/content/12/1217/13/834950_254552340.shtm

      http://blog.csdn.net/ashlingr/article/details/7798645

    挂载后可以看到返回一句didn't recognize的信息,这并不影响FUSE对hdfs的挂载。


    实践过程中发现:对于一个挂载了hdfs的FUSE目录,该目录的访问权限,文件拥有者、所属组都会改变,如果想要改变这个挂载目录的权限、所有者,必须用hadoop命令进行修改,而不能直接使用chmod、chown这些命令的,否则就会出现以下的错误:


    另外,在挂载的过程中发现,挂载前后FUSE目录的权限,所有者都发生了改变,这是hadoop映射到fuse造成的。

(2)用WebDAV挂载hdfs文件系统

尝试这种方式的人相对少一些,我也没具体尝试,配置过程可以参见:http://fyzjhh.blog.163.com/blog/static/169444226201352222652617/

二、从挂载目录到主机操作系统分区

(1)Hadoop+FUSE+iSCSI方案

    该方案的实现思路是在namenode所在虚拟机上安装iSCSI Target软件,然后再FUSE目录下创建img文件,把该img文件作为目标设备,由主机操作系统的iSCSI发起程序建立连接(笔者的为win7),最终形成主机操作系统的一个磁盘分区,可以往这个分区中进行读写操作,从而可以直接在主机操作系统下操作Hadoop。

    具体的配置过程:

1.安装iSCSI Target软件:http://blog.csdn.net/do2jiang/article/details/5144706

安装好后可以设置开机自动开启iSCSI-Target服务:chkconfig iscsi-target on

2.启动iSCSI Target服务后,再使用主机系统的iSCSI发起程序建立连接,再到”卷和设备“一栏中点自动配置,最后点我的电脑-->管理-->磁盘管理,对连接的设备进行格式化、分配盘号,就形成了主机的一个分区了。iSCSI发起程序的配置过程:http://www.jb51.net/os/windows/89053.html

难过遗憾的是,笔者在实验过程发现,iSCSI Target根本无法打开挂载了hdfs的FUSE目录下建立的img文件,iSCSI Target可以打开其他目录下的文件,在挂载hdfs之前FUSE目录也可正常打开,到底挂载过程发生了什么导致iSCSI Target的打开失败,笔者试图修改hadoop的用户权限,用chmod开放挂载目录的权限,但这一问题始终没有解决。出现的错误为:

    

    笔者推测,Hadoop本身的访问控制权限问题阻碍了iSCSI Target对挂载目录的正常访问,但无论怎么修改权限或是文件所有者,该问题都未能解决,网上也一直找不到合理的解决方案,望各位读者多多指导!

(2)Hadoop+FUSE+Samba方案

    Hadoop+FUSE与iSCSI配合工作时首选方案,因为iSCSI相比于Samba有着更好的网络性能,Samba要支持文件共享功能需要处理多个客户端同时读写数据时的数据同步,文件锁定问题,这需要网络传输大量信息,严重影响性能。而且,若要在主机系统中往hadoop集群中存入GB级的大文件,iSCSI的性能也是优于Samba的。此方案的具体配置可以参见:http://web.exiang.org/blog/user1/3/2274.html

    配置过程还遇到了一个小麻烦就是在centos上搭建samba测试环境,由于笔者的centos无法直接用yum安装,因此只能去找rpm包一个一个装,而安装过程又遇到文件关联问题,这是使用rpm -ivh --nodeps解除依赖来安装就行了,附上rpm包的下载网站:

http://rpm.pbone.net/

http://www.rpmfind.net/linux/rpm2html/search.php?query=&submit=Search+...&system=&arch=






 




    
0 0
原创粉丝点击