概述
Fayson的github: https://github.com/fayson/cdhproject
推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f
1 文档编写目的
访问HDFS的方式很多,常用的有命令行方式、通过Hadoop提供的API访问、也可以通过挂载NFS的方式访问,在前面的文章Fayson也都有介绍过。本篇文章Fayson主要介绍使用FTP的方式来访问HDFS,这里介绍一个开源的小工具hdfs-over-ftp,简单易用的实现了基于FTP的方式对HDFS上文件进行上传和下载等功能。本篇文章Fayson主要介绍如何基于C6编译hdfs-over-ftp工具,并进行安装部署及验证。
- 测试环境
1.CM和CDH版本为6.2.0
2.集群未启用Kerberos
2 环境准备及编译
hdfs-over-ftp工具使用Java开发的,由于git上很久没有更新了,考虑到与HDFS版本不兼容的问题,需要更新Hadoop的依赖环境重新编译。接下来会准备编译需要的基本环境。
1.Java环境的安装及配置
下载jdk并解压到/usr/java目录下
修改配置文件/etc/profile,配置环境变量
执行source /etc/profile让配置文件生效
查看jdk是否安装成功
2.Maven环境的安装及配置
下载Maven并解压到/usr/java目录下
修改配置文件/etc/profile,配置环境变量
执行source /etc/profile让配置文件生效
查看Maven是否安装成功
3.hdfs-over-ftp代码编译
从git官网下载hdfs-over-ftp代码,下载地址如下:
https://github.com/iponweb/hdfs-over-ftp
将下载下来的master.zip压缩包解压,进入hdfs-over-ftp-master目录修改pom.xml配置文件,修改为如下内容:
修改包版本为CDH6对应的版本,并加入对应版本的hadoop-hdfs-client
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs-client</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-core</artifactId>
<version>2.0.0-M2</version>
</dependency>
注意:如果不加入hadoop-hdfs-client依赖包,在Maven编译过程中会报”java.lang.NoClassDefFoundError:org/apache/hadoop/hdfs/DistributedFileSystem”异常。
在加入对应版本的hadoop-hdfs-client后即可正常编译以及启动
3 安装配置及服务启动
1.修改hdfs-over-ftp.properties文件,将下图中的地址改为自己的HDFS地址
# hdfs uri
hdfs-uri = hdfs://192.168.0.234:8020
2.修改user.properties文件,在文件中添加FTP用户,需要配置多个用户时,按照下面的配置在文件中继续配置即可。密码是手动使用MD5工具进行加密的,加密的命令为:
echo -n 12345678 | openssl md5
ftpserver.user.root.userpassword=25d55ad283aa400af464c76d713c07ad
ftpserver.user.root.homedirectory=/
ftpserver.user.root.enableflag=true
ftpserver.user.root.writepermission=true
ftpserver.user.root.maxloginnumber=0
ftpserver.user.root.maxloginperip=0
ftpserver.user.root.idletime=0
ftpserver.user.root.uploadrate=0
ftpserver.user.root.downloadrate=0
ftpserver.user.root.groups=root,users
3.完成上述配置后,进入工具目录,启动hdfs-over-ftp服务
[root@cdh234 hdfs-over-ftp-master]# sh hdfs-over-ftp.sh start
如上显示则表示服务启动成功。
4 功能测试
1.用FileZilla连接HDFS并查看数据
hadoop fs -ls /tmp查看目录下的文件
FileZilla显示的文件列表与hadoop命令行显示的一致。
2.测试上传
上传成功
3.测试下载
4.通过curlftpfs方式将ftp目录mount到OS上
安装DAGrepository
下载rpmforge-release
执行rpm -Uhv rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm进行安装
安装curlftpfs
执行命令yum install curlftpfs
挂载ftp服务器
执行命令将ftp服务挂载到/root/ftp下
curlftpfs -o codepage=utf-8 ftp://root:12345678@192.168.0.234:2222 /root/ftp
挂载成功如下图,目录与HDFS上一致
5 总结
1.在对工具代码进行修改时,首先要注意的是,将pom文件中对应的依赖修改为对应集群使用的hadoop版本,以及在编译时如果报错,则需加入其他缺少的依赖。
2.在user.properties中添加用户时,被添加的用户需要是对HDFS有访问权限的用户。
3.在挂载FTP到OS上时,需要先安装DAGrepository,再安装curlftpfs。
最后
以上就是大气马里奥为你收集整理的0598-6.2.0-如何基于FTP的方式访问CDH中HDFS文件系统的全部内容,希望文章能够帮你解决0598-6.2.0-如何基于FTP的方式访问CDH中HDFS文件系统所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复