基于Hadoop的Web医疗咨询数据分析系统的实现
2018-09-29张国锋
张国锋
摘 要:相对传统的分布式数据库和数据仓库技术,Hadoop和MapReduce技术以其简单性、良好的可扩展性和容错性成为当前大规模数据处理的主流技术之一。而Hive等软件产品在Hadoop基础上实现了与关系数据库的接口模式,从而进一步改善了Hadoop的易用性。数据存储使用Hadoop分布式存储,使用Hive特有的数据库语言HiveQL实现数据的查询以及分析操作。最后使用Java JFreeChart实现结果可视化,将结果以柱状图的形式显示出来。由于使用Hadoop作为基础,数据的查询分析速度更快,能够更好地与系统后台对接,方便管理者操作。
关键词:数据分析; 分布式存储; Hive; JFreeChart
Abstract: Compared to traditional distributed database and data warehouse technologies, Hadoop and MapReduce technologies become one of the mainstream of the current large-scale data processing for their simplicity, good scalability and fault tolerance. The Hive and other software products based on the Hadoop implement the interface and model of relational database, thereby further improve the easy using of Hadoop. Correspondingly, the frame structure arouses widespread attention and achieves extensive use. Hadoop-based Web consulting medical data analysis system is based on Hadoop which could be able to query and analyze data already stored in the system. Data is stored by using the Hadoop Distributed Storage, and by using the special database language HiveQL of Hive, the query and analysis of operating data are implemented. Finally, the use of Java JFreeChart achieves result visualization, the results are displayed in bar graph. Using Hadoop as a basis, data query and analysis are faster, which could better interface with the system to facilitate the operation of the administrator.
Key words: data analysis; distributed storage; Hive; JFreeChart
引言
如今已经进入大数据时代,各式各样的数据与日俱增。不仅是数据总量在迅速增加,同时数据生成速率也在不断增加。截止到目前,数据量已从TB级别跃升到PB、EB乃至ZB级别。
为了紧跟全球大数据技术发展的趋势,国内各界对大数据也赋予了高度关注。在这种情况下,人们要挑战的是,如何从大数据中提取价值最大的信息。
Hadoop2解决了namenode的单点故障和内存压力过大难以扩展问题,解决JobTracker单点故障和访问压力过大问题,同时还解决了对MapReduce之外的框架支持问题。
本系统主要研究的内容是对Web医疗咨询数据记录进行分析。使用HDFS和MapReduce,把预的数据导入并存储在集群的节点上。利用Hadoop自带的Hive数据库语言进行数据的查询和分析。数据分析的结果进行可视化,使得结果可以以图表的样式展示给用户。系统中需要使用JFreeChart中的柱状图样式将数据展示给用户。
1 主要技术介绍
1.1 HDFS
Hadoop分布式文件系统(HDFS)是适合运行在通用硬件(commodity hardware)上的分布式文件系统。与现有的分布式文件系统有很多共同之处。同时也有一些显著的不同。HDFS是一个容错性很高的系统,适合运用在廉价的机器上。HDFS访问数据的吞吐量非常高,非常适合应用于大型数据集。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
1.2 Hive
Hive是建立在Hadoop上的数据仓库基础构架[2],提供了能够用来提取转化加载(ETL)数据的一系列工具。Hive是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。定义了特有的简单类SQL查询语言HiveQL,利于熟悉SQL的用户查询数据。该语言也可以让熟悉MapReduce的用户开发自定义的mapper函数和reducer函数来处理內部建立的mapper和reducer无法完成的复杂的工作。Hive采用类SQL的查询方式,将SQL查询转换为MapReduce的job在Hadoop集群上執行。
2 系统分析
網页数据是以.txt格式存储在文件中。使用Hadoop操作技术将数据拷贝到系统的HDFS中, Hive脚本利用“|”符号将数据属性划分存储;用户可以在数据分析页面分别以性别分布、年龄段分布、地区分布以及各年龄段性别分布将分析出的结果可视化,等条件进行选择以柱状图的形式返回页面显示。系统需求如图1所示。
3 系统设计
3.1 总体结构
数据分析系统总体结构如图2所示。
由图2中可以看出数据分析系统的流程如下:首先进入首页,选择功能界面。由用户选择功能进入相应的界面;如进入数据查询界面后,用户在输入框中输入想要查询的数据ID编号,点击查询按钮,所要查询的数据会在页面的数据显示区域显示出来,并按照属性划分以表格形式展示;进入数据分析页面后,用户根据自己意愿选择分析条件,点击查询按钮,分析结果会在页面的显示区域以柱状图的形式展示。
3.2 数据存储设计
在使用系统前,需要将即将使用的数据存入系统中。把数据以文本形式存储,放在主文件夹中;使用Hadoop命令将文件拷贝到HDFS中;使用Hive把数据按照属性划分,建立表格。
3.3 详细设计
3.3.1 数据属性划分设计
根据数据的实际情况,将数据属性划分为13个部分。当用户进行数据查询时,数据的信息会按照这13个属性划分在页面中,并以表格的形式呈现出来。其中,数据查询会用到“编号”来进行数据查阅;数据分析则会用到性别、年龄和地区属性作为条件进行数据分析。
3.3.2 数据分析设计
数据分析共包含4个分析条件,分别是性别分布、年龄段分布、地区分布以及各年龄段性别分布。
4 系统实现
4.1 Hadoop基础构架
在安装Hadoop之前,需要在ubuntu系统中安装SSH免密码登录。
在.ssh文件夹下创建id_dsa和id_dsa.pub两个文件,这是一对私匙和公匙,需把公匙追加到授权的key里面。
4.2 Hive安装配置
解压Hive-1.2.1.tar.gz至主文件夹,配置环境变量。在Hive文件中配置信息,Hive元数据库配置为Mysql,如图3所示。
在HDFS上创建Hive所需路径/tmp和/user/hive/warehouse
4.3 功能实现
4.3.1 数据存储
准备好的数据放入主文件夹中,使用Hive语言基于现有文件创建表。把数据文件illness.txt拷贝到HDFS,然后确认该文件确实存在。操作过程如图4所示。
在Hive脚本文件hql文件中将数据分属性存储,文件名命名为illness.hql:执行HiveQL脚本。
4.3.2 数据查询模块及界面实现
选择数据查询功能后,进入数据查询界面。页面包含了一个文本输入框,用来输入数据的编号ID,一个查询按钮,连接后端QueryServlet类。QueryServlet中doPost()方法接收输入的数据ID编号,进入系统DBConn类,使用HiveQL语言,执行select语句,将与ID符合的数据返回QueryServlet类,由QueryServlet中的HttpSession类传输到前端数据查询页面的表格中。
4.3.3 数据分析模块及界面实现
选择数据分析功能后,进入数据分析界面。右边部分有4个单选按钮,分别为性别分布、年龄段分布、地区分布和各年龄段男女分布,还有一个查询按钮,连接后端SelectServlet。查询界面如图5所示。
4.3.4 分析结果可视化
进入系统后选择数据分析进入数据分析界面,图像显示部分就连接至后端SelectServlet类。把所选按钮的value值传送给SelectServlet类。SelectServlet类中有4个方法分别对应4个不同的value值,按照value值选择对应方法将结果可视化。可视化完成后,通过“onClick”执行一个JavaScript函数clk_searchImg()。这个函数先与页面的imgForm表格连接,从表格中得到chart值,然后连接后端ChartServlet,通过request方法和response方法,将可视化图像显示在页面上。显示页面如图6所示。
使用DefaultCategoryDataset类建立一个对象,用来输入图像所用的数据。addValue()方法中number数据的数量,就是根据该数据画出在图像中的柱的高度,数据输入完成,由JFreeChart类建立一个图表对象,将数据放入对象类中。最后将图表类输入到ChartUtilities类,将图表对象转化为图表文件。
5 结束语
基于Hadoop的Web医疗咨询数据分析系统采用了当下较为普遍和便捷的Hadoop技术,提供了大数据的查询和分析功能,查看分析结果。系统完成了将数据按照用户希望的形式展现出来的任务,将分析结果变成了图表,提高了用户使用系统的直观性和舒适度。由于受Hive语言的限制,在系统中还不允许用户随时存储数据,也不能随意更改和删除数据。系统有待进一步改善和提高。
参考文献
[1] 陆嘉恒. Hadoop实战[M]. 北京:机械工业出版社,2011.
[2] CAPRIOLO E,WAMPLER D,RUTHERGLEN J. Hive编程指南[M]. 曹坤,等. 北京:人民邮电出版社,2013.
[3] 陈恒,楼偶俊,朱毅,等译. JSP网站设计[M]. 北京:清华大学出版社,2017.
[4] TURKINGTON G. Hadoop基础教程[M]. 张治起,译. 北京:人民邮电出版社,2014.
[5] 岑文初. 分布式计算开源框架Hadoop入门实践[EB/OL]. [2018-08-29] Http://blog.csdn.net/cenwenchu79/archive/2008/08/29/2847529.aspx.
[6] Apache Software Foundation. Apache Hadoop[EB/OL]. [2018-06-13]. Http://hadoop.apache.org.
[7] WHITE T. Hadoop权威指南[M]. 周傲英,曾大聃,译. 北京:清华大学出版社,2010.
[8] NOLL M G. Running Hadoop on ubuntu Linux (Single-Node Cluster)[EB/OL]. [2011-07-17]. http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/.
[9] WANG Cong,WANG Qian, REN Kui,et al. Ensuring data storage security in Cloud Computing[C]//2009 17th International Workshop on Quality of Service. CHARLESTON, SC, USA:IEEE,2009:1-9.
[10]CHANG F,DEAN J, GHEMAWAT S, et al. Bigtable:A distributed storage system for structured data[C]//7th USENIX Symposium on Operating Systems Design and Implementation. Seattle, WA:USENIX Association,2006:205-218.