cdh必须要在root用户搭建吗_0598-6.2.0-如何基于FTP的方式访问CDH中HDFS文件系统

作者:余枫

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目录下
d28b133b5f513d1d4727049bfc5cf0b5.png

修改配置文件/etc/profile,配置环境变量

c326614cc2082ba275bfa80233725c6d.png
  • 执行source /etc/profile让配置文件生效
  • 查看jdk是否安装成功
5cf084d354ee0da94d263b46070a0dbe.png

2.Maven环境的安装及配置

  • 下载Maven并解压到/usr/java目录下
21aa3445dbe36512dd7d4778e362ef70.png
  • 修改配置文件/etc/profile,配置环境变量
e776ab8430b2f91f9f0708f7b4b36203.png

执行source /etc/profile让配置文件生效

查看Maven是否安装成功

c7389d6e2c87d99b12a13840e5a60bd9.png

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

org.apache.hadoop hadoop-common 3.0.0org.apache.hadoop hadoop-hdfs 3.0.0org.apache.hadoop hadoop-hdfs-client 3.0.0org.apache.mina mina-core 2.0.0-M2
ad539d1680462856bad67b1f100068a3.png

注意:如果不加入hadoop-hdfs-client依赖包,在Maven编译过程中会报”java.lang.NoClassDefFoundError:org/apache/hadoop/hdfs/DistributedFileSystem”异常。

b068aef53e7d899734a2426d1a018674.png

在加入对应版本的hadoop-hdfs-client后即可正常编译以及启动

3.安装配置及服务启动

1.修改hdfs-over-ftp.properties文件,将下图中的地址改为自己的HDFS地址

# hdfs urihdfs-uri = hdfs://192.168.0.234:8020
0f49169589e3f3b06aab3ad74045dc31.png

2.修改user.properties文件,在文件中添加FTP用户,需要配置多个用户时,按照下面的配置在文件中继续配置即可。密码是手动使用MD5工具进行加密的,加密的命令为:

echo -n 12345678 | openssl md5

db8e663a4613f727378b16b9fdda938e.png
ftpserver.user.root.userpassword=25d55ad283aa400af464c76d713c07adftpserver.user.root.homedirectory=/ftpserver.user.root.enableflag=trueftpserver.user.root.writepermission=trueftpserver.user.root.maxloginnumber=0ftpserver.user.root.maxloginperip=0ftpserver.user.root.idletime=0ftpserver.user.root.uploadrate=0ftpserver.user.root.downloadrate=0ftpserver.user.root.groups=root,users
cc0b07ef750b7c6860d71b8bf6c7acf9.png

3.完成上述配置后,进入工具目录,启动hdfs-over-ftp服务

[root@cdh234 hdfs-over-ftp-master]# sh hdfs-over-ftp.sh start
02dca769e1f3d2e7a60d9c59e08cbd41.png
deb3ec15dac33b315d9463f2fac97d8a.png

如上显示则表示服务启动成功。

4.功能测试

1.用FileZilla连接HDFS并查看数据

52a67eeb9acf4314b5064a4ceb814928.png
80b09b8fb12df422f3e894e661bc139c.png

hadoop fs -ls /tmp查看目录下的文件

FileZilla显示的文件列表与hadoop命令行显示的一致。

2.测试上传

e70e8cc13c7b56b562f9efd37989e2c3.png
7b0f031fcf01deb2ef4fd463120949fb.png

上传成功

3.测试下载

3e007a810e4ebfef2cba1b98b570845b.png

4.通过curlftpfs方式将ftp目录mount到OS上

  • 安装DAGrepository

下载rpmforge-release

aca298ab4744f9239ee081117ae3d382.png
  • 执行rpm -Uhv rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm进行安装
97c71a9879221fe353477fc183e054d2.png
  • 安装curlftpfs

执行命令yum install curlftpfs

7e107fbf9f0053080567b579c58bdeb9.png
b8c9a578e727f3893145082f1aa11bb6.png
  • 挂载ftp服务器

执行命令将ftp服务挂载到/root/ftp下

curlftpfs -o codepage=utf-8 ftp://root:12345678@192.168.0.234:2222 /root/ftp

47fb3a4cd1b3f9addf74e51d987ca120.png

挂载成功如下图,目录与HDFS上一致

d607de65c372018bd9e79a7523b25704.png

5.总结

1. 在对工具代码进行修改时,首先要注意的是,将pom文件中对应的依赖修改为对应集群使用的hadoop版本,以及在编译时如果报错,则需加入其他缺少的依赖。

2. 在user.properties中添加用户时,被添加的用户需要是对HDFS有访问权限的用户。

3. 在挂载FTP到OS上时,需要先安装DAGrepository,再安装curlftpfs。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值