APP下载

基于Apache Ftpserver的可自定义文件系统的文件服务器

2020-12-24王峰

软件 2020年7期
关键词:中间件日志客户端

摘  要: 当下的计算机文件系统发展进程中,因为大数据、数据安全、业务场景定制化等需要,会有不同的文件系统。比如专属于大数据存储的开源分布式文件系统hadoop,红旗文件系统,嵌入式定制的linux文件系统。现基于apache的的开源项目ftpserver,此论文提供了一个可通用的文件系统服务的中间件方案,此方案可定制化到任何可被java实现文件接口的文件系统。文件系统服务可将不同文件系统的文件进行对等传输和共享。可节约机器资源消耗,节约一部分开发量,简化软件架构设计。

关键词: 自定义文件系统;文件传输服务器;hadoop文件系统;大数据;中间件

中图分类号: TP393.093    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.07.039

本文著录格式:王峰. 基于Apache Ftpserver的可自定义文件系统的文件服务器[J]. 软件,2020,41(07):192-196

File Server For Customizable File System Based on Apache Ftpserver

WANG Feng

(School of Statistics, University of International Business and Economics, Beijing 100000, China)

【Abstract】: In the current development of computer file systems, there will be different file systems because of the need for big data, data security, and customization of business scenarios. For example, the open source distributed file system hadoop which is dedicated to big data storage, redflag file system, and embedded custom linux file system. Now based on apaches open source project ftpserver, this paper provides a common middleware solution for file system services. This solution can be customized to any file system that can be implemented by java. File system services can peer-transfer and share files from different file systems. It can save machine resource consumption, save part of development, and simplify software architecture design.

【Key words】: Customizable file system; File transform server; Hadoop file system; Big data; Middleware

0  引言

在本人項目开发过程中,涉及到大数据分布式hadoop文件系统。由于工作的合作分工以及网络安全的考量,需要对外提供一个文件服务来接收采集数据,并上传到云平台,中间会把数据落到本地磁盘,在本地磁盘上会做一次本地文件管理以及脚本定制开发。以上过程需要浪费一定的开发人力,进行组织和维护文件并上传到云平台,如果对数据有一定实时性要求,软件整体架构不变的情况下,需要做定时扫描文件更新情况,并做定制化的文件上传程序。所以,本地文件系统传输到大数据文件系统,存在着各种不方便。基于以上问题,此过程可

通过一个中间件来节约硬件资源,简化程序架构设计,减少重复的定制化开发。对于传统的文件系统平滑过渡到分布式文件系统,ftp文件传输服务是一项重要的中间件技术。所以此项目应用而生。项目开发到现在,已经测试并可用于hadoop文件系统和本地文件系统,并将此项目开源到github平台。项目名称为abitmiss-ftpserver,希望此项目可以给不同文件系统的架构设计提供新的思路,为生产实践带来方便,也希望专业人士能提供建议、文档和代码帮助。

1  项目架构

项目结构简单,可进行极少的配置更改实现文件传输服务器的功能,文件传输服务器的其他功能

需要极少的配置就可以实现。基于apache ftpserver工程,项目成熟度高,符合标准的文件传输协议规范。对用户来讲,使用透明,对具体的文件系统类型无感知。使用相同的ftp连接和执行口令,可实现文件的用户验证、上传、下载、删除、重命名、拷贝、列表、切换路径、当前路径显示等功能。

1.1  中间件说明

如图1,在当前版本中,只添加实现了hadoop文件系统的ftpserver。在原始的apache ftpserver中,只支持本机文件系统,经添加hadoop文件系统的实现代码,可支持hadoop文件系统。相应的,其他文件系统,在支持java实现文件系统的接口的情况下,可通过添加相应的定制化代码加以支持。

对于hadoop文件系统,abitmiss-ftpserver服务可部署到任何安装有hadoop的gateway组件或者安装有datanode、namenode的节点上,可安装到不同的机器上做网络负载均衡,可提供active mode和passive mode两种文件传输协议服务模式。对于客户端来讲,ftp服务的使用是透明的,对ftp服务器所使用的具体文件系统类型无感知,只需要知道机器的ip、端口信息用户验证信息即可。ftp客户端命令使用和本机文件系统的客户端命令使用方式相同。

在工程项目规划中,可因为此中间件,简化传统数据平台迁移到大数据平台思考方式,简化工程分工,节约开发工作量,平滑過渡数据迁移模块,节约人力成本。在软件架构设计中,提供了一种简便的设计方式。在软件实现中。相对来讲,相对实时性的传输数据到大数据平台。

1.2  程序组织结构

Apache Ftpserver模块修改代码块中文件系统的Factory的对象后,添加并更改文件系统为定制的文件系统,并添加定制的文件系统处理类、工厂类等,得到Abitmiss FtpServer(此项目名称)。其中apache ftpserver,包含基础的ftpserver的服务器配置、监听端口配置、用户配置、基础的ftp命令实现、ssl/tls安全支持、日志支持等。Abitmiss ftpserver只是在apache ftpserver基础上修改文件系统为自定义文件系统:hadoop文件系统。其中此服务基础功能基于apache ftpserver项目,所以,此工程具有apache ftpserver所具有的功能。在此十分感谢此开源项目,为此中间件项目的实现提供了便利的条件和基础。

1.3  工程路径结构

项目重新组织了工程结构,使工程路径组织结构更标准、明晰、规整。此工程包名称格式为abitmiss-ftpserver-${version}-RELEASE.tar.gz。以下为路径结构说明:

bin路径,是程序服务程序的入口,可以带入参数达到abitmiss-ftpserver启动(start)、停止(stop)、状态(status)、重启(restart)的程序操作。此路径可放入到系统环境变量中,供用户在操作系统任意路径下使用命令。

sbin路径包含程序启动、停止、状态的具体脚本以及程序环境变量配置信息。在部署运行之前,可根据平台环境的具体情况,对程序环境变量配置信息做一定的更改,以满足程序运行条件。

conf路径为程序的配置信息,包含程序配置、用户配置、日志配置信息、ftp服务配置信息。此路径下的配置文件,需要根据不同的部署情况和平台环境情况,做一定的配置更改。

logs路径包含程序执行的日志信息,存储日志信息。由conf路径下的log4j.log文件决定。可更改log4j.log配置文件更改日志打印方式和存储方式。

dependency路径为程序所依赖的jar包。此依赖项不包含hadoop依赖性jar包,hadoop依赖性jar包需要在conf路径下配置。

lib路径为此程序的定制jar包。此路径只能包含一个.jar结尾的文件。启动时会通配.jar结尾文件并仅且只有一个。

程序路径结构如图3。

2  测试情况

此中间件程序现有阶段仅支持hadoop文件系统和原生的本机文件系统的文件传输服务。故分别做了一定的测试。测试过程如下:

2.1  2.1  测试环境基础条件

采用esxi系统虚拟出8台虚拟主机(如图4)来安装大数据平台,每台机器配置如下(详见图5)。

2 core cpu

12GB RAM memory

40GB + 200GB ROM disk memory

1000Mbps bandwidth network

系统及大数据平台部署情况:

CentOS7系统

Java Development Kit 8u191

Cloudera Manager CDH6.1.1

Hadoop 3.0.0

大数据平台组件部署信息如图6。

本次测试只用到了大数据组件的hadoop file system角色组件,其他组件不用。其中hdfs角色配置信息如图7。

2.2  Hadoop文件系统测试情况

部署程序到任何一台包含有hdfs客户端配置的机器上并解压。

到工程路径的conf路径下,修改相应配置文件的配置信息(详情配置见工程说明);另有工程依赖的环境配置信息到sbin路径下配置。开通防火墙ftp端口对外访问权限。配置根路径为hadoop文件系统的/user/test/abc,路径目录结构信息如图8。

到工程路径下启动运行abitmiss ftpserver程序,然后在任意一台可连接此ftpserver所在机器的主机(作为客户端主机)上,执行ftp命令连接abitmiss ftpserver服务并做相应的用户验证,然后测试ls、get、put、pwd、cd等ftp命令。到工程路径的logs路径下查看日志信息,日志信息正常显示并无报错和告警信息。目录结构信息以及测试命令过程如图9。

经验证,上传和下载数据文件和原始文件md5值相同,为同一文件。可正常执行cd、pwd、put、get等命令并得到相應的预期结果。ftp路径结构信息和hadoop路径结构信息可一一对应。由此,可验证此工程有效,可实现hadoop文件系统的ftp服务功能。

2.3  本机文件系统测试情况

关闭上述工程,修改配置项,改为本地文件系统的ftpserver配置(详情配置见工程说明)。修改ftpserver根路径为/home/test;然后到此工程路径下启动abitmiss ftpserver服务程序;最后到客户端主机执行ftp命令连接ftpserver主机,验证用户信息,并执行ls、pwd等命令。且到工程路径下的logs路径查看日志信息,日志打印正常,并无看到告警和报错日志输出。测试命令过程如图10。

经验证,此功能和原有的apache ftpserver功能相同。可正常实现本地文件系统的ftp服务功能。

3  结论

程序测试并运行正常,并可自定义文件系统为hadoop文件系统。对于客户端来讲,使用相同的ftp命令,实现用户验证、上传、下载、列表、拷贝、重命名、删除、当前路径显示、路径切换等功能。

以此类推,此工程项目可添加其他类型的文件系统。只要定制化的文件系统,可以用java语言实现或调用其文件系统操作接口,理论上都可以集成到此项目中。对于大数据平台系统,可安装到不同的机器上,做网路负载均衡。

工程已经做了开源,可到github上clone代码到编译器中,进行修改和验证,也欢迎提出宝贵意见,协助增加、修改此工程的其他功能。

程序使用基于apache ftpserver基础做服务,符合标准的文件传输协议规范,工程逻辑实现成熟度较高。对客户端来讲是透明的,客户端无感知,可复用客户端原始的代码和逻辑,客户端工程维护成本低,可平滑迁移到新的文件系统平台。

工程缺点说明:大数据平台在kerberos验证下的情况,未作长期稳定性测试。已知的暂未处理的缺点:在kerberos验证过期的情况下,需要重新实例化hadoop的filesystem实例。目前没有实现自动更新hadoop的filesystem实例的功能。当前的处理方式,如果有kerberos验证的情况下,在kerberos验证过期之前重启此服务。

参考文献

  1. 胡栋梁, 秦晓军, 王晓锋. 基于消息中间件的分布式网络扫描研究[J/OL]. 计算机工程: 1-15[2020-03-01]. https: //doi. org/10. 19678/j. issn. 1000-3428. 0056018.

  2. 刘文杰. 基于HDFS的大数据文件传输实验设计[J]. 实验室研究与探索, 2019, 38(12): 132-134+215.

  3. 陈芳州. 基于HDFS的云环境数据存储优化技术研究[D]. 南京邮电大学, 2019.

  4. 戴威. 一种跨HDFS集群的文件资源分布式高效存储方法[J]. 电子设计工程, 2019, 27(21): 14-17+22.

  5. 赵华茗. 搭建基于云计算的开源海量数据挖掘平台[J]. 现代图书情报技术, 2010(10): 76-81.

  6. 郑华兵. FTP服务器在公司企业网的应用研究[J]. 通讯世界, 2019, 26(10): 136-137.

猜你喜欢

中间件日志客户端
一名老党员的工作日志
扶贫日志
RFID中间件技术及其应用研究
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于VanConnect中间件的设计与开发
基于Vanconnect的智能家居瘦客户端的设计与实现
游学日志
中间件在高速公路领域的应用
一种基于粗集和SVM的Web日志挖掘模型