免费下载!由 O’Reilly 出版的《NGINX 完全指南》中文版已正式上线 了解详情
写点什么

Redis Streams 与 Spark 的完美结合

  • 2019-10-24
  • 本文字数:1260 字

    阅读完需:约 4 分钟

Redis Streams与Spark的完美结合

最近,我有幸在 Spark +AI 峰会上发表了题目为“Redis + Structured Streaming:扩展您的持续应用的完美组合”的演讲。


我对这个主题的兴趣是由 Apache Spark 和 Redis 在过去几个月中引入的新功能引起的。根据我之前使用 Apache Spark 的经验,我很欣赏它在运行批处理时的优雅,并且它在 2.0 版本中引入 Structured Streaming 是在这个方向上的进一步发展。


与此同时,Redis 最近宣布了用于管理流数据的新数据结构,称为“Streams”。Redis Streams 提供了生产者和消费者之间的异步通信功能以及持久性、回顾性查询功能和类似于 Apache Kafka 的横向扩展选项。从本质上讲,Redis 通过 Streams 提供了一个轻便、快速、易于管理的流数据库,使数据工程师们受益良多。


此外,开发 Spark-Redis 库是为了使 Redis 可以作为弹性分布式数据集(RDD)使用。因为现在有了 Structured Streaming 和 Redis Streams,我们决定扩展 Spark-Redis 库将 Redis Streams 集成为 Apache Spark Structured Streaming 的数据源。



在上个月的演讲中,我演示了如何在 Redis Streams 中收集用户活动数据并将其下载到 Apache Spark 进行实时数据分析。我开发了一个小型的适合移动设备的 Node.js 应用程序,在这个程序中人们可以点击投票给他们最喜欢的狗来进行有趣的比赛。


这是一场艰苦的战斗,有几个观众甚至是黑客很有创意地攻击了我的应用程序。他们使用“页面检查”选项更改了 HTML 按钮名称试图弄乱应用的显示。但最终他们失败了,因为 Redis Streams,Apache Spark,Spark-Redis 库和我的代码都足够的强大,可以有效地应对这些攻击。



在我演讲期间和之后观众还询问了一些有趣的问题,例如:


1. 如果数据处理速度低于 Redis Streams 接收数据的速率,该如何扩展?


我的回答: 配置一个 Redis Streams 的消费者组,将每个 Spark 作业作为属于该组的一个消费者,这样每个作业都会获得一组独有的数据,将输出模式设置为“更新”非常重要,这样每个作业都不会覆盖其他作业的数据提交。


2. 如果我重新启动 Spark 作业,Redis Streams 中的数据会发生什么变化?


我的回答: Redis Streams 持久化数据。因此您的 Spark 作业不会遗漏任何数据,如果重新启动 Spark 作业,它将从之前停止的位置提取数据。


3. 我可以用 Python 开发我的 Spark 应用程序吗?(我的演示是用 Scala 编写的)


我的回答: 是的,你可以,请参阅 GitHub 上的 Spark-Redis 文档。


4. 我可以在云上部署 Redis Streams 吗?


我的回答: 是的,Streams 只是 Redis 中的另一个数据结构,从 5.0 版开始内置于 Redis 中,最快捷的方式是在https://redislabs.com/get-started上注册。


我在峰会上的主要收获是了解到人们对连续处理和数据流的兴趣日益浓厚。根据大家的需求,我们在 InfoQ 上发布了一篇关于此主题的更详细的文章,在其中提供了有关如何设置 Redis Streams 和 Apache Spark 以及使用 Spark-Redis 库进行连接的详细信息,大家也可以随时查看我演讲的完整视频。


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/vyxCKhDIB_y7nvxIcqGYkg


2019-10-24 10:10705

评论

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

软件测试 | 测试开发 | Pb协议的接口测试

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

测试

一键实现设备高稳定高安全管理——设备管理运维类

阿里云AIoT

分布式数据库 安全 监控 物联网 存储

源码学习之MyBatis的底层查询原理

京东科技开发者

Java sql 源码 mybatis mybatis源码

Python 测试开发实战进阶,技能对标阿里 P6+,挑战年薪 50W+!

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

测试

Hibernate 缓存与 MyBatis 缓存的理解以及比较

codeshero

Java hibernate 缓存 mybatis缓存 9月月更

IoT数据倾斜如何解决——实践类

阿里云AIoT

算法 流计算 物联网 数据处理 并行计算

软件测试 | 测试开发 | Python 自动化测试(三): pytest 参数化测试用例构建

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

测试

【开发者说】携住数智酒店,用原子化服务创造全新入住体验

HarmonyOS开发者

HarmonyOS

Java培训技术学习哪个前景不错

小谷哥

软件测试 | 测试开发 | Git 实战(三) | Github 必会高频基础命令与 IDE 的 Git 集成

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

测试

资源画像,看得见的容器资源优化助手

阿里巴巴云原生

阿里云 容器 云原生 ACK

Ohos-MPChart——支持多种图表绘制的组件

OpenHarmony开发者

OpenHarmony

UI 自动化测试应不应该投入?有没有前途?怎样做最明智?

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

测试

西安Java培训班哪家比较好

小谷哥

西安前端培训班学习哪家比较好

小谷哥

十分钟速成DevOps实践

华为云开发者联盟

后端 开发

武汉web前端开发培训机构学费多少

小谷哥

软件测试 | 测试开发 | Git实战(四)| Git分支管理实操,搞定在线合并和本地合并

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

测试

数字孪生实操——实践类

阿里云AIoT

物联网 数据采集 传感器 数字孪生

面向对象设计原则,历久弥新

有态度的马甲

软件测试 | 测试开发 | Python 自动化测试(四):数据驱动

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

测试

软件测试 | 测试开发 | Jenkins 踩坑 | job 创建、参数化、定时构建及时区偏差问题解决

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

测试

SBOM:缓解软件供应链风险的关键

SEAL安全

DevSecOps 软件供应链 SBOM 软件供应链安全

软件测试 | 测试开发 | Git实战(五)| 让工作更高效,搞定Git的分支管理

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

测试

大数据开发培训机构怎么选择

小谷哥

new Vue的时候到底做了什么

bb_xiaxia1998

Vue

软件测试 | 测试开发 | UI 自动化测试实战(二)| 测试数据的数据驱动

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

测试

软件测试 | 测试开发 | PageObject(PO)设计模式在 UI 自动化中的实践总结(以 QQ 邮箱登陆为例)

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

测试

国庆节,零代码帮你搞定假期美食菜单,体验赢定制好礼

华为云开发者联盟

人工智能 企业号九月金秋榜

软件测试 | 测试开发 | Junit5 架构、新特性及基本使用(常用注解与套件执行)

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

测试

小间距LED显示屏未来十大发展方向

Dylan

LED显示屏 led显示屏厂家 户内led显示屏

Redis Streams与Spark的完美结合_文化 & 方法_中间件小哥_InfoQ精选文章