速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

45 倍加速 Spark 的处理效率?!

  • 2016-04-12
  • 本文字数:2504 字

    阅读完需:约 8 分钟

Spark 代表着下一代大数据处理技术,并且,借着开源算法和计算节点集群分布式处理,Spark 和 Hadoop 在执行的方式和速度已经远远的超过传统单节点的技术架构。但 Spark 利用内存进行数据处理,这让 Spark 的处理速度超过基于磁盘的 Hadoop 100x 倍。

但 Spark 和内存数据库 Redis 结合后可显著的提高 Spark 运行任务的性能,这源于 Redis 优秀的数据结构和执行过程,从而减小数据处理的复杂性和开销。Spark 通过一个 Redis 连接器可以访问 Redis 的数据和 API,加速 Spark 处理数据。

Spark 和 Redis 结合使用到底有多大的性能提升呢?结合这两者来处理时序数据时可以提高 46 倍以上——而不是提高百分之四十五。

为什么这些数据处理速度的提升是很重要的呢?现在,越来越多的公司期望在交易完成的同时完成对应的数据分析。公司的决策也需要自动化,而这些需要数据分析能够实时的进行。Spark 是一个用的较多的数据处理框架,但它不能做到百分之百实时,要想做到实时处理 Spark 还有很大一步工作需要做

图 1

Spark RDD

Spark 采用弹性分布式数据集(RDD),可将数据存在易变的内存中或持久化到磁盘上。 RDD 具有不可变化性,分布式存储在 Spark 集群的各节点,RDD 经过 tansform 操作后创建出一个新的 RDD。RDD 是 Spark 中数据集的一种重要抽象,具有良好的容错性、高效的迭代处理。

Redis

Redis 天生为高性能设计,通过良好的数据存储结构能达到亚毫秒级的延迟。Redis 的数据存储结构不仅仅提高内存的利用和减小应用的复杂性,也降低了网络负载、带宽消耗和处理时间。Redis 数据结构包括字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets), bitmaps, hyperloglogs 和 地理空间(geospatial)索引半径查询。

下面来展示 Redis 的数据结构如何来简化应用的处理时间和复杂度。这里用有序集合来举例,一个以评分(score)大小排序的元素集合。

图 2

Redis 能存储多种数据类型,并自动的以评分(score)排序。常见的例子有,按价格排序的商品,以阅读数排序的文章名,股票价格时序数据,带时间戳的传感器读数。
有序集合依赖 Redis 优秀的内建操作可以实现范围查询、求交集,可以非常快地(O(log(N)))完成添加,删除和更新元素的操作。Redis 内建函数不仅减少代码开发,在内存中执行也减小了网络延时和带宽消耗,可达到亚毫秒级的吞吐延迟。特别地,对时序数据集合来讲,有序集合数据结构比使用内存键值对或使用磁盘的数据库,能给数据分析带来数量级上的性能提升。

Spark-Redis connector

为了提高 Spark 数据分析的能力,Redis 团队开发了一个 Spark-Redis connector ,它使得 Spark 可以直接使用 Redis 作为数据源,顺理成章的 Spark 也能使用 Redis 的各数据结构,进而显著的提升 Spark 分析数据的速度。

图 3

为了展示 Spark 结合 Redis 所产生的效果,Redis 团队拿时序数据集合做基准测试,测试了 Spark 在不同情况下执行时间范围查询:Spark 使用堆外内存;Spark 使用 Tachyon 作为堆外缓存;Spark 使用 HDFS 存储;Spark 结合 Redis 使用。

Redis 团队改进了 Cloudera 的 Spark 分析时序数据的包,采用 Redis 有序集合数据结构加速时序数据分析,并且实现 Spark 访问 Redis 各类数据结构的接口。此 Spark-Redis 时序开发包主要做了两件事:

  1. 它让 Redis 节点与 Spark 集群的节点自动匹配,确保每个 Spark 节点都使用本地 Redis 节点,这样可以明显的优化延迟时间;
  2. 集成 Spark DataFrame 和 Spark 读取数据源,使得 Spark SQL 查询可自动转化,并能借助 Redis 能有效的恢复数据。

换句话说,使用 Spark-Redis 时序开发包意味着用户无需担心 Spark 和 Redis 两者如何使用。用户使用 Spark SQL 进行数据分析可以获得极大的查询性能提升。

基准测试

基准测试的时序数据集是跨度 32 年的 1024 个股票交易市场按天随机生成的数据。每个股票交易所都有有序数据集,以日期和元素属性(开盘价、最高价、最低价、收盘价等)排序,在 Redis 中以有序数据结构存储,采用 Spark 进行数据分析,描述如图 4.

图 4

在上述列子中,就有序集合 AAPL 来看,有序数据集合以天为评分(score,以蓝色表示),每天相关的值为一行(Member,以灰色表示)。在 Redis 中,只要执行一个 ZRANGEBYSCORE 操作就可以获取一个指定时间范围内的所有股票数据,并且 Redis 执行此查询要比其他 Key/Value 数据库快 100 倍。
从图 x 可以看到,横向比较各种情况的基准测试,Spark 结合 Redis 执行时间片的查询速度比 Spark 使用 HDFS 快 135 倍、比 Spark 使用堆内内存或 Spark 使用 Tachyon 作为堆外内存要快 45 倍。

图 5

Spark-Redis 其它应用

按照“ Getting Started with Spark and Redis ”指南,你可以一步步安装 Spark 集群和使用 Spark-Redis 包。它提供一个简单的 wordcount 的例子展示如何使用 Spark 结合 Redis。待你熟练使用后可以自己进一步挖掘、优化其他的 Redis 数据结构。
Redis 的有序集合数据结构很适合时序数据集合,而 Redis 其他数据结构(比如,列表(lists), 集合(sets)和 地理空间(geospatial)索引半径查询)也能进一步丰富 Spark 的数据分析。当使用 Spark 抽取地理空间信息来获取新产品的人群偏好和邻近中心的位置,可结合 Redis 的地理空间(geospatial)索引半径查询来优化。

Spark 支持一系列的数据分析,包括 SQL、机器学习、图计算和流式数据。Spark 本身的内存数据处理能力有一定的限制,而借着 Redis 可以让 Spark 更快的做数据分析。其实 Spark 的 DataFrame 和 Datasets 已经在做类似的优化,先把数据进行结构化放在内存里进行计算,并且 Datasets 可以省掉序列化和反序列化的消耗。结合 Spark 和 Redis,借助 Redis 的共享分布式内存数据存储机制,可以处理数百万个记录乃至上亿的记录

时序数据的分析仅仅是一个开始,更多的性能优化可以参见: Spark-Redis

作者介绍

侠天,专注于大数据、机器学习和数学相关的内容,并有个人公众号:bigdata_ny 分享相关技术文章。 - - - - - -

感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-04-12 17:316699
用户头像

发布了 43 篇内容, 共 28.7 次阅读, 收获喜欢 7 次。

关注

评论

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

课程实录 | 借助 F5 NGINX 交付极致用户体验(下)

NGINX开源社区

WebP nginx 开源版 HTTP/2

深度解读GaussDB逻辑解码技术原理

不在线第一只蜗牛

数据库 oracle

语音识别模型

霍格沃兹测试开发学社

提升自动化测试覆盖率的有效策略

爱吃小舅的鱼

自动化测试

提升用户反馈响应效率的实用技巧

爱吃小舅的鱼

用户反馈

Vector 增加 GreptimeDB 日志写入支持,连接数十种数据源

Greptime 格睿科技

数据库 vector 集成

看低代码开发如何通过几步加速融入产业进程

快乐非自愿限量之名

低代码

Gamma是什么意思?5款可替代Gamma的ppt软件推荐!

职场工具箱

人工智能 PPT 办公软件 AIGC AI生成PPT

mysql innodb_lock_wait_timeout修改

百度搜索:蓝易云

kafka启动命令

百度搜索:蓝易云

测试外包服务 | 从人员外包到测试工具、测试平台,提供全方位的测试解决方案~

测吧(北京)科技有限公司

测试

1024程序员节:合合信息“百宝箱”开启智能文档处理新纪元

颜淡慕潇

智能文档图像解析技术 textlin acge

质量保证策略缺失的影响及应对方法

爱吃小舅的鱼

质量保证策略

ICT“传火者”,点亮新安湖小学的数智之光

脑极体

AI

BOE(京东方)首度全面解读ADS Pro液晶显示技术众多“真像” 倡导以创新推动产业高价值增长

爱极客侠

不当的IT资源管理对客户满意度的影响

爱吃小舅的鱼

IT资源管理

crossover破解版Mac下载教程,crossover苹果电脑无限试用免费激活码分享

阿拉灯神丁

软件包 crossover mac 破解版 CrossOver 24虚拟机

借助ETLCloud工具,轻松同步Doris数据至Inceptor数据库

RestCloud

数据库 Doris ETL 数据集成 lnceptor

Java(day16):do-while循环语句

百度搜索:蓝易云

专业的技术、卓越的服务,为企业提供一体化测试服务,赋能企业发展创新

测吧(北京)科技有限公司

测试

系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理

百度搜索:蓝易云

GitHub Star 数量前 5 的开源应用程序生成器

NocoBase

GitHub 开源 低代码 无代码 应用程序

代码质量 vs. 紧急项目期限,如何平衡?

爱吃小舅的鱼

代码质量

【开源鸿蒙】OpenHarmony 5.0轻量系统最小开发环境搭建

码匠许师傅

OpenHarmony risc-v Hi3861

工厂学习系统(源码+文档+部署+讲解)

深圳亥时科技

研发效能度量核心三问:看什么、怎么看、怎么说服团队

思码逸研发效能

研发效能 绩效管理 软件研发 研发效能管理 思码逸

阿里巴巴1688商品搜索API返回值的关键解析

代码忍者

API 接口 API 协议 pinduoduo API

淘宝商品类目API的获取与应用探索

科普小能手

API 接口 API 测试 淘宝API接口 淘宝数据采集 淘宝评论API

香港 Web3 宣言两周年专访:传统企业转型 Web3 遇阻,香港虚拟资产之路如何走得更远?

TechubNews

高可用负载均衡实践

俞凡

架构

有数还要有术,数据洞察助力研发效能提升

思码逸研发效能

DevOps 研发效能 敏捷研发 研发效能管理 思码逸

45倍加速Spark的处理效率?!_语言 & 开发_侠天_InfoQ精选文章