《Hadoop MapReduce实战手册》一2.10 挂载HDFS(Fuse-DFS)

简介:

本节书摘来异步社区《Hadoop MapReduce实战手册》一书中的第2章,第2.10节,作者: 【美】Srinath Perera , Thilina Gunarathne 译者: 杨卓荦 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.10 挂载HDFS(Fuse-DFS)

Hadoop MapReduce实战手册
Fuse-DFS项目使我们能够在Linux上挂载HDFS(也支持许多其他版本的Unix)作为标准的文件系统。这样做,可以允许任何程序或用户使用类似于传统的文件系统的方式访问HDFS和与HDFS交互。

准备工作
系统中必须安装以下软件:

Apache Ant(http://ant.apache.org/);
Fuse和fuse开发包。Fuse开发文件可以通过Redhat/Fedora安装fuse-devel RPM或者Debian/Ubuntu安装libfuse-dev软件包的方式获得。
JAVA_HOME必须设置为指向JDK的环境,而不是JRE。

要挂载HDFS文件系统,还需要具备操作系统节点的root权限。

以下攻略假定你已经预先内置了libhdfs库。Hadoop中包含为Linux x86_64/i386平台预编译的libhdfs库。如果使用其他平台,首先需要参考本节“更多参考”小节中的“构建libhdfs”,以正确构建libhdfs库。

操作步骤
下列步骤显示了如何挂载HDFS文件系统作为一个Linux的标准文件系统。

  1. 转到$ HADOOP_HOME并创建一个名为build的新目录。
>cd $HADOOP_HOME
>mkdir build
  1. 创建符号链接,链接到build目录里面的libhdfs库。
>ln -s c++/Linux-amd64-64/lib/ build/libhdfs
  1. 将C++目录复制到build文件夹。
>cp -R c++/ build/
  1. 在$HADOOP_HOME下执行以下命令,建立fuse-dfs。此命令将在build/contrib/fuse- dfs/目录下生成fuse_dfs和fuse_dfs_wrapper.sh文件。
>ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1

提示

如果构建失败,并显示类似undefined reference to 'fuse_get_ context'的信息,则需要将以下内容追加到src/contrib/fuse- dfs/src/Makefile.am文件的末尾:

fuse_dfs_LDADD =-lfuse-lhdfs-ljvm-LM
  1. 验证fuse_dfs_wrapper.sh中的路径信息并更正它们。可能需要更改以下行的libhdfs路径:
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:$HADOOP_HOME/
build/libhdfs/:/usr/local/lib
  1. 如果已经存在,则需要在/etc/fuse.conf文件中注释掉user_allow_other行。
  2. 创建一个目录作为挂载点:
>mkdir /u/hdfs
  1. 在build/contrib/fuse-dfs/目录下执行以下命令。而且,必须以root权限执行此命令。确保在根环境下也能正确设置HADOOP_HOME和JAVA_HOME环境变量。可选的-d参数用于开启调试模式。当你第一次运行它的时候,将在调试模式下运行以下命令,方便识别任何错误信息。rw参数挂载文件系统为可读写(ro为只读)。-oserver必须指向NameNode的主机名。-oport应提供NameNode的端口号。
>chmoda+x fuse_dfs_wrapper.sh
>./fuse_dfs_wrapper.sh rw -oserver=localhost -oport=9000 /u/hdfs/
-d

工作原理
Fuse-DFS是基于用户空间的文件系统进行构建的。FUSE项目(http://fuse.sourceforge.net/),致力于让用户能够实现用户空间的文件系统。Fuse-DFS使用libhdfs C API与HDFS文件系统交互。libhdfs使用JNI产生一个JVM,与配置的HDFS的NameNode进行通信。

更多参考
正如前面章节所述,使用Fuse-DFS,HDFS的许多实例可以挂载到不同的目录上。

构建libhdfs
为了构建libhdfs,必须在系统上安装以下软件:

  • ant-nodeps和ant-trax包;
  • automake包;
  • Libtool包;
  • zlib-devel包;
  • JDK 1.5—编译Apache Forrest的时候需要;
  • Apache Forrest(http://forrest.apache.org/)—建议使用0.8版本。

通过在$HADOOP_HOME下执行如下命令编译libhdfs:

>ant compile-c++-libhdfs -Dislibhdfs=1

通过执行以下命令将libhdfs打包。使用-Djava5.home属性提供JDK 1.5的路径。使用
-Dforrest.home属性提供Apache Forrest的安装路径。

>ant package -Djava5.home=/u/jdk1.5 -Dforrest.home=/u/apache-forrest-0.8

检查build/libhdfs目录是否包含libhdfs.*文件。如果没有,请将build/c++/cture>/lib目录下的文件复制到build/libhdfs下。

>cp -R build/c++/<Your_OS_Architecture/lib>/ build/libhdfs
相关文章
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
162 6
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
87 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
40 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
48 0
|
分布式计算 应用服务中间件 Docker
Hadoop HDFS分布式文件系统Docker版
一、Hadoop文件系统HDFS 构建单节点的伪分布式HDFS 构建4个节点的HDFS分布式系统 nameNode secondnameNode datanode1 datanode2 其中 datanode2动态节点,在HDFS系统运行时,==动态加入==。
2625 0
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
66 2
|
23天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
80 2
|
24天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
63 1
|
1月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
61 1
|
1月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
76 5

相关实验场景

更多
下一篇
无影云桌面