随着网络信息技术的不断普及,网上购物凭借其方便、快捷等特点,受到越来越多购物者的青睐。继而导致寄递数据呈现几何增长的趋势。据国际统计局《2015年邮政行业发展统计公报》数据显示,2015邮政行业全年业务总量已突破5 000亿元,快递业务量突破200亿件,快递业所产生的各类数据已达到PB级[1]。寄递数据具有数据量大、结构复杂且动态变化等特点,如何对寄递数据进行有效的监督管理、从中分析得出业务数据特征并进行决策制定,已成为困扰相关部门的难题之一。国家相关单位在2012年启动“邮政业监督管理信息系统工程——安全监管信息系统”的建设。该工程系统是基于RDBMS (关系数据库管理系统) 构建的数据仓库系统,目前该系统的数据管理分析遇到瓶颈。表现为以下几个方面:1) 非结构化数据处理支持力度不够:关系型数据库处理方式是指数据对应到映射到行和列组成的关系范式上,即映射到表。企业真实产生的寄递数据包括大量的非结构化数据,如:图片、日志等。基于关系型数据仓库系统难以满足要求,或需付出高昂成本实现。2) 扩展成本较高:为保证数据的安全性和可靠性,数据库服务器通常采用昂贵的高端机器作为数据库服务器,对数据库服务器进行扩展的成本较高。3) 数据处理能力有限:基于RDBMS的数据仓库,面对海量数据处理,数据I/O成为瓶颈,分析运算时间较长[2-3]。本文针对上述问题,展开对邮政寄递大数据分析系统的研究。
1 相关技术基于Hadoop[4]分布式存储计算框架,针对上述系统瓶颈提供有效技术手段。Hadoop源于Google公司2003—2004年发表的3篇技术论文[5-7]。技术人员根据这3篇论文实现了Hadoop这一全新的开源分布式存储和计算框架。其中HDFS (Hadoop distribute file system) 是Hadoop存储的核心。MapReduce是Hadoop的分布式计算编程模型。
Hadoop构建于普通机器组成的分布式集群上,采用HDFS分布式文件系统作为存储系统,能对海量数据进行合理分割和高可靠存储。Hadoop采用MapReduce编程模型,将计算任务合理分配到集群节点上,充分利用分布式计算优点。与传统数据仓库系统相比,Hadoop在大数据处理方面具有诸多优势[8-9],如表 1所示。
Hadoop除上述核心HDFS存储框架和MapReduce计算模型外,还具有丰富的生态系统圈,为Hadoop在大数据计算方面提供有利补充。
Hadoop目前被广泛应用于大数据分析计算领域,在百度、阿里、腾讯等一些大型网络公司得到广泛应用,是目前应用最多,最为成熟的大数据计算框架。
因此,本文致力于研究Hadoop开源框架,设计了一个基于Hadoop的邮政寄递大数据分析系统,并对该系统进行部分实现。
2 系统的设计和实现 2.1 系统架构设计结合寄递数据特点,邮政寄递大数据分析系统分为数据采集层、存储层、分析层以及集群调度层等几个部分[10-13]。如图 1所示。
Download:
|
|
图 1 系统架构图 Fig. 1 System architecture diagram |
1) 数据采集层。数据采集层是采集工具和ETL工具的集合,主要是将快递企业上报的快递数据进行采集、校验和清洗。数据采集层采集数据后,处理出有意义的数据,并通过统一接口平台将经过处理的数据存储在数据存储层相应的存储系统中,供数据分析层使用。数据的使用统一接口平台,满足不同数据源类型,同时实现对存储的底层屏蔽,具有较好的可编程性,方便管理和部署。
2) 数据存储层。数据存储层对邮政寄递数据进行分类存储,批量分析使用的“冷”数据,存储HDFS中。实时更新的业务数据存储于RDBMS中,小规模实时数据存储于数据仓库中。RDBMS中的实时数据定期往HDFS和数据仓库中同步。HDFS与数据仓库结合使用,承担不同分析任务。
3) 数据分析层。数据分析层是在业务基础之上建立分析模型,并结合模型采用多种分析手段对数据进行分析。分析模型包括:地理信息系统模型、快递中转模型、爆仓预警模型、快递监控模型以及重点寄件监控等多个模型。分析层除使用MapReduce编程模型作为分析手段外,还引入其他分析工具,如Hive[14]与Hadoop进行整合以减少MapReduce的开发成本。在后续试验中还会尝试引入其他分析手段。
4) 集群监管调度层。集群监管调度层主要对集群进行调度和维护。调度包括对集群进行负载均衡,维护主要是对集群的运行状态进行实时监控。
2.2 数据流设计基于Hadoop邮政寄递大数据分析系统,底层核心采用Hadoop开源框架实现,数据采集层的核心采用Apache Flume[15]开源软件实现。Flume具有高性能、高可用和高可靠等特点,用于承担系统采集和清洗任务。图 2为邮政寄递数据在大数据分析系统内部流转的流程图。
Download:
|
|
图 2 大数据分析系统底层数据流图 Fig. 2 Data flow diagram of big data analysis system |
由于时间和篇幅有限,本文对邮政寄递大数据分析系统进行部分实现。底层Hadoop集群采用1台NameNode服务器和3台DataNode服务器组成。底层操作系统采用64位centos 6.5系统,Hadoop采用2.7.0稳定版。Hadoop运行需Java环境,本实验JDK选取的jdk-7u79-linux-x64。集群配置见表 2所示。
Hadoop的集群安装准备工作:安装JDK、修改系统主机名以及将集群设置为SSH无密码访问。设置时间同步等一系列工作完成之后,配置$HADOOP_HOME/etc/hadoop目录下的core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml文件。配置成功之后,通过$HADOOP_HOME/sbin/目录下的start-all.sh和stop-all.sh对系统进行启动和停止,如图 3所示。
Download:
|
|
图 3 Hadoop正确配置启动图 Fig. 3 Properly configured boot graph of Hadoop |
为验证大数据分析平台相对于传统数据仓库系统在分析性能方面的优缺点,本文结合实际工程需求开展实验设计。其中,面单数据是快递的基本信息,包括寄件人信息、收件人信息、地理信息及时间信息等。数据以文件如:contract_EMS_20150401 _1460724345866.txt的形式采集、上报和存储,每条面单数据中每个字段用逗号分隔,每条面单用换行符分隔,如下为面单数据样例。
“安监系统”包括多个子系统,其中业务量检测子系统主要负责对邮政寄递数据业务量进行统计、检测和预警,并支持与历史数据的同比分析、环比分析,对比结果以表格、图形等方式呈现。区域业务量功能模块的主要功能是统计邮政寄递数据区域分布情况并对业务量进行提前预警通报。预警模型需计算出寄件流入前10名城市和流入量。目前,寄件产生的面单数据量已超过10亿条,针对此需求开展验证实验设计。安监系统现有数据仓库采用SQLServer2008作为底层实现,数据仓库实验采用SQL语句进行分析,语句如下:
大数据分析系统采用MapReduce编程模型,处理流程为:将数据集分割成一条条记录→map < k, v > →combine < k, list (v) > →reduce < k1, v1 > →结果数据,图 4为邮政寄递数据流入量MapReduce处理流程。
Download:
|
|
图 4 邮政寄递数据的MapReduce编程模型 Fig. 4 The MapReduce programming model of postal delivery data |
首先从HDFS中读取一条面单信息,从中获取收件地址字段,并通过Map函数将字符处理成 < Key, Value > 的形式,其中key为收件地址城市,Value为1,Map函数伪代码如下:
Reduce阶段将Map传过来的 < Key, Value > 按照Key的形式进行累加,得出每个城市的总数,输出时进行排序,取出排序前10的数据为结果。算法伪代码如下:
实验部分,分两组进行。第1组:分别在SqlServer2008与单节点Hadoop集群上进行数据量级别为5 000万 (993 M)、1亿 (2 GB)、5亿 (9.78 GB) 和10亿条记录 (19.8 GB) 实验,记录执行时间。实验结果如图 5所示。
Download:
|
|
图 5 第1组实验结果 Fig. 5 Results of the first group of experiments |
第2组实验:分别在单节点Hadoop集群和3个节点的Hadoop集群,进行数据量级别为5 000万 (993 M)、1亿 (2 GB)、5亿 (9.78 GB) 和10亿条记录 (19.8 GB) 的实验,记录执行时间。实验结果如图 6所示。
Download:
|
|
图 6 第2组实验结果 Fig. 6 Results of the second group of experiments |
实验结果表明:1) 在进行数据量小于2 GB邮政寄递数据分析时,现有的基于RDBMS的数据仓库系统具有优势。2) 在进行超过2 GB邮政寄递数据分析时,基于Hadoop的大数据分析系统具有明显分析优势。3) 增加基于Hadoop的邮政寄递大数据分析系统的数据节点,分析性能明显提高。4) 节点数与执行效率不是线性关系,因此需根据需求和成本进行合理节点选取。
4 结束语本文基于Hadoop及生态系统的研究,设计并部分实现了底层以Hadoop为核心的邮政寄递大数据分析系统。结合安监系统预警模型的实际需求,分别在现有RDBMS数据仓库系统和大数据系统上展开实验。实验结果表明,现有数据仓库系统在分析数据量较小 (小于2 GB) 数据时性能较好,基于Hadoop的大数据分析系统,在分析海量数据时具有明显优势。随着数据量的增加,可以通过增加数据节点,提高大数据分析系统性能。节点的个数需根据分析需要和构建成本合理选择。本文对邮政寄递大数据分析系统实验时,采用MapReduce编程模型作为分析手段。MapReduce将中间结果写入文件系统,分析性能受到影响。后续将采用Spark[16]与Hadoop结合的方式,进一步开展邮政寄递大数据分析系统的研究与探索。
[1] | 中国产业研究院. 2015-2022年中国电子商务市场全景调研及投资战略咨询报告[EB/OL]. (2015)[2016-09-14]. http://www.chyxx.com/research/201510/349060.html. |
[2] | Pavlo A, Paulson E, Rasin A. A comparison of approaches to large-scale data analysis[C]//ACM. SIGMOD International Conference on Management of Data. Rhode Island: SIGMOD, 2009: 165-178. |
[3] | Gunther N, Puglia P, Tomasette K. Hadoop superlinear scalability[J]. Communications of the ACM, 2015, 58(4):46–55. DOI:10.1145/2749359 |
[4] | Apache Foundation. Apache Hadoop [EB/OL]. (2016-01-20) [2016-09-14]. https://wiki.apache.org/hadoop. |
[5] | Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters[C]//Conference on Symposium on Opearting Systems Design & Implementation. USENIX Association, 2004: 107-113. |
[6] | Ghemawat S, Gobioff H, Leung S T. The Google file system[J]. Acm Sigops Operating Systems Review, 2003, 37(5):29–43. DOI:10.1145/1165389 |
[7] | Chang F, Dean J, Ghemawat S, et al. Bigtable: a distributed storage system for structured data[J]. ACM Transactions on Computer Systems, 2008, 26(2):205–218. |
[8] | Cohen J, Dolan B, Dunlap M, et al. MAD skills: new analysis practices for big data[J]. Proceedings of the Vldb Endowment, 2009, 2(2):1481–1492. DOI:10.14778/1687553 |
[9] | 覃雄派, 王会举, 杜小勇, 等. 大数据分析:RDBMS与MapReduce的竞争与共生[J]. 计算机光盘软件与应用, 2013, 23(7):55–56. |
[10] | Laurie B, Laurie P. Apache: the defini-tive guide[M].3rd ed. O'Reilly & Associates, 2005: 14-60. |
[11] | 蔡斌, 陈湘萍. Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理[M]. 北京: 机械工业出版社, 2013: 151-184. |
[12] | 董西成. Hadoop技术内幕:深入解析MapReduce架构设计与实现原理: in-depth study of mapreduce[M]. 北京: 机械工业出版社, 2013: 228-240. |
[13] | 魏迪. 基于Hadoop的海量业务数据分析平台的设计与实现[D]. 北京: 北京邮电大学, 2013. |
[14] | Thusoo A, Sarma J S, Jain N, et al. Hive: a warehousing solution over a map-reduce framework[J]. Proceedings of the Vldb Endowment, 2009, 2(2):1626–1629. DOI:10.14778/1687553 |
[15] | Hoffman S. Apache flume: distributed log collection for Hadoop[M]. Birmingham: Packt Publishing, 2013: 24-88. |
[16] | Gupta S, Dutt N, Gupta R, et al. SPARK: a high-level synthesis framework for applying parallelizing compiler trans-formations[C]//International Conference on Vlsi Design. IEEE Computer Society, 2003:461-466. |