APP下载

基于Spark核心架构的大数据平台技术研究与实践

2016-11-16郭慈廖振松

电信工程技术与标准化 2016年10期
关键词:数据源生态圈数据中心

郭慈,廖振松

(中国移动通信集团湖北有限公司,武汉 430023)

基于Spark核心架构的大数据平台技术研究与实践

郭慈,廖振松

(中国移动通信集团湖北有限公司,武汉 430023)

湖北移动自搭建企业级大数据中心以来,整合了O域、B域、M域的数据,形成了标准化、开放式、集中化的数据中心平台。深入研究Hadoop及Spark等生态圈软件的底层技术,构建以Spark为核心的统一数据存取、处理、分析、实时计算的大数据平台,创新性地提出5项关键技术解决方案,攻克了业界公布的众多难题,为企业众多机构提供技术支持与服务支撑。

大数据;Spark;数据透明访问;资源管理;多租户

湖北移动在2013年部署了首个基于Hadoop技术的大数据应用——流量经营分析系统。主要功能是使用Hive(MR1计算框架)对每日高达10TB的GN口信令数据进行数据仓库ETL工作,完成了用户终端应用、网站内容、终端类型、上网位置、用户偏好等数据的挖掘分析工作,使用Esper对MC口信令数据进行流处理实时计算,为对用户进行精准营销活动提供有效数据支撑。使用HBase高效快速的为客服人员提供用户详细上网情况信息,以对客户明细级投诉内容及时释疑,提升客户满意度。但原有以Hadoop为主的大数据平台中主要存在以下问题。

Hadoop版本相对较老,无法进行动态资源分配和管控,给生产调度任务优化带来较大维护困难。

Hive与HBase共享计算资源无法隔离,Hive在进行日汇总计算和月汇总计算时占用CPU资源时间过长,导致HBase生产容易超时。

受限于HBase独特的存储方式,不能与Hive数据相互访问,导致同样的数据需要双格式存储,使得存储开销很大,导致硬件投资增加。

Esper流处理架构冗余度高,独立于YARN之外无法进行资源动态扩展,无法实现多租户管理,导致硬件投资增加。

基于以上问题,迫切需要在构建数据中心平台对原有的技术架构进行升级。基于此,“基于Spark核心架构的大数据平台技术研究与实践”攻关项目应运而生。“基于Spark核心架构的大数据平台技术研究与实践”是湖北移动在2015年度与集团联合的重点攻关项目,主要目的是为了降低成本,消除技术之间的限制和壁垒,获得企业级的IT自由度,更好的挖掘隐藏在大数据中的价值。该项目以Spark为核心分布式计算引擎,以HDFS为持久层读写原生数据,构建基于Spark SQL的透明数据访问层,降低数据ETL的代价;以YARN作为资源管理器,提供可伸缩服务类应用资源调度,提高整体资源利用率;以Spark Streaming技术构建流平台统一处理接口;引进Spark生态圈组件,根据不同的场景使用Spark生态圈的多个产品来提供应用解决方案;基于Docker实现YARN之上的容器技术,使得更多的大数据外围软件工具能够运行于YARN之上,真正全面的打造一个基于Spark技术All-in-One的大数据中心处理平台。

1 Spark核心架构大数据平台的技术实现方案

1.1基于Spark的All-in-One大数据处理平台

湖北移动在2015年度不断深入研究大数据开源技术,重点攻关YARN和Spark等多项技术难点,在大数据开源技术领域首次实现了All-in-One的技术架构,如图1所示。

该技术架构实现All-in-One的核心方法如下。

采 用Spark和Spark Streaming进行统一的数据存取、批量处理、即席查询、实时分析、流计算的一体化处理,在大数据中心物理设备层面不再区分设备节点类型与服务类型,全部纳入YARN的资源管控之下。以YARN为核心建立针对多租户的应用进行动态资源管理,提高整个数据中心资源的利用率。

以Spark RDD内存计算技术为核心提供统一的数据存取处理及分析平台,对在不同数据库系统中数据提供基于Spark SQL的透明访问层以降低开发成本。同时支持多租户为其大数据应用在统一平台上并行创建集成开发运维环境。

继续引入Spark生态圈所有组件为湖北移动提供了All-in-One的数据处理方案。用户可以根据不同的场景使用Spark生态圈的多个产品来解决应用,而不是使用烟囱式的多个隔离的系统来满足不同场景不同应用的需求。

首创引入YARN+Docker技术,做到了在YARN管理的资源之上应用容器,有效的将非Hadoop生态圈的软件纳入YARN的统一动态资源管理中,进一步提高了资源利用率,真正意义上做到一个集群一套资源管理所有应用的All-in-One大数据中心平台。

1.2基于Spark SQL实现多种异构数据源间的透明访问

在业界通用的大数据架构中,由于集中复制导致大量的重复数据,造成存储和网络带宽资源的浪费,湖北移动采用“透明访问”有效的解决这一问题。在数据中心实现各计算框架下的数据透明交互,节省存储开销,减少硬件投资,同时保证了大数据平台访问的可操作性。“透明访问”的技术架构如图2所示。

图1 湖北移动大数据平台技术架构

图2 透明数据访问技术构架

透明数据访问是基于Spark SQL的DataFrame框架来实现的,通过Spark1.2版本发布的ExternalData Source API组件,Spark SQL可以将不同的外部数据源抽象成一个关系表格,支持了多种如JSON、Avro、CSV、Parquet、ORC等数据格式,将上述系统中的文件映射到透明数据访问层中,获得了更多的结构信息,将查询中的各种信息下推至数据源处,从而充分利用数据源自身的优化能力来完成列剪枝、过滤条件下推等优化并最终转换为RDD DAG在Spark引擎上执行。

在透明数据访问的模式下,采用了Phoenix构建在HBase上的SQL中间件,提供对HBase的SQL能力,通过SQL方式实现对HBase表的创建和数据载入,保证符合External data source的格式特性,实现Spark和HBase间的数据透明交互。实例方法如图3所示。

目前湖北移动在透明访问层支持的数据源有Hive、MySQL、Phoenix、Orcale、DB2、Parquet、JSON、CSV、AVRO等。

1.3多种手段全方位提高Spark计算速度

1.3.1首创引入PCI-e接口的SSD卡,实现Spark物理加速

在湖北移动大数据中心中,已完成跨内存、闪存等介质的分布式混合列式存储的部署,在Spark节点上配置0.8T PCI-E SSD加速卡,服务于Spark计算框架供Spark高速访问。湖北移动数据中心首创使用“内存+SSD+HDD”三级缓存方案,使用SSD建立分布式内存列式缓存Holodesk,并在缓存中建索引和过滤算法,加速了查询与统计分析性能,SQL分析性能接近全内存计算能力,核心程序的运行效率比之前提升了2~10倍。

1.3.2首创采用动态代价分析算法,加速Spark多表分析性能

湖北移动在Spark中采用动态代价分析算法,根据相关表的大小,记录条数,数据分布情况,数据倾斜情况以及抽样数据计算情况,综合考虑智能选取最优的执行计划,较好的解决了数据倾斜问题,加速了数据处理性能。

在算法实现方面,先自动计算表的大小,在数据倾斜发生时根据数据量动态选择算法和执行计划的调整,根据不同的SQL场景,自动选择将小表存放到每个节点的内存中进行Map Join,或者将倾斜值对应的记录在一个表中进行进一步切分,自动转换成多次Map Join进行操作,从而避免将数据倾斜的某一关联字段值汇聚到集群的某一个节点上关联计算导致内存溢出的情况。

1.3.3在Spark中创新Broadcast算法,提升Spark查询性能

通过增加Broadcast算法,优化了Spark SQL表关联的执行效率,提供在每台机器上缓存一个只读的变量,并通过广播变量将一个大数据量输入数据的副本分配给每个节点,从而使SQL表关联的执行效率大幅提高,在ETL平台中即位查询1 000万级数据源,效率平均提升30倍左右。

通过Benchmark测试,对比修改前后的差异,左连接原始时间为9 288 ms,改造后耗时1 963 ms,性能较以往提升4倍。该Spark优化的关键技术已经在开源社区获得通过,对应的路径地址:https://github. com/apache/spark/pull/3362#event-209299107。

1.3.4创新Spark动态分区算法,提升Spark数据入库性能

分区表是管理数据的一种方式,Spark SQL的执行引擎仅扫描分区值对应的目录下的文件,从而提高了大数据的检索效率。原版本的Spark SQL在导入数据时只能通过静态分区的语法进行向Spark表中导入数据,这种方法需要人工预先对数据进行分区,耗时耗力。湖北移动创新改进Spark源码,实现Spark SQL支持动态分区,Spark SQL的执行引擎可以通过表的元数据,自动判断文件中的分区值,然后根据分区值创建或者找到对应的目录,把数据写到这个目录的文件里,提高大批量数据导入效率67%。这项关键技术在Spark开源社区获得通过并发布,地址对应的链接:https:// github.com/apache/spark/pull/2226。

图3 实例方法

图4 Kafka Cluster与YARN Cluseter资源调度示意图

1.4基于YARN的Docker服务容器化实现

湖北移动大数据中心应用率先采用YARN+Docker的资源控制技术,将Hadoop生态圈组件如Spark、Hbase等和非生态圈中间件如Tomcat、Kafka、Redis、Mysql等软件实现YARN的统一资源调度和分配。该方式不仅有效的提高资源的使用效率,同时基于YARN实现资源的自动容灾和在线动态扩缩容。使用Docker又能够同时完成在YARN上多套相同组件,完全资源隔离的能力,实施后综合减少了大数据租户的计算资源约30%左右。

在Hadoop2.6的YARN中使用Docker作为YARN的执行引擎,修改YARN的执行容器引擎为YARN上运行任务的扩展提供良好依据,只要在Docker上运行的任务都可以直接使用YARN来分配执行资源。

图4为Kafka Cluster与YARN Cluseter资源调度示意图。图中,Kafka Cluster的Server1可以实际运行在YARN的NodeManager中,使用资源时可以向传统的短任务(如MR)一样进行资源的动态申请和资源容灾隔离控制。

采用Docker+YARN+Slider完成对底层资源的隔离,为应用提供“独占”的Pass服务,如图5所示。

2 Spark核心架构大数据平台的关键技术与创新点

2.1实现All-in-One大数据平台,减少集群硬件投资50%

(1)将批处理与流处理平台整合,在一个集群中使用Spark SQL支撑批处理、Spark Streaming支撑流处理,实现资源统一动态管理,减少集群投资30%以上。

(2)将Docker和YARN技术结合, 将Hadoop生态圈组件如Spark、Hbase等和非生态圈中间件如Tomcat、Kafka、Redis、Mysql等,实现基于YARN的统一资源调度和分配,实现资源的自动容灾和在线动态扩缩容、分布式协调、负载均衡等新型功能。提高了资源使用效率,可减少投资20%。

(3) 引入Spark生态圈所有组件, 提供了数据仓库、即位查询、批处理、流处理、机器学习、数据挖掘、图形分析、算法库等丰富的功能。用户可以根据不同的场景使用Spark生态圈的多个组件来解决应用,避免使用烟囱式的多个隔离的系统来满足不同场景不同应用的需求。

图5 基于Docker+YARN+Slider技术的底层资源隔离

2.2基于Docker+YARN技术,实现新型的资源管控能力,提升资源利用率

(1)基于Docker的资源分配和隔离。在YARN的统一资源管理下实现了为多租户资源间提供可隔离、可配额、可度量、可移动的新型特性,实施后提高了大数据租户的计算资源25%左右。

(2)基于Docker+YARN的DRF管控增强。通过Dominant Resource Fairness(DRF)技术以物理节点为单位将不同性能的物理CPU划分成同等性能多个虚拟CPU。用户提交作业时指定每个任务需要的虚拟CPU个数,避免物理CPU数量相同但性能不同的节点分配任务过重,保障分布式技术资源均衡。

(3)标签调度。通过YARN的 Label Based Scheduling调度能力实现对NodeManger配置不同的标签,在分配资源时分配指定资源到指定标签的NodeManger,实现对不同类型任务、不同资源队列、不同租户的任务提交到指定的NodeManger中,在作业调度中提供了一种新的资源隔离手段。

(4)物理独占隔离机制。采用Docker+YARN+ Slider对底层资源的隔离,为租户或应用提供“独占”的资源服务,并支持服务的动态扩容缩容、分布式协调、负载均衡等能力。

2.3基于Spark SQL实现多种异构数据源间的透明访问,提高开发效率

首创使用基于Spark SQL为核心的“透明访问”技术,在数据中心实现Hbase、Hive、Spark等异构数据源之间的数据透明交互访问,在大数据平台中构建了面向业务使用人员的虚拟化数据层以及统一分析层,把不同类型的数据库、运算、管理进行物理或逻辑上的分离,将应用和底层有效分开。用户只需根据自己的需求,通过标准的SQL,无障碍地获取不同类型、不同位置的数据库的服务,提高了用户SQL开发工程师的开发效率。

对各个异构的数据源运行高度抽象,进行语义解析,对开发者提供统一的SQL语句接口,屏蔽异构数据源的接口细节,并可以在他们之间进行通用的Join、 Union、Sort、去重和表达式求值等整合运算,实现透明数据访问即支持跨库访问。减少数据库间集中复制导致大量的重复数据,造成存储和网络带宽资源的浪费,节省存储开销,减少硬件投资,同时为了保证大数据平台访问的可操作性。

数据透明访问技术为业务开发人员解决了应用和管理上的难题,让应用开发和业务分析更敏捷更实时,同时解决了由于集中复制导致大量的重复数据,造成存储和网络带宽资源的浪费,从而节省存储开销,减少硬件投资25%。

2.4首创Spark SQL动态代价分析算法,提高多表关联计算效率32倍

首创Spark动态代价分析算法,降低数据倾斜带来的性能影响。正常的数据分布都是倾斜的,在Hadoop环境中数据倾斜会极大影响性能,总导致有部分任务极大的拖慢了整个任务的完成时间。基于此,湖北移动首创了动态代价分析算法,自动判断使用Map Join的方式优化关联性能,避免关联计算导致内存溢出的情况;自动计算出相关关联表中关联字段的直方图,分析计算效率代价,动态生成相关执行SQL;并设置内存使用安全阈值的方式来保证整个分布式架构的内存使用安全,使得任何SQL都不会影响整个计算引擎运行的稳定性。

2.5改进源码增加算法,获开源社区发布,提升Spark查询和入库性能4倍

首先,改进Spark源码增加Broadcast功能,提供在每台机器上允许缓存一个只读的变量,而不是每个任务保存一份副本。利用广播变量,能够以一种更有效率的方式将一个大数据量输入数据的副本分配给每个节点,从而提升Spark查询性能4倍。这项关键技术已经提交开源社区获得通过,目前已经在Spark新版本中发布。

其次,改进Spark源码实现Spark SQL支持动态分区,Spark SQL的执行引擎可以通过表的元数据,自动判断文件中的分区值,然后根据分区值,创建或者找到对应的目录,把数据写到这个目录的文件里,提升Spark数据入库性能67%。这项关键技术已经提交开源社区获得通过,已在Spark新版本中发布。

3 结束语

基于Spark核心架构的大数据平台自投入运营以来,有效汇聚了B域、O域有价值数据,实现了跨域数据的融合处理与集中存储。每日处理各类数据量约19TB,共接入1100余个数据源接口,建设940余个数据模型,开发运维2000个程序,完成基础B域数据资产1213张物理表,字段23079个,O域数据资产47张物理表,字段1579个,所有大数据应用需求均已按照新的数据分层模型进行统一建设。服务11个合作伙伴开发团队,服务20余个专业应用系统。

同时,在Spark核心架构大数据平台的支撑下,湖北移动基于数据中心开展旅游行业应用,通过移动通信技术及大数据处理技术相结合,获取基础数据,运用特定模型,根据应用方向处理数据,提供广泛意义人口相关信息的应用平台。周期性从数据中心中获取位置信令数据并进行预处理,利用移动通信基站与地区空间场所对应关系,建立移动信息与实体世界关联,在此基础上,通过智能建模从统计上精确的把握用户与社会资源的时空关联,进一步进行各种方式的信息整合和发布。

在后期工作规划中,一方面,对内部算法进行优化,更进一步提升效率和提升产品影响力。另一方面,注重产品的价值体系与数据变现,以“旅游”为突破口,融合互联网公司如百度旅游、淘宝魔方、移动LBS大数据、号码通讯等的优点,建立湖北旅游大数据门户;为所有旅游景区,旅游公司、游客提供免费的大数据的基础服务和有偿的营销增值服务。在不断提升客户感知的同时,为企业进行形象宣传。

[1]詹义, 方媛. 基于Spark技术的网络大数据分析平台搭建与应用[J]. 互联网天地, 2016(02).

[2]彭海军. 大数据分析平台混合框架的研究[J]. 信息与电脑(理论版), 2015(12).

[3]黄哲学, 陈小军, 李俊杰, 等. 面向服务的大数据分析平台解决方案[J]. 科技促进发展, 2014(01).

[4]王强, 李俊杰, 陈小军, 等. 大数据分析平台建设与应用综述[J]. 集成技术, 2016(02).

[5]管廷昭, 夏艳东. 大数据视角下高校综合信息分析平台的构建[J]. 数字技术与应用, 2014(08).

[6]嵇智源. 基于开源软件的大数据分析平台[J]. 数字技术与应用, 2015(03).

[7]刘峰波. 大数据Spark技术研究[J]. 数字技术与应用,2015(09).

[8]宋婷汀. 大数据在银行业务管理中的应用研究[J]. 新经济,2016(23).

[9]李巍巍. 大数据技术应用研究[J]. 自动化与仪器仪表,2016(07).

Research and practice on big data platform technology based on the core structures of Spark

GUO Ci, LIAO Zhen-song
(China Mobile Group Hubei Co., Ltd., Wuhan 430023, China)

Since building the large enterprise big data center, Hubei Mobile integrates data from domain O, domain B and domain M, forms the standardization, open and centralizes data center platform. Hubei Mobile delves into the Hadoop and Spark the underlying technology, ecosystem software, builds a big data platform based on Spark as the core of the unifi ed data access, processing, analysis, real-time calculation,and innovatively puts forward fi ve key technology solutions, to conquer the industry published numerous problems, which bring many institutions for the enterprise to provide technical support and service support.

big data; Spark; transparent access to data; resource management; multi-tenant

TN915

A

1008-5599(2016)10-0040-06

2016-09-16

* 中国移动集团级一类科技创新成果,原成果名称为《基于Spark核心架构的大数据平台技术研究与实践》。

猜你喜欢

数据源生态圈数据中心
酒泉云计算大数据中心
浅析数据中心空调节能发展趋势
关于建立“格萨尔文献数据中心”的初步构想
Web 大数据系统数据源选择*
新区制造生态圈
基于不同网络数据源的期刊评价研究
跑步生态圈
崭新的“医疗生态圈”
基于云计算的交通运输数据中心实现与应用
基于真值发现的冲突数据源质量评价算法