加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

美团是如何应用Spark处理大数据的?

发布时间:2019-05-30 10:27:22 所属栏目:教程 来源:大数据资讯平台
导读:媒介 美团最初的数据处理赏罚以Hive SQL为主,底层计较引擎为MapReduce,部门相对伟大的营业会由工程师编写MapReduce措施实现。跟着营业的成长,纯真的Hive SQL查询可能MapReduce措施已经越来越难以满意数据处理赏罚和说明的需求。 一方面,MapReduce计较模子对多
副问题[/!--empirenews.page--]

媒介

美团最初的数据处理赏罚以Hive SQL为主,底层计较引擎为MapReduce,部门相对伟大的营业会由工程师编写MapReduce措施实现。跟着营业的成长,纯真的Hive SQL查询可能MapReduce措施已经越来越难以满意数据处理赏罚和说明的需求。

一方面,MapReduce计较模子对多轮迭代的DAG功课支持不给力,每轮迭代都必要将数据落盘,极大地影响了功课执行服从,其它只提供Map和Reduce这两种计较因子,使得用户在实现迭代式计较(好比:呆板进修算法)时本钱高且服从低。

另一方面,在数据客栈的按天出产中,因为某些原始日记是半布局化可能非布局化数据,因此,对其举办洗濯和转换操纵时,必要团结SQL查询以及伟大的进程式逻辑处理赏罚,这部门事变之前是由Hive SQL团结Python脚原来完成。这种方法存在服从题目,当数据量较量大的时辰,流程的运行时刻较长,这些ETL流程凡是处于较量上游的位置,会直接影响到一系列下流的完成时刻以及各类重要数据报表的天生。

基于以上缘故起因,美团在2014年的时辰引入了Spark。为了充实操作现有Hadoop集群的资源,我们回收了Spark on Yarn模式,全部的Spark app以及MapReduce功课会通过Yarn同一调治执行。Spark在美团数据平台架构中的位置如图所示:

美团是怎样应用Spark处理赏罚大数据的?

下面将先容Spark在美团的实践,包罗基于Spark所做的平台化事变以及Spark在出产情形下的应用案例。个中包括Zeppelin团结的交互式开拓平台,也有行使Spark使命完成的ETL数据转换器材,数据发掘组基于Spark开拓了特性平台和数据发掘平台,其它尚有基于Spark的交互式用户举动说明体系以及在SEM投放处事中的应用,以下是具体先容。

Spark交互式开拓平台

在推广怎样行使Spark的进程中,我们总结了用户开拓应用的首要需求:

数据调研:在正式开拓措施之前,起首必要熟悉待处理赏罚的营业数据,包罗:数据名目,范例(若以表布局存储则对应到字段范例)、存储方法、有无脏数据,乃至说明按照营业逻辑实现是否也许存在数据倾斜等等。这个需求异常基本且重要,只有对数据有充实的掌控,才气写出高效的Spark代码;

代码调试:营业的编码实现很难担保一挥而就,也许必要不绝地调试;假如每次少量的修改,测试代码都必要颠末编译、打包、提交线上,会对用户的开拓服从影响长短常大的;

连系开拓:对付一整个营业的实现,一样平常会有多方的协作,这时辰必要能有一个利便的代码和执行功效共享的途径,用于分享各自的设法和试验结论。

基于这些需求,我们调研了现有的开源体系,最终选择了Apache的孵化项目Zeppelin,将其作为基于Spark的交互式开拓平台。Zeppelin整合了Spark,Markdown,Shell,Angular等引擎,集成了数据说明和可视化等成果。

美团是怎样应用Spark处理赏罚大数据的?

我们在原生的Zeppelin上增进了用户登岸认证、用户举动日记审计、权限打点以及执行Spark功课资源断绝,打造了一个美团的Spark的交互式开拓平台,差异的用户可以在该平台上调研数据、调试措施、共享代码和结论。

集成在Zeppelin的Spark提供了三种表明器:Spark、Pyspark、SQL,别聚散用于编写Scala、Python、SQL代码。对付上述的数据调研需求,无论是措施计划之初,照旧编码实现进程中,当必要检索数据信息时,通过Zeppelin提供的SQL接口可以很便利的获取到说明功效;其它,Zeppelin中Scala和Python表明器自身的交互式特征满意了用户对Spark和Pyspark分法式试的需求,同时因为Zeppelin可以直接毗连线上集群,因此可以满意用户对线上数据的读写处理赏罚哀求;最后,Zeppelin行使Web Socket通讯,用户只必要简朴地发送要分享内容地址的http链接,全部接管者就可以同步感知代码修改,运行功效等,实现多个开拓者协同事变。

Spark功课ETL模板 除了提供平台化的器材以外,我们也会从其他方面来进步用户的开拓服从,好比将相同的需求举办封装,提供一个同一的ETL模板,让用户可以很利便的行使Spark实现营业需求。

美团今朝的数据出产主体是通过ETL将原始的日记通过洗濯、转换等步调后加载到Hive表中。而许多线上营业必要将Hive表内里的数据以必然的法则构成键值对,导入到Tair中,用于上层应用快速会见。个中大部门的需求逻辑沟通,即把Hive表中几个指定字段的值按必然的法则拼接成key值,其它几个字段的值以json字符串的情势作为value值,最后将获得的对写入Tair。

美团是怎样应用Spark处理赏罚大数据的?

因为Hive表中的数据量一样平常较大,行使单机措施读取数据和写入Tair服从较量低,因此部门营业方抉择行使Spark来实现这套逻辑。最初由营业方的工程师各自用Spark措施实现从Hive读数据,写入到Tair中(以下简称hive2Tair流程),这种环境下存在如下题目:

每个营业方都要本身实现一套逻辑相同的流程,发生大量一再的开拓事变;

因为Spark是漫衍式的计较引擎,因此代码实现和参数配置不妥很轻易对Tair集群造成庞大压力,影响Tair的正常处事。

基于以上缘故起因,我们开拓了Spark版的hive2Tair流程,并将其封装成一个尺度的ETL模板,其名目和内容如下所示:

美团是怎样应用Spark处理赏罚大数据的?

source用于指定Hive表源数据,target指定方针Tair的库和表,这两个参数可以用于调治体系理会该ETL的上下流依靠相关,从而很利便地插手到现有的ETL出产系统中。

基于Spark的用户特性平台

在没有特性平台之前,各个数据发掘职员凭证各自项目标需求提取用户特性数据,首要是通过美团的ETL调治平台按月/天来完成数据的提取。

但从用户特性来看,着实会有许多的一再事变,差异的项目必要的用户特性着实有许多是一样的,为了镌汰冗余的提取事变,也为了节减计较资源,成立特性平台的需求随之降生,特性平台只必要聚合各个开拓职员已经提取的特性数据,并提供应其他人行使。特性平台首要行使Spark的批处理赏罚成果来完成数据的提取和聚合。

开拓职员提取特性首要照旧通过ETL来完成,有些数据行使Spark来处理赏罚,好比用户搜刮要害词的统计。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读