【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=
- 【Hadoop】如何将虚拟机上的hdfs挂载为主机操作系统的一个分区
- 如何将u盘里面的两个分区变成为一个分区
- VMware虚拟机中安装的操作系统如何访问真实主机
- 如何删除虚拟机上的操作系统、删除新建的虚拟机
- 如何把hdfs上的多个目录下的文件合并为一个文件
- 请问如何远程登陆到我的unix操作系统主机上
- 如何访问另一台主机上的虚拟机Ubuntu系统
- Bulkload 将Hdfs转换为Hfile的一个Demo
- 如何将硬盘的分区大小设置为整数
- 在vmware虚拟机上把操作系统配置成局域网内的一台独立主机
- 将主机的文件复制到虚拟机
- 如何在一台主机上监控其他几台主机的某一端口?--hadoop
- 【JAVA连接HBase】(一)关于主机无法打开虚拟机上的HADOOP(50070)
- Oracle virtual box 如何实现主机和虚拟机之间的共享文件和操作系统全屏显示
- 在虚拟机上的系统如何访问主机系统上的Web服务呢?
- 主机与虚拟机上的ubuntu通信
- 主机访问虚拟机上的web服务器
- Hadoop HDFS Explorer连接Windows上的HDFS
- 唐巧分析支付宝客户端的插件机制
- ASP.NET Headers
- OC类和对象之一
- ToolLibrary——编译和操作动态库
- 分享几个响应式开发的代码小技巧
- 【Hadoop】如何将虚拟机上的hdfs挂载为主机操作系统的一个分区
- DEVICE_ATTR
- QT QApplication初始化是怎样的呢?
- WEB服务器的工作原理
- 【华为荣耀】U8860刷Recovery教程
- 天下会 - 搜索经验之网络搜索技巧总结
- myeclipse中tomcat启动不了是因为没配置好jdk
- 无法定位程序输入点_invalid_parameter_noinfo_noreturn于动态链接库 MSVCR100.dll上
- ExtJs 4.x 学习小记:动态添加节点到Ext.tree.Panel