HDFS可视化及其在QAR数据中的应用研究

2017-04-14 05:22冯兴杰吴稀钰
中国民航大学学报 2017年1期
关键词:页面集群分布式

冯兴杰,吴稀钰

(中国民航大学计算机科学与技术学院,天津300300)

HDFS可视化及其在QAR数据中的应用研究

冯兴杰,吴稀钰

(中国民航大学计算机科学与技术学院,天津300300)

Hadoop是一个由Apache基金会开发的开源的云计算基础框架,主要由Hadoop分布式文件系统(HDFS,Hadoop distributed file system)和Map/Reduce分布式计算模型组成。其中,HDFS为海量数据提供分布式存储,如何方便快捷地使用并管理HDFS成为目前亟待解决的问题。Hadoop提供了命令行接口与浏览器接口以访问HDFS,但是其浏览器接口的交互界面并不友好,给用户的使用带来了不便,因此目前用户访问HDFS主要是通过命令行的方式。为了方便用户使用并管理HDFS,在深入研究HDFS工作原理的基础上,采用struts2开源架构及JFreeChart图表绘制类库设计并实现了HDFS可视化系统。利用该系统实现了对海量QAR数据文件的分布式存储,提高了对QAR数据进行并行化数据挖掘的效率。

HDFS;可视化;Hadoop;QAR数据文件;集群管理

随着计算机技术的不断发展,大数据已经成为IT领域最受关注的热点之一,云计算平台无疑是处理大数据的最佳平台。Hadoop作为开源的基础分布式架构,现已广泛应用到FaceBook、Yahoo、阿里巴巴等国内外知名互联网企业。HDFS(Hadoop distributed file system)作为Hadoop进行分布式计算的基石,为海量数据提供分布式存储[1]。为了方便用户使用与管理海量数据,需要对HDFS进行可视化。

目前,对于HDFS可视化的研究不多。黄文依等[2]设计了基于WEB的HDFS可视化文件访问系统;栾景超等[3]提出管理HDFS集群资源的架构,实现HDFS资源管理器;李振举等[4]设计并实现了HDFS可视化管理工具。但是基于C/S的模式导致其表现方式有限,后期维护繁琐,同时也不利于用户及文件使用权限的管理。因此,设计一种可交互的、界面友好并且易于维护的HDFS可视化系统。

1 相关技术

1.1 Hadoop

Hadoop是一个分布式系统开源架构,能够在计算机集群中通过使用简单的编程模型来分布式处理大规模数据集。其设计的目的在于从单一的服务器扩充到成千上万台设备,并且每台设备都提供本地计算与存储功能。Hadoop实现了Map/Reduce计算范式,它将应用程序分成多个小任务运行于集群中的节点[5]。此外,HDFS将数据分布式存储于集群中的各个计算节点,并且提供跨集群的较高的聚合带宽。Hadoop基于Java实现,通常运行于Linux系统平台。

1.2 HDFS

HDFS是Hadoop默认使用的基于网络环境的分布式文件系统,具有高数据吞吐量、高容错、可扩展等特点,并能够部署在普通商用机器硬件上。HDFS能够为应用程序提供高数据吞吐量,十分适于处理超大规模数据集的应用。同时通过将大数据文件分块,并以副本的方式存储在集群的多个节点的计算机上,保证了数据的高可靠性和分布式计算的高效性。HDFS主要由NameNode和DataNode以主/从(master/slave)结构组成[6]。NameNode是HDFS的核心,管理文件系统的命名空间、文件与其对应数据块之间的联系等元数据信息,而真正的数据则以数据块(block)为单位存储在DataNode中。从系统的角度来说,一个文件被划分为若干个chunk,存储于DataNode中的一个或多个block中,但是这对用户来说是透明的,用户能够直接以文件的形式访问数据。当用户访问HDFS时,先由NameNode执行打开、关闭、创建目录等命名空间的操作,进而获取block与DataNode之间的映射关系,用户对文件系统的读写请求最终由DataNode来处理。HDFS架构图如图1所示。

图1 HDFS架构图Fig.1 HDFS architecture

1.3 HDFS访问方式

Hadoop为用户提供了多种与HDFS交互的方式,其中命令行方式应用的最为广泛,在进行应用开发时则更多地采用API方式,另外还可以利用TCP端口通过浏览器的方式更为直观地查看HDFS中的文件列表。

1.3.1 命令行

HDFS为用户提供了命令行接口(DFSShell)[7]。利用它能够对存储于HDFS中的用户数据进行操作,类似于在Linux操作系统中使用shell工具对目录和文件进行操作。表1列出了HDFS文件操作常用的命令,更多命令可通过hadoop fs-help来获取HDFS文件系统中的详细操作说明信息。

表1 HDFS文件操作常用命令Tab.1 Common commands of HDFS file operation

1.3.2 Java API

在Java API中,有关于HDFS文件操作的类位于org.apache.hadoop.fs。Hadoop类库中最终面向用户提供的接口是FileSystem[8]。

事实上,Hadoop支持HDFS、HFTP、S3等多种文件系统,而HDFS是Hadoop最常用的文件系统。这些文件系统都继承了抽象基础类FileSystem,并且实现了上传文件、下载文件、删除文件、重命名等基本文件操作。

1.3.3 浏览器接口

HDFS会在50070端口开启一个Web服务器,用于公开HDFS的名字空间[9]。用户可以用浏览器打开URI为http://NameNodeIP:50070来访问HDFS的块存储信息,包括集群启动时间、集群版本信息、编译时间等各种信息,用户还可以点击该页面上browse the filesystem链接,以目录的形式查看HDFS中存储的文件信息,这种方式比命令行的方式更加可视化和便捷,但是用户仍然无法与HDFS交互。另外还可以通过Web页面查看NameNode的日志列表、正在运行的节点列表等信息。

1.3.4IDE插件

Hadoop在早期版本中提供了一个用于在Eclipse中进行开发的插件[10],方便用户在IDE环境中上传与下载HDFS中的文件。但是在Hadoop的后期版本中,不再提供官方插件,而需要用户自行编译插件源码。

2 基于Web的HDFS可视化系统的设计

2.1 系统设计

HDFS可视化系统采用B/S模式,能够运行在Window、Linux等操作系统下,对承载系统要求低。通过该系统对HDFS进行操作需要先连接Hadoop集群,实际上是连接NameNode节点,得到数据块的位置等信息,然后在DataNode上进行相关的数据操作[11]。

此外,向HDFS集群上传新的资源后,会在MySQL数据库中记录该资源的描述信息即文件的元数据,包括新资源的上传用户、上传时间、上传路径、文件内容简介,资源在HDFS中的数据块分隔和复制备份等工作是通过NameNode指令在DataNode上完成的。图2为HDFS可视化系统架构图。

图2 HDFS可视化系统架构图Fig.2 Architecture of HDFS visualizaion system

2.2 功能设计

1)用户管理提供用户注册功能,注册信息包括用户名、密码和用户使用权限。在浏览文件列表时,根据用户的使用权限提供相应的文件操作。

2)文件管理提供目录的查看、创建、删除,文件的上传、下载、删除等基本操作。此外,为了方便用户准确查找并下载所需文件,在系统中查看文件列表时有必要给出各个文件的相关信息,这些文件信息在上传资源时存储在MySQL数据库中。

3)集群管理应用JFreeChart绘制饼图来描述文件系统空间的使用情况[12]。

图3为HDFS可视化系统功能结构图。

图3 HDFS可视化系统功能结构图Fig.3 Function structure of HDFS visualizaion system

3 HDFS的实现及其在QAR数据中的应用

3.1 开发环境

HDFS可视化系统开发工具为Eclipse和JDK1.7.0,Tomcat作为Web服务器,系统框架选用轻量级的Struts 2.3,选用MySQL 5.6作为数据库。实验过程中所组建的Hadoop集群由1个NameNode和3个DataNode构成,采用Hadoop 2.4.0版本。目前集群存储空间大小为1.34 TB,包括122个目录、287个文件和832个文件块,通过配置文件设置块大小为128 MB,文件备份数目默认配置3个。

3.2 系统实现

关于HDFS的文件操作与集群信息主要涉及以下各类[13]:

Configuration类:该类的对象封装了客户端或者服务器的配置;

FileSystem类:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。通过FileSystem的静态方法get获得该对象;

FSDataInputStream和FSDataOutputStream类:这两个类是HDFS中的输入输出流。分别通过FileSystem的open()方法和create()方法获得;

Path类:该类的对象为文件系统的一个路径,该路径既可以是文件路径也可以是目录路径;

FileStatus类:该类封装了文件系统中文件与目录的元数据,包括文件大小、备份数、文件所有者等信息;

FsStatus类:通过该类对象获得文件系统的容量、已用和未用空间,方法分别为getCapacity、getUsed和getRemaining。

综上所述,关于文件操作与获得集群信息的代码结构如下:

FileOperator(){

Configuration conf=new Configuration();

FileSystem fs=FileSystem.get(URI.create(hdfsUrl),conf,username);

DistributedFileSystem dfs=(DistributedFileSystem)fs;

fs.concreteOperation();

……

dfs.getCapacity();

……

}

图4为HDFS可视化系统的文件管理页面,在所创建/data/qar目录中,上传了多个csv格式的QAR数据文件,每个文件记录着某天某航班的飞行记录信息。针对每个文件,都有相应的摘要信息,上传用户,文件大小,上传时间,能够对其进行删除、下载等操作。从而实现对海量QAR数据文件的分布式存储,提高了QAR数据在Hive数据仓库中构建的效率,有利于后续对其进行并行化数据挖掘。

图4 HDFS文件管理页面Fig.4 File management page of HDFS visualizaion system

图5为HDFS可视化系统的集群管理页面。用JFreeChart绘制了饼图来描述整个Hadoop集群空间的使用情况,左侧标注了各个DateNode的空间使用情况。

3.3 测试

开启Hadoop集群,启动Tomcat与MySQL后,打开客户端浏览器输入http://10.1.49.241/hdfs-management,在登录页面输入正确的用户名与密码进入系统主页面,能够对文件进行管理以及查看集群存储信息。

图5 HDFS集群管理页面Fig.5 Cluster information page of HDFS visualizaion system

4 结语

本文在研究HDFS工作原理的基础上,设计并实现了界面友好且易于维护的基于WEB的HDFS可视化系统,解决了HDFS操作环境不便的问题,从而提高了使用Hadoop进行测试与开发的效率。下一阶段的工作将充分利用HDFS可视化系统,建立基于Hive的QAR数据仓库,进而对大规模飞行记录数据进行并行化数据挖掘。

[1]Apache Hadoop[EB/OL].(2014-08-15)[2016-04-16].http://hadoop. apache.org/.

[2]黄文依,王劲松,林胜.HDFS可视化操作研究与实现[J].天津理工大学学报,2012,28(1):31-34.

[3]栾景超,马志强,李昊甦,等.Hadoop分布式文件系统资源管理器的设计与实现[J].科研信息化技术与应用,2014(1):41-52.

[4]李振举,李学军,杨晟,等.HDFS可视化管理系统设计与实现[J].微型机与应用,2015,34(8):80-82.

[5]DEAN JEFFREY,GHEMAWAT SANJAY.MapReduce:simplified data processing on large clusters[J].Communications of the ACM,2008,51 (1):107-113.

[6]BORTHAKUR DHRUBA.The hadoop distributed file system:Architecture and design[J].Hadoop Project Website,2007,11:21.

[7]CHUCK LAM.Hadoop in Action[M].America:Manning,2010:38-42.

[8]APACHE.Hadoop-hdfs 2.4.1 API[EB/OL].[2016-04-16].http:// hadoop.apache.org/hdfs/docs/api/.

[9]HDFS[EB/OL].[2016-04-16].http://hadoop.apache.org/hdfs/.

[10]刘鹏.实战Hadoop[M].北京:电子工业出版社,2011:30-34.

[11]HOLMES,ALEX.Hadoop in Practice[M].America:Manning,2012:3-23.

[12]JFreeChart[EB/OL].[2016-04-16].http://www.jfree.org/jfreechart/.

[13]TOM WHITE.Hadoop权威指南[M].3版.北京:清华大学出版社,2011:1-12.

(责任编辑:党亚茹)

Research on HDFS visualization and its application in QAR data

FENG Xingjie,WU Xiyu
(College of Computer Science&Technology,CAUC,Tianjin 300300,China)

As an open software framework developed by Apache,Hadoop provides the distributed processing of large data sets that across clusters of computer by simple programming models.It is designed to scale up from single servers to thousands of machines,each offering local computation and storage.And now a wide variety of companies and organizations use Hadoop for both research and production.The core modules of Hadoop are HDFS(Hadoop distributed file system)and MapReduce distributed programming model.An HDFS cluster primarily consists of a NameNode that manages the file system metadata and DataNodes that store the actual data.However,the management issues of HDFS cluster resources has became urgent.There is a web page to browse HDFS provided by Hadoop,but this interface of HDFS is not friendly for users because command line is the main method to achieve operation of the document now.In order to use HDFS conveniently,using the struts2 develop framework and JFreeChart,the architecture of HDFS is researched and then an HDFS visualization system is designed based on web interface.And the development efficiency based on Hadoop for QAR data is improved.

HDFS;visualization;Hadoop;QAR data file;cluster management

TP311

A

1674-5590(2017)01-0056-04

2016-05-09;

2016-06-12基金项目:国家自然科学青年基金(61301245,61201414)

冯兴杰(1969—),男,河北邢台人,教授,博士,研究方向为云计算,数据仓库和智能信息处理.

猜你喜欢
页面集群分布式
刷新生活的页面
基于RTDS的分布式光伏并网建模研究
答案
让Word同时拥有横向页和纵向页
海上小型无人机集群的反制装备需求与应对之策研究
培育世界级汽车产业集群
一种无人机集群发射回收装置的控制系统设计
基于预处理MUSIC算法的分布式阵列DOA估计
勤快又呆萌的集群机器人
基于DDS的分布式三维协同仿真研究