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

京东实战案例:基于Alluxio优化大数据计算框架的容错性和灵活性

发布时间:2023-02-10 13:51:20 所属栏目:大数据 来源:
导读:  京东(JD)大数据平台是一个开放、安全、智能的平台,它提供了可视化管理和监控系统,可以方便、快捷地定位集群问题。目前,平台上拥有超过4万台服务器,每天处理超过100万个任务,管理的数据总量超过450PB,而且
  京东(JD)大数据平台是一个开放、安全、智能的平台,它提供了可视化管理和监控系统,可以方便、快捷地定位集群问题。目前,平台上拥有超过4万台服务器,每天处理超过100万个任务,管理的数据总量超过450PB,而且以每天超过800TB的规模增长。这些规模庞大的数据及其处理内容,帮助我们在丰富的场景下实现了诸多相关的智能应用。目前,OLAP已经广泛运用到了京东大数据平台各个业务线,每天提供的查询服务超过50万次,覆盖范围包括从商城APP、微信、手机QQ,到离线数据分析平台。
 
  常用链接
 
  Alluxio作为一款容错的可插拔的优化组件,应用于京东体系内诸多计算框架。我们利用Alluxio优秀的缓存能力为Ad Hoc和实时流计算框架提供良好的支撑,以降低集群对于网络吞吐的消耗,为统计业务报表以及为营销决策提供数据支撑。京东数名最优秀的研发工程师,根据业务场景和特点,基于京东大数据平台和Alluxio搭建了国内已知最大的Presto集群。我们实现了业界第一款Presto和Alluxio相结合的大数据量企业级交互式查询处理引擎,使Ad Hoc查询性能提升10倍以上。JDPresto on Alluxio目前已经在京东生产环境上线400台节点运行2年多,覆盖从商城APP到微信手机QQ,到离线数据分析平台,多快好省地帮助京东千万商家和10亿消费者提供更加精准的营销和用户体验。另外,在大数据平台的建设和维护过程中,京东的大数据工程师团队也为Alluxio开源社区做出了许多贡献。
 
  一、京东大数据平台的业务问题背景
 
  京东大数据平台拥有巨大的规模以满足京东不断增长的业务需求:
 
  是京东大数据平台的体系架构。我们的大数据平台是一个开放、安全、智能的平台。HDFS作为分布式存储系统是整个平台的基础,许多计算框架工作在Yarn上。Alluxio作为分布式缓存系统,在计算框架和HDFS之中就像一座桥梁隔离了计算框架和底层存储。

  本小节介绍JDPresto on Alluxio的使用案例。Alluxio作为容错可插拔的优化组件,应用于京东体系内诸多计算框架。利用Alluxio优秀的缓存能力提供对Ad Hoc和实时流计算原生的支撑,降低集群对于网络消耗的依赖。JDPresto on Alluxio已经在我们的生产环境上线400台节点运行2年了,带来了10倍平均性能提升。
 
  展示了在使用Alluxio前后,Presto worker读取数据方式的区别。如上图左边所示,在使用Alluxio之前,Prestoworker有大概率从远端datanode读取数据.由于网络延迟,这会消耗很多时间。而上图的右边则显示出在使用Alluxio之后,Presto worker可以从同一节点上的Alluxioworker读到缓存的数据,这能够避免或减少从HDFS的远程读取开销,从而提高访问速度。简言之,Alluxio为Presto带来了更多的本地性和与底层文件系统的隔离性,从而保障了查询性能。

  展示了我们修改后的JDPresto读split的逻辑。通常情况下,Presto从Alluxio读取数据,如果Alluxio发现没有数据,则从HDFS读取数据并缓存到Alluxio中,同时返回给Presto。这之后如果Presto再读取同样的数据,则会从Alluxio中读到缓存的数据,直接返回给Presto。当Alluxio服务不可用时,它可以直接访问HDFS。此外,我们还扩展了Alluxio,增强了Alluxio和HDFS之间的一致性验证。

  我们的性能对比测试使用的是JDPresto的client终端在两个Presto集群京东大数据,多次执行相同的SQL查询。左边,JDPresto直接访问HDFS,作为参照。右边为实验对象,JDPresto使用Alluxio作为分布式缓存。

  红色矩形圈起来的数字是当次SQL耗时。很明显,右边的比左边快。这是因为我们使用Alluxio缓存表格或分区文件。因此,在第一次访问后,Alluxio可以加速查询。图5是另一个视角,Presto的WebUI,我们可以和终端得到相同的结果,并且查询耗时从20秒降低到不到1秒,这是非常令人兴奋的结果!
 
  总结了本次测试的结果。本次测试一共执行了6次对比查询。绿线代表JDPresto,黄线代表JDPresto-on-Alluxio。X轴表示查询次数,Y轴表示查询时间,单位是秒。我们可以看到JDPresto-on-Alluxio可以在第一次读之后减少读取时间,相比JDPresto集群快很多。
 
  为了达到本节中的优化效果,我们开展大量工作,包括修改了Alluxio和JDPresto,以及开发一些测试工具。如图7,我们还围绕App-on-Yarn也进行了一些工作。同时,我们正在积极地调研和评估,把Alluxio应用在其它计算框架中。在应用Alluxio的过程中,我们理解到Alluxio作为分布式缓存未必适用于所有的应用场景。大数据平台架构师需要深入理解Alluxio的工作原理,并结合自己公司的业务特点,找到适合的应用场景。
 
 
 

(编辑:PHP编程网 - 金华站长网)

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