11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

网易的 Spark 技术实践

  • 2014-04-11
  • 本文字数:2232 字

    阅读完需:约 7 分钟

网易的实时计算需求

对于大多数的大数据而言,实时性是其所应具备的重要属性,信息的到达和获取应满足实时性的要求,而信息的价值需在其到达那刻展现才能利益最大化,例如电商网站,网站推荐系统期望能实时根据顾客的点击行为分析其购买意愿,做到精准营销。

实时计算指针对只读(Read Only)数据进行即时数据的获取和计算,也可以成为在线计算,在线计算的实时级别分为三类:Real-Time(msec/sec 级)、Near Real-Time(min/hours) 以及 Batch(days)。 在批处理方面,MapReduce(MR) 已经证明其为最有效的工具,随着 MR 的开源实现 Hadoop 为代表的大数据分析技术的普及,其在大处理方面的能力已经得到认可,但是它更适用于对集群上大数据的批处理,并不适用于实时处理大规模流数据。为了满足实时性的要求,基于数据仓库所构建的流计算和实时性计算框架也不断涌现,相关围绕 MR 的实时性优化技术也蓬勃发展,比较代表性的系统 Google Dremel、Twitter Storm 以及 Yahoo S4 等。

大数据的应用类型主要分为:批处理(Batch Processing)和流处理(Stream Processing)两方面。批处理是先存储后处理(Store-Then-Process), 流处理是直接处理(Straight-Through-Processing), 为提高商业智能的反映时间,目前广泛所采取的大数据处理框架, 例如 MR 和 Dryad 所面向的主要是大规模数据分析,以批处理计算为主,其实时性需求得不到满足。常用的应用有在线推荐、网页点击分析、传感网络、交通分析以及金融中的高频交易,对实时分析处理(Real Time Analytic Processing, RTAP)的需求越来显著,网易公司作为国内最大的门户网站之一,实时性也是公司目前互联网产品所应具备的重要属性。

网易大数据 Spark 技术应用

Spark 技术代表未来数据处理的新方向,Spark 是 UC Berkeley AMP lab 开源的类 Hadoop MapReduce 的通用并行计算框架,Spark 基于 MapReduce 实现分布式计算,拥有 Hadoop MapReduce 具有的优点。不同于 MapReduce 的是,Job 中间输出和结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

在网易大数据平台中,数据存储在 HDFS 之后,提供 Hive 的数据仓库计算和查询,要提高数据处理的性能并达到实时级别,网易公司采用的是 Impala 和 Shark 结合的混合实时技术。Cloudera Impala 是基于 Hadoop 的实时检索引擎开源项目,其效率比 Hive 提高 3-90 倍,其本质是 Google Dremel 的模仿,但在 SQL 功能上青出于蓝胜于蓝。Shark 是基于 Spark 的 SQL 实现,Shark 可以比 Hive 快 40 倍(其论文所描述), 如果执行机器学习程序,可以快 25 倍,并完全和 Hive 兼容。

图 1 和图 2 分别测试的计算能力和实时查询性能经过初步测试,在网易的实时计算平台,在大数据实时查询系统中,Impala 在数据处理方面的速度可以相比 HIVE 达到 3 倍到 30 倍的加速比,Shark 可以相比 HIVE 达到 1.5 到 15 倍的加速比,相比较 Impala 和 Shark 引擎,通常 Impala 会比 Shark 快一倍,这里可能会引出思考,既然 Impala 实时性如此好,为何还需要 Shark 呢?

在设计大数据平台的时候,我们发现 Impala 性能不错,但是其对旧 Hive 的数据不兼容,因为目前的大数据应用中很多都是 Hive 的组织方式,而 Shark 可以完全兼容旧的数据,因此在目前的数据结构中必须采用混合的数据处理模式。Hive 和 Impala 会协同存在一段时间, Hive 主要为 Predefined Queries,并主要处理批处理相关作业,而 Impala 则处理交互的查询(AD-HOC Queries),使得大数据系统既支持 OLTP,也支持 OLAP, 以达到实时分析处理(Real Time Analytic Processing, RTAP)的水平。

图 1 网易大数据平台性能测试 (Count/Sum/Avg 操作)

图 2 网易大数据平台性能测试 (Join/Ad-hoc 查询操作)

总结

如果要评价 2012 到 2013 年度 IT 业界热词,非“大数据”一词莫属。ROI(Return On Investment)投资回报率已经演化为 Return On Information, 信息的回报率成为互联网公司的一个重要指标,如果所掌握的海量数据都是一堆“垃圾”,没有金矿去挖掘,那大数据也无从谈起,而提高 ROI 的一个重要属性就是实时性,提高数据的反应时间需要技术做支撑和保障,网易作为中国顶尖的互联网公司之一,在大数据方面也是最早的先行者,特别实时计算技术方面,公司很早就开始采用最新的技术来提供服务,例如 Impala 和 Shark 等,不难发现,网易的大数据系统可以灵活的选择计算实时引擎,总体上系统在实时处理方面的能力可以提升 2 到 15 倍,这对于提升公司的生产效率有显著成效,在后续的工作中期望可以进一步提升实时级别,目前只能做到秒级,能否达到毫秒级甚至微秒级别是将来的一个研发方向, 总之对于海量数据计算、实时性方面有强烈需求的公司应用落地 Spark 是很好的选择。

参考资料

[1] Storm Distributed and fault-tolerant real time computation

[2] Leonardo Neumeyer, Bruce Robbins, Anish Nair, Anand Kesari. S4: Distributed Stream Computing Platform. 2010 IEEE International Conference on Data Mining Workshops (ICDMW).

[3] Cloudera Impala https://github.com/cloudera/impala

Reynold S. Xin , Josh Rosen , et al. Shark: SQL and rich analytics at scale. SIGMOD Conference 2013 .


感谢包研对本文的策划。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-04-11 21:1019262

评论

发布
暂无评论
发现更多内容

SQL 笔记

越锋利

sql 课程

Java二叉树面试题总结,马哥linux视频教程百度云,GitHub重磅官宣

Java 程序员 后端

Java基础入门教程,尚硅谷和黑马深圳,Java中级面试含答案

Java 程序员 后端

Javaweb面试问题,java教程马士兵全集,设计思想解读开源框架

Java 程序员 后端

Java基础72问,极客时间数据结构与算法,原理解析

Java 程序员 后端

Java基础笔试题,mysql教程入门到精通,Java程序员

Java 程序员 后端

Java外包是如何转正华为的,2021最新网易Java面试题目

Java 程序员 后端

Java五年工作经验面试题,极客学院和黑马,深入linux内核架构面试

Java 程序员 后端

Java中级笔试题百度文库,java架构师直通车百度云,使用指南

Java 程序员 后端

Java中高级面试技术问题,mysql优化视频教程,Java全栈知识体系

Java 程序员 后端

Java入门基础,千锋教育java教程,深度剖析原理

Java 程序员 后端

架构实战营模块1课后作业

断水风春

架构实战营

Java基础知识梳理,java最新技术栈百度网盘,大厂面试必问

Java 程序员 后端

Java-SSM框架相关面试题整理,2021Java面试题知识点总结

Java 程序员 后端

Java从入门到精通百度云,java教学百度网盘,思维导图+源代码+笔记+项目

Java 程序员 后端

Java入门,spring框架教程,Java开发知识体系

Java 程序员 后端

Java基础72问:黑马程序员java教程,漫谈MySQL权限安全

Java 程序员 后端

Java400道面试题通关宝典助你进大厂,Java后端工程师需要掌握的知识

Java 程序员 后端

Java基础入门视频,kafka基础教程,最新Java开发面试解答

Java 程序员 后端

2021 Qcon 前端专场精彩回顾

程序员海军

大前端 可视化 vite Qcon

Java入门视频教程,尚学堂大数据全套教程百度云,Java多线程并发面试题

Java 程序员 后端

Prometheus 内置函数(四)

耳东@Erdong

Prometheus PromQL 10月月更

Java中级笔试题百度文库,牛客网java笔试题库,从底层开始带你了解并发编程

Java 程序员 后端

Java基础学习百度云,尚硅谷linux,深入linux内核架构面试

Java 程序员 后端

Java基础笔试题,rabbitmq教程go,netty框架工作原理

Java 程序员 后端

Java基础笔试题,尚硅谷和尚学堂大数据,彻底帮你搞懂

Java 程序员 后端

Javaweb框架面试题,尚学堂java全套资料百度云,附高频面试题合集

Java 程序员 后端

Java入门,java黑马程序员课后答案第二版第八章,如何成为杰出的程序员

Java 程序员 后端

Java基础教程百度云,java教程百度云下载,你不懂还不学?

Java 程序员 后端

Java基础知识梳理,渡一教育java百度云资源,帮你快速拿Offer

Java 程序员 后端

HTTPS面试常问全解析,黑马学习java,Java中高级工程师面试题及答案

Java 程序员 后端

网易的Spark技术实践_数据库_王健宗_InfoQ精选文章