分享好友 最新动态首页 最新动态分类 切换频道
改版网站会影响百度/刷关键词的平台
2024-12-26 04:38


2、数据流


改版网站会影响百度/刷关键词的平台

    上图介绍了流数据的注入以及数据分析的过程,如下




    表可以设置为列表或行表,列表和行表都可以分区,同时行表也可以replicated到每个server。不管行表还是列表,数据都是放到内存中,且集群维护一个或多个副本。

    行表存储的内存成本更高,但适合OLTP型的查找,更新,且可以建立索引加速查找。

    列表存储的内存成本较低,因为可以压缩;且列表扩展了Spark的列存,为了支持在列表上执行的update操作。

    

数据写入列表的过程如下

1、先到达delta row buffer(行存增量缓冲区),以便提高写入率,之后老化批量写入列表

2、行存增量缓冲区就是个行表,其与数据所在的列表具有相同的分区策略

3、行存增量缓冲区还有个好处:insert或update后有一条delete语句,那么这个数据会从合并队列中删除,这样做更高效

4、采用copy-on-write以保证数据一致性

5、当在列表上进行查询时,扩展了Spark Catalyst,以便可以合并delta row buffer中的数据



    Spark的应用程序是面向过程的DAG模型。为了简化SnappyData并与Spark保持一致的编程模型,它隐藏了GemFire的API并对DataFrame和Spark SQL做了扩展以便支持列存的更新、SQL语句增强等功能。

    SnappyData扩展Spark SQL,支持Spark SQL同时支持标准SQL。且某些DDL的功能更加丰富,例如下面是一个创建表的语句

    


    可以看到,SD中可以创建行表也可以创建列表;可以指定分区键,默认为replicated;且列表上可以指定与母表相同的分区键,这样可以在join时使得数据本地化;也可以指定内存内的副本数以及持久化的方式等。



1、流处理,flink或storm + KV存储的架构,不太能适合需求的变化,即一个job对应一个特定的需求

2、流处理,当展示维度非常多,即keyBy的数量很多时,用flink实现比较困难

3、流处理,如果需要union大量的历史数据时,flink中的数据初始化时间过长,且当流+表的数据过大时,实现也比较困难。


    Snappydata扩展了Spark Streaming,可以创建stream table,批量更新数据,以支持复杂的、多维度的、关联大量的历史数据的实时OLAP查询。

    当然,数据的实时注入不一定非要用Spark Streaming完成,因为很多时候我们要对流数据做些预处理,简单的比如ETL,或者过滤甚至状态维护等,用storm或者flink来完成预处理的工作是不错的选择。且表的设计不一定要stream table,普通的列表也可以。

    这样做的数据也是实时的,且用SnappyData在列表上进行的OLAP查询(多维度、涉及历史数据、复杂的),直接可以用SQL既可以满足多种不同的需求了。

    某种程度上讲,用SD做流处理,又多了一种选择,它适合的需求是那种需求变化多、实时性强、需要关联历史数据做聚合、查询或聚合维度较多等复杂度较高的SQL,例如下面的一个OLAP SQL的事例


    

    上面的SQL逻辑为:统计当天每分钟的分钟订单量以及全天累计订单量。


    上述的SQL用Flink SQL也可以实现,如果用Flink DataStream实现的话,就要设置一个1分钟的tumbling event time window,window内汇总订单量,且维护一个ValueState,保存累计订单值。

    如果用Flink程序实现,那么你需要写一个DataStream程序,或者Flink SQL程序,复杂度都高于纯SQL,最关键的还是那个job写完后不太能适应需求的变化。

    假如你需要看每个城市、每个地区、每个商圈、每个组织、每个用户维度的量呢?那么你的key的数量会很多的,且不能适应某两个的维度组合的数据查看。

    用druid或opentsdb,那么你的维度不能太多,且数据没法变更。





    SnappyData由3类不同的角色成员组成了一个peer to peer的集群网络

1、Locator:提供发现服务,当集群新增成员时,会通知其他成员。通常为了HA,会有多于1个Locator同时存在。JDBC连接SnappyData时也是指定Locator的url进行连接。

2、Lead Node:相当于Spark的driver角色,维护着每个task的SparkContext。Lead通常是一主多备,primary角色负责路由数据到不同的数据server中。

3、Data Server:存储数据,同时负责executor的角色。有些查询可以直接路由到data server,复杂的SQL需要由lead路由到对应的data server上执行。



    跟TiDB类似,SnappyData也将sql请求分为低延迟的OLTP类SQL以及高延迟的OLAP类SQL。但是与之不同的是,OLTP类的操作直接绕开了Spark的调度机制,直接操作数据;而OLAP类的SQL则通过Spark的fair调度机制完成。

    这样的好处是使得SnappyData可以同时处理2类不同的请求,而不用优先执行OLTP,也不用被迫OLAP的SQL等待了。这对于OLAP型的延迟有很大帮助。



    由于表是存于内存的,因此状态天然就是共享的,其数据可以供多个连接共享。同时每个job的执行于data是相互独立的,达到了解耦的效果。




    P2P的网络,保存了lead以及data server的元数据信息,当有任何机器失败时,P2P网络总能第一时间感知到变化。协调器负责成员之间的数据同步问题。当失败发生时,很容易感知到异常。

    对于lead的HA,通常需要多个lead,只有1个primary并多个secondary。

    对于executor的HA,也和lead的选主机制一样,允许spark重新部署job。



    SnappyData支持读提交以及可重复读的事务隔离级别,当通过JDBC连接时就可以指定。当进行更新操作时,通常是由第一个接收到写任务的member负责协调,当写发生时,会对每个member的数据上进行写锁。这里有个假设就是当不能获得写锁或者写冲突时,会返回给调用者。




    当用户设计表的时候,往往需要考虑业务通常的访问方式,比如多表join时,join键是什么。假如一个订单表,经常需要和维度表进行join,那么join的条件通常是类似于主外键的关系,所以在设计时,我们就要将订单表的分区键,与维度表的分区键设计为一样的,且订单表要colocate with 维度表。这样设计的好处是当join时,就可以执行本地join了。



    SnappyData的内存管理器整合了Spark与GemFire。可以设置内存的使用阀值,其内存使用的监控情况由BlockManager进行管理。GemFire负责更细粒度的表的操作,当内存不足或到达预设的阀值时,会根据LRU算法将陈旧的数据evict到磁盘以释放内存。通过不断的对heap的监控,可以提前使用LRU算法清理数据,这样做使得Gemfire最大限度的防止OOM的发生。

    GemFire和Spark都可以使用offheap堆外内存,Gemfire中的表也可以配置使用相同的unsafe API。




1、100%兼容Spark,包括Spark ML和Graph等。

2、数据格式:行存+列存,且都支持DML操作,数据可变。

3、支持SQL:支持Spark SQL以及扩展了标准SQL,可以在行存上建索引、约束等,并在列存上分区以及colocate主表。

4、扩展流处理:通过SQL便可对流数据尽心并行处理。

5、NoSQL数据库:可以把任何Spark支持的格式存储在SnappyData中,就当做一个可以执行SQL的数据库一样。

6、数据可变性:SnappyData中支持DML语句,因此存储其中的数据是可变的。同时由于其存储与计算与一身,减少了数据传输提高了性能。

7、行表支持索引:索引只允许创建在行表中,并根据CBO决定是否使用索引来进行优化。

8、colocation:为了使得计算时数据本地化并减少shuffle操作,SnappyData允许在表上分区,并指定与本表的分区规则一致的父表。这样在进行表与父表基关联键相同的join时,可以使得数据本地化并减少shuffle,提高性能。

9、高可用与容错:数据member是个P2P网络,因此可以快速检测到失败并对应用程序的请求提供HA保障。

10、数据恢复:默认情况下,表不仅保存在内存中,也会保存到磁盘。因此一个server的失败,其数据并不会丢失。

11、SDE方法:商业版中支持,对超大规模的历史数据进行聚合,可以做到采样分析,以较低的延迟提供近似准确的结果。


SnappyData: A Hybrid Transactional Analytical Store Built On Spark

SnappyData: Streaming, Transactions, and Interactive Analytics in a Unified Engine

最新文章
AI写作助手:让你的文章优秀起来!
ai写作助手:让你的文章优秀起来!在这个信息爆炸的时代,写作成为了我们工作和生活中不可或缺的一部分。然而,有时候我们可能会遇到困扰,不知道该AI写作助手更好地表达自己的思想,或者文章内容显得平淡乏味。幸运的是,现在有了AI写作助
AI写代码准确率高达80% 离自动生成程序还有多远?
日前,全球最大开源代码托管平台GitHub的CEO托马斯·多梅克(Thomas Dohmke)亲自演示了人工智能(AI)写代码。他现场仅花15分钟就制作完成了一个小游戏APP,并将其成功上线。AI在写代码上带来的便利得到了不少程序员的认可。谷歌工程师Aik
2024年旗舰手机怎么选?618选购攻略及超人气产品推荐
​​马上又到618,一年中数码产品促销最给力的一个电商节,或许你也准备把用了多年的旧手机扔掉,换一款新旗舰犒劳一下辛苦忙碌的自己。那么新旗舰手机怎么选呢?此文就与大家谈一谈这个问题,并推荐五款超人气旗舰手机:⭕️ 旗舰手机怎么
AI微短剧创作指南:从构思到剧本撰写全方位解析与实践
近年来随着人工智能技术的快速发展,在内容创作领域的应用日益广泛。国内首部全流程微短剧《补天》的成功发布,标志着技术在我国短视频创作领域的深入应用。本文将为您详细介绍微短剧的创作过程,从构思到剧本撰写全方位解析与实践。1. 主
1000以内的智能手机推荐 性价比才是王道
  现如今,手机已经渐渐的融入了我们的生活,不论走在哪里,我们都可以看到每个人手上拿着一部手机,忙碌的工作着。手机由于性能的不同在价位上存在着很大的差异,从几百元到五六千元,各个价格阶段都有数百款乃至数千款的手机。对于工薪
AI生成美女写真:掌握这几个神器,轻松创建你的AI女友!
ArtbreederArtbreeder是一款十分流行的AI生成艺术图片工具,允许用户通过合成和调整不同的”基因“来创造出独一无二的头像和风景图。其最大的优势在于用户可以通过简单的滑块调节各种效果,包括肤色、发型、表情等,适合那些喜欢尝试和调整
1.88亿元,zycgr再次采购大批仪器设备
采购项目需求概况预算金额/万元采购时间定制式自动化高通量药物筛选平台拟购置药物筛选平台,实现自动化的高通量药物筛选(HTS),主要包括:1、通过自动化管理系统将多台不同功能、不同品牌的实验仪器整合起来,自动化的完成复杂实验任务
2023玩家最多的手游有哪些 人气最高的手游游戏排行榜
2023玩家最多的手游有哪些?这里为大家提供人气最高的手游游戏排行榜!此外盒子里还包含1000余款热门手游公益服任选,国内手游领跑者,想要尝试其他类型游戏的朋友也可以进入盒子搜索对应游戏名进行体验哦,咪噜游戏平台:H5手游、APP手游、
2024年新奥开奖结果,新式数据解释设想_知晓版19.885
标题:2024年新奥开奖结果,新式数据解释设想_知晓版19.885===  在2024年,新奥彩票行业经历了一场技术革新,不仅奖项设置更加多元和丰富,而且对于开奖结果的数据统计和解释也更加详尽和专业。因此,本文旨在为彩民提供一个全面的视角,
AI绘画在线生成器免费版:让你轻松释放创造力
AI绘画在线生成器是一款强大的工具,它利用人工智能技术为用户提供免费的绘画服务,大大减轻了艺术创作的难度。本文将介绍AI绘画在线生成器的使用方法及其优势,帮助你轻松释放创造力。一、AI绘画在线生成器的访问入口AI绘画在线生成器的访
相关文章
推荐文章
发表评论
0评