搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
菜鸟追梦旅行
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
python控制windows窗口,python 控制桌面程序_python windows窗口程序
2
为何那么多南京邮电大学的毕业生选择了IT人力外包驻场_为什么南京的开发岗位都是外包的
3
【语义分割】12个主流算法架构介绍、数据集推荐、总结、挑战和未来发展_语义分割结构
4
基于FPGA的计算器(含源码)_基于fpga的多功能计算器的设计
5
『C语言入门』C语言数组详解_c语言 数组 内存
6
FlinkCDC pipeline模式 mysql-to-paimon.yaml
7
paddleocr:ERROR: Could not build wheels for lanms-neo, which is required to install pyproject
8
梯度提升(Gradient boosting)和GBDT
9
SpringBoot(整合阿里数据源,sql监控,整合mybatis以及案例)_yml配置阿里数据库连接
10
www.harmonyos.com,品牌域名:华为收购Harmonyos.com,“神话级”域名即将登场
当前位置:
article
> 正文
Redis让Spark数据分析速度提升45倍(留作机器学习使用)_spark和redis
作者:菜鸟追梦旅行 | 2024-06-16 16:49:17
赞
踩
spark和redis
https://redislabs.com/solutions/spark-and-redis
一些内存数据结构比其他数据结构来得更高效;如果充分利用Redis,Spark运行起来速度更快。
Apache Spark已逐渐俨然成为下一代大数据处理工具的典范。通过借鉴开源算法,并将处理任务分布到计算节点集群上,无论在它们在单一平台上所能执行的数据分析类型方面,还是在执行这些任务的速度方面,Spark和Hadoop这一代框架都轻松胜过传统框架。Spark利用内存来处理数据,因而速度比基于磁盘的Hadoop大幅加快(快100倍)。
但是如果得到一点帮助,Spark可以运行得还要快。如果结合Spark和Redis(流行的内存数据结构存储技术),你可以再次大幅提升处理分析任务的性能。这归功于Redis经过优化的数据结构,以及它在执行操作时,能够尽量降低复杂性和开销。通过借助连接件访问Redis数据结构和API,Spark可以进一步加快速度。
提速幅度有多大?如果Redis和Spark结合使用,结果证明,处理数据(以便分析下面描述的时间序列数据)的速度比Spark单单使用进程内存或堆外缓存来存储数据要快45倍――不是快45%,而是快整整45倍!
为什么这很重要?许多公司日益需要分析交易的速度与业务交易本身的速度一样快。越来越多的决策变得自动化,驱动这些决策所需的分析应该实时进行。Apache Spark是一种出色的通用数据处理框架;虽然它并非百分之百实时,还是往更及时地让数据发挥用途迈出了一大步。
Spark使用弹性分布式数据集(RDD),这些数据集可以存储在易失性内存中或HDFS之类的持久性存储系统中。RDD不会变化,分布在Spark集群的所有节点上,它们经转换化可以创建其他RDD。
Spark RDD
RDD是Spark中的重要抽象对象。它们代表了一种高效地将数据呈现给迭代进程的容错方法。由于处理工作在内存中进行,这表示相比使用HDFS和MapReduce,处理时间缩短了好几个数量级。
Redis是专门为高性能设计的。亚毫秒延迟得益于经过优化的数据结构,由于让操作可以在邻近数据存储的地方执行,提高了效率。这种数据结构不仅可以高效地利用内存、降低应用程序的复杂性,还降低了网络开销、带宽消耗量和处理时间。Redis数据结构包括字符串、集合、有序集合、哈希、位图、hyperloglog和地理空间索引。开发人员可以像使用乐高积木那样使用Redis数据结构――它们就是提供复杂功能的简单管道。
为了直观地表明这种数据结构如何简化应用程序的处理时间和复杂性,我们不妨以有序集合(Sorted Set)数据结构为例。有序集合基本上是一组按分数排序的成员。
Redis有序集合
你可以将多种类型的数据存储在这里,它们自动由分数来排序。存储在有序集合中的常见数据类型包括:物品(按价格)、商品名称(按数量)、股价等时间序列数据,以及时间戳等传感器读数。
有序集合的魅力在于Redis的内置操作,让范围查询、多个有序集合交叉、按成员等级和分数检索及更多事务可以简单地执行,具有无与伦比的速度,还可以大规模执行。内置操作不仅节省了需要编写的代码,内存中执行操作还缩短了网络延迟、节省了带宽,因而能够实现亚毫秒延迟的高吞吐量。如果将有序集合用于分析时间序列数据,相比其他内存键/值存储系统或基于磁盘的数据库,通常可以将性能提升好几个数量级。
Redis团队的目标是提升Spark的分析功能,为此开发了Spark-Redis连接件。这个程序包让Spark得以使用Redis作为其数据源之一。该连接件将Redis的数据结构暴露在Spark面前,可以针对所有类型的分析大幅提升性能。
Spark Redis连接件
为了展示给Spark带来的好处,Redis团队决定在几种不同的场景下执行时间片(范围)查询,以此横向比较Spark中的时间序列分析。这几种场景包括:Spark在堆内内存中存储所有数据,Spark使用Tachyon作为堆外缓存,Spark使用HDFS,以及结合使用Spark和Redis。
Redis团队使用Cloudera的Spark时间序列程序包,构建了一个Spark-Redis时间序列程序包,使用Redis有序集合来加快时间序列分析。除了让Spark可以访问Redis的所有数据结构外,该程序包另外做两件事:
自动确保Redis节点与Spark集群一致,从而确保每个Spark节点使用本地Redis数据,因而优化延迟。
与Spark数据帧和数据源API整合起来,以便自动将Spark SQL查询转换成对Redis中的数据来说最高效的那种检索机制。
简单地说,这意味着用户不必担心Spark和Redis之间的操作一致性,可以继续使用Spark SQL来分析,同时大大提升了查询性能。
用于这番横向比较的时间序列数据包括:随机生成的金融数据,每天1024支股票,时间范围是32年。每只股票由各自的有序集合来表示,分数是日期,数据成员包括开盘价、最高价、最低价、收盘价、成交量以及调整后的收盘价。下图描述了用于Spark分析的Redis有序集合中的数据表示:
Spark Redis时间序列
在上述例子中,就有序集合AAPL而言,有表示每天(1989-01-01)的分数,还有全天中表示为一个相关行的多个值。只要在Redis中使用一个简单的ZRANGEBYSCORE命令,就可以执行这一操作:获取某个时间片的所有值,因而获得指定的日期范围内的所有股价。Redis执行这种类型的查询的速度比其他键/值存储系统快100倍。
这番横向比较证实了性能提升。结果发现,Spark使用Redis执行时间片查询的速度比Spark使用HDFS快135倍,比Spark使用堆内(进程)内存或Spark使用Tachyon作为堆外缓存快45倍。下图显示了针对不同场景所比较的平均执行时间:
Spark Redis横向比较
如果你想亲自尝试一下,不妨遵照这篇可下载的逐步指南:《Spark和Redis使用入门》(https://redislabs.com/solutions/spark-and-redis)。该指南将逐步引导你安装典型的Spark集群和Spark-Redis程序包。它还用一个简单的单词计数例子,表明了可以如何结合使用Spark和Redis。你在试用过Spark和Spark-Redis程序包后,可以进一步探究利用其他Redis数据结构的更多场景。
虽然有序集合很适合时间序列数据,但Redis的其他数据结构(比如集合、列表和地理空间索引)可以进一步丰富Spark分析。设想一下:一个Spark进程试图根据人群偏好以及邻近市中心,获取在哪个地区发布新产品效果最好的信息。现在设想一下,内置分析自带的数据结构(比如地理空间索引和集合)可以大大加快这个进程。Spark-Redis这对组合拥有无限的应用前景。
Spark支持一系列广泛的分析,包括SQL、机器学习、图形计算和Spark Streaming。使用Spark的内存处理功能只能让你达到一定的规模。然而有了Redis后,你可以更进一步:不仅可以通过利用Redis的数据结构来提升性能,还可以更轻松自如地扩展Spark,即通过充分利用Redis提供的共享分布式内存数据存储机制,处理数百万个记录,乃至数十亿个记录。
时间序列这个例子只是开了个头。将Redis数据结构用于机器学习和图形分析同样有望为这些工作负载带来执行时间大幅缩短的好处。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/727447
推荐阅读
article
最新
分布式
锁(
数据库
、
ZK
、
Redis
)拍了拍你(2)
,
GitHub
标星1w
的
Java
架构师必备技能...
根据这个字段判断当前时间是否大于存储
的
失效时间
,
若是大于则表明
,
该方法
的
索索已经可以被释放。最新
分布式
锁(
数据库
、
ZK
、
...
赞
踩
article
Redis
:从应用到
底层
,
一文帮你搞定
,
2024年最新
GitHub
标星1w的
Java
架构
师必备技能_...
切莫死记硬背
,
小心面试官直接让你出门右拐1000道互联网
Java
面试题:_最新
架构
技术
分享
最新
架构
技术
分享
...
赞
踩
article
分布式
锁用
Redis
还是 Zookeeper...
点击上方Java后端,选择设为星标优质文章,及时送达为什么用
分布式
锁?在讨论这个问题之前,我们先来看一个业务场景:系统A...
赞
踩
article
SpringBootWeb
篇-深入了解
Redis
五种
类型
命令
与如何在
Java
中操作 Red...
redis.windows.conf:配置文件,用来配置
Redis
服务器的各种参数和选项。redis-server....
赞
踩
article
Spark
编程实验五:
Spark
Structured
Streaming
编程_
pyspark
st...
通过实验掌握
Structured
Streaming
的基本编程方法;掌握日志分析的常规操作,包括拆分日志方法和分析场景。...
赞
踩
article
【
Spark
Streaming
】(四)基于
Spark
Structured
Streaming
...
文章目录一、前言二、
Spark
Streaming
vs
Structured
Streaming
2.1
Spark
S...
赞
踩
article
【PySpark】
Structured
Streaming
:用
DataFrame
API
进行实时数据...
Spark 中的流处理库 Spark
Streaming
。它将无边界的流数据抽象成 DStream,按特定的时间间隔,把...
赞
踩
article
【
Spark
Streaming
】(四)基于
Spark
Structured
Streaming
...
总体来说,
Structured
Streaming
有更简洁的API、更完善的流功能、更适用于流处理。而
spark
st...
赞
踩
article
Structured
Streaming
入门(整合、
数据分析
)_请以
生产
主题
名为自己名字拼音的消息...
针对任何流式应用
处理
框架(Storm、Spark
Streaming
、
Structured
Streaming
和Flink等...
赞
踩
article
spark
--
Structured
Streaming
实战-★★★★_
spark
structure...
Structured
Streaming
实战-★★★★Source-数据源Operation-操作OutPut-输出Ou...
赞
踩
article
消息中间件
(
RocketMQ
、
RabbitMQ
、
ActiveMQ
、
Redis
、
kafka
、ZeroM...
面向消息的系统(
消息中间件
)是在分布式系统中完成消息的发送和接收的基础软件。
消息中间件
也可以称消息队列,是指用高效可靠的...
赞
踩
article
【项目实战】主流的
分布式
锁
服务
解决方案介绍(
Zookeeper
,
Curator
,
Redis
,
Lock
...
Zookeeper
分布式
锁
服务
是一种基于
Zookeeper
的
分布式
锁
实现
。
Zookeeper
是一个
分布式
协调
服务
,提供分...
赞
踩
article
Redis
提升篇之
Redis
son_
redis
redis
son...
Redis
son 中,针对没有设置加锁超时时间的情况下,会设置一个默认的 30 秒,但是针对默认的 30 秒时间,若再到...
赞
踩
article
redis
:
redis
sion实现
分布式
锁...
用spring boot 添加。_
redis
sion
redis
sion 一、
redis
sion是...
赞
踩
article
运维架构服务监控
Open
-
Falcon
介绍、安装、监控
MySQL
、
Redis
、
MongoDB
、Ra...
agent 用于采集机器负载监控指标,比如 cpu.idle、load.1min、disk.io.util 等等,每隔 ...
赞
踩
article
spark
sql
总结...
一.概述1.前世今生大量数据需要处理 ➡️ MapReduce出现
sql
on mr ➡️ Hive mr效率太低 ➡...
赞
踩
article
《
Spark
编程
基础(
Scala
版)》第 6 章
Spark
SQL
实验
5
Spark
SQ...
《
Spark
编程
基础(
Scala
版)第 1 页》第 6 章
Spark
SQL
实验
5
Spark
SQL
编程
初...
赞
踩
article
大
数据
Spark
:从入门到实战(附
视频教程
&项目源码)_
bella
.
spark
...
本文是由菜鸟窝出品的12天
大
数据
特训营课程摘录出来的,关于
大
数据
spark
的入门到实战视频可以戳此查看第三章:https...
赞
踩
article
ubuntu
系统一键搭建
hadoop
+
hdfs
+
spark
+
yarn
_
在
ubuntu
上搭建
spark
...
先上自己写
的
两个脚本吧https://github.com/yfyvan/bigdata
_
deploy在介绍脚本用法之前...
赞
踩
article
【最全最详细,亲测可用】
服务器
上部署
java
环境(
jdk
+
maven
+
MySQL
+
Redis
+Nac...
此外,
MySQL
的新版本可能使用不同的默认认证插件(如caching_sha2_password),因此在不同版本的My...
赞
踩
相关标签
java
面试
学习
redis
github
分布式
编程语言
数据库
缓存
java-ee
spark
大数据
syslog
数据分析
big data
kafka
网络
中间件