摘 要: Hadoop工具核心模块包括分布式文件系统(Hadoop Distributed File System,HDFS)和分布式编程模型MapReduce,其中HDFS是Hadoop数据存储处理的核心模块,但目前缺乏有效的HDFS可视化管理工具,因此设计实现了一套可视化管理工具,该工具基于Java Swing组件开发。以此工具为基础,搭建了一套基于Hadoop的海量遥感数据云存储系统。实验表明,该系统界面友好,易于部署,可以很好地支持HDFS可视化管理。
关键词: Hadoop;分布式文件系统;可视化管理系统
0 引言
近年来,随着遥感技术的发展,遥感数据的类型不断扩展,遥感数据的量级在不断增加,这给遥感数据的管理带来了新的挑战。云计算作为大数据时代的典型技术代表,可以有效地进行海量遥感数据的处理。Hadoop[1]是目前云计算技术应用最广泛的一个技术平台,是谷歌文件系统[2]和MapReduce编程模型的开源实现[2]。然而如何使用Hadoop技术进行海量遥感数据的处理,是一个值得研究的问题。为了对海量遥感数据进行有效的管理,需开发一套基于Hadoop集群的云存储系统。该系统可对海量遥感数据进行管理,与用户进行交互,上传和下载海量遥感数据文件。但是现有的HDFS管理工具无法高效地进行可视化管理,基于此,本文设计实现了一套可视化管理系统,旨在提高HDFS可视化管理的水平,方便用户使用。
1 研究背景
1.1 Hadoop生态系统
为了搭建国产软硬件环境下的云存储平台,本文采用Hadoop作为基础软件。该平台目前已经发展成为包括HDFS[3]、分布式编程模型MapReduce、数据库(HBase、Cassandra)、数据仓库Hive和数据流处理语言Pig在内的完整的生态系统(Ecosystem)[4]。系统结构框架如图1所示。从某种程度上可以说,Hadoop已经成为大数据处理工具事实上的标准。
HDFS是Hadoop生态系统的核心子项目之一,基于流数据模式和处理超大文件的需求开发,可以处理TB(TeraByte)甚至是PB(PeteByte)级别的数据,对硬件要求比较低,容错性好,可靠性高。Hadoop2.0之前的版本,HDFS集群通常包括一个NameNode(主节点)和若干个DataNode(从节点)[5]。NameNode管理命名空间,维护整个文件系统的文件目录树及这些文件的索引目录。DataNode是文件系统工作节点,用来执行具体的任务。同时,它可以通过心跳(Heartbeat)定时向NameNode发送所存储的文件块信息[6]。
1.2 HDFS常见管理工具
现有HDFS的管理工具可以分为三类:HDFS自带的命令行工具、HDFS应用程序接口(API)和基于Web的HDFS管理工具。
HDFS自带的命令行工具运行在操作系统的shell终端,由一系列的命令组成。其优点是简单快捷,无需安装其他软件;缺点是可视化程度不高,各种命令比较多,用户需要具备专业的水平才能完全掌握。常见的HDFS命令如表1所示[7]。
HDFS应用程序接口是Hadoop为第三方软件提供的交互接口。这种方法的优点是操作简单,对用户专业水平要求不高;缺点是只有在安装了Eclipse IDE的机器上才能运行。HDFS中提供的API功能如表2所示。
基于Web的管理工具研究是在前两种工具的基础上开发而来的,黄文依等人[7]在研究HDFS架构的基础上,设计实现了基于Web的HDFS可视化文件访问系统。其优点是操作简便快捷,易于部署;缺点是功能相对简单,只是实现了基本的功能。此外,用户通过浏览器可以直接访问Hadoop集群的50030端口,但是这种方式只可以浏览显示HDFS文件系统,用户无法与HDFS交互。
通过以上内容可以看出,HDFS现有的可视化系统可视化程度不高,用户友好程度相对不高。如何设计和实现用户界面友好的HDFS可视化管理系统,是一个需要解决的问题。
2 HDFS可视化管理系统的设计
2.1 系统功能设计
本文设计的HDFS可视化管理系统一方面完成文件(夹)与Hadoop集群之间的交互,另一方面可对集群的一些基本信息进行显示。HDFS可视化系统的功能从整体上包含文件管理模块和集群信息模块。其中文件管理模块负责HDFS文件信息的显示、目录信息的管理以及HDFS文件与本地文件之间的交互,包括文件上传、文件下载[8]和文件删除等功能。集群信息模块可以显示Hadoop集群的节点信息、集群的存储容量和提供帮助信息等。HDFS可视化系统的功能结构图如图2所示。
2.2 系统界面设计
HDFS可视化管理系统设计的主界面包括4个区域:标题栏、工具栏、HDFS目录显示区域和文件信息显示区域。其中标题栏包括文件管理按钮和集群信息管理按钮,通过这两个按钮可以调用文件管理模块和集群信息管理模块。HDFS目录显示区域类似于Windows的资源管理器,以目录树的形式显示HDFS文件系统信息。文件信息显示区域用来显示选中的文件的基本信息。
HDFS系统可视化界面采用Java Swing[9]组件设计开发。界面使用到的控件包括JTree、JLabel、JText、JPanel等。其中,JTree用来管理HDFS文件系统目录;JLabel显示文件基本信息;JPanel用来进行控件的管理,当做容器用来控制界面的布局;JButtonItem用来右键显示命令。此外标准对话框用来显示提示信息。
3 HDFS可视化管理系统的实现
3.1 开发及运行环境
HDFS可视化系统开发工具为Eclipse和OpenJDK 1.6.0。考虑到HDFS需要在Hadoop集群搭建的基础上才能运行,本文首先搭建了一个Hadoop集群。本文搭建的Hadoop集群采用0.20.2版本,包括1个NameNode节点和6个DataNode节点。目前集群配置存储空间大小为1.19 TB,包括21 628个文件和目录,21 067个文件块,块大小为128 MB;HDFS文件备份数量采用默认的3个。集群HDFS信息如图3所示。
3.2 系统开发流程
系统开发流程如图4所示。开发环境的操作系统采用Kylin Linux操作系统,OpenJDK版本是1.6.0。在开发环境中使用Eclipse进行界面和功能设计,编写代码并且封装成JAR包以方便部署。开发工具采用Eclipse 3.5版本。
3.3 系统功能测试
为了验证HDFS可视化系统的可靠性,对系统功能进行测试。目前用户数量为10人,经过扩展可以添加更多用户。Hadoop集群信息如图5所示,HDFS中某一系统的文件信息如图6所示,文件上传功能如图7所示,文件下载功能如图8所示。
4 结论
本文针对Hadoop分布式文件系统缺乏界面友好的可视化管理工具的问题,设计并实现了一个HDFS可视化管理系统。该管理系统核心功能通过封装HDFS命令转换为Java可以识别的对象实现。该系统已经在基于国产软硬件环境的云存储系统中得到应用,经过实验证明,该系统提供了一个简便易操作的HDFS可视化管理工具,提高了云计算的数据管理水平。下一步研究的重点是设计实现基于此管理系统的云计算平台,为集群外的节点访问和数据处理提供服务。
参考文献
[1] Apache Hadoop[EB/OL].(2009-09-12)[2014-10-15].http://hadoop.apache.org/.
[2] GHEMAWAT S, GOBIOFF H, LEUNG S T. The Google file system[C]. ACM SIGOPS Operating Systems Review,ACM, 2003,37(5):29-43.
[3] Hadoop Distributed Filesystem[EB/OL].(2008-12-13)[2014-10-15].http://hadoop.apache.org/hdfs.
[4] 赵书兰.典型Hadoop云计算[M].北京:电子工业出版社,2013.
[5] 蔡斌,陈湘萍.Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理[M].北京:机械工业出版社,2013.
[6] 陆嘉恒.Hadoop实战(第2版)[M].北京:机械工业出版社,2012.
[7] 黄文依,王劲松,林胜.HDFS可视化操作系统研究与实现[J].天津理工大学学报,2012,28(1):31-34.
[8] 曹宁,吴忠海,刘宏志,等.HDFS下载效率的优化[J].计算机应用,2010,30(8):2060-2065.
[9] CADENHEAD R S, LEMAY L.21天学通Java 6(第五版)[M].袁国忠,张劼,译.北京:人民邮电出版社,2008.