加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

如何基于日志,同步实现数据的一致性和实时抽取?

发布时间:2021-01-07 10:51:23 所属栏目:安全 来源:网络整理
导读:副标题#e# 《如何基于日志,同步实现数据的一致性和实时抽取?》要点: 本文介绍了如何基于日志,同步实现数据的一致性和实时抽取?,希望对您有用。如果有疑问,可以联系我们。 作者:王东 宜信技术研发中心架构师 目前就职于宜信技术研发中心,任架构师,负责

选用Spark的理由是很充分的:

  • Spark天然的支持各种异构存储系统;
  • 虽然Spark Stream比Storm延时稍差,但Spark有着更好的吞吐量和更好的计算性能;
  • Spark在支持并行计算方面有更强的灵活性;
  • Spark提供了一个技术栈内解决Sparking Job,Spark Streaming,Spark SQL的统一功能,便于后期开发;

这里补充说一下Swifts的作用:

  • Swifts的本质是读取kafka中的UMS数据,进行实时计算,将结果写入到kafka的另外一个topic.
  • 实时计算可以是很多种方式:比如过滤filter,projection(投影),lookup,流式join window aggregation,可以完成各种具有业务价值的流式实时计算.

Wormhole和Swifts对比如下:

落HDFS

通过Wormhole Wpark Streaming程序消费kafka的UMS,首先UMS log可以被保存到HDFS上.

kafka一般只保存若干天的信息,不会保存全部信息,而HDFS中可以保存所有的历史增删改的信息.这就使得很多事情变为可能:

  • 通过重放HDFS中的日志,我们能够还原任意时间的历史快照.
  • 可以做拉链表,还原每一条记录的历史信息,便于分析;
  • 当程序出现错误是,可以通过回灌(backfill),重新消费消息,重新形成新的快照.

可以说HDFS中的日志是很多的事情基础.

介于Spark原生对parquet支持的很好,Spark SQL能够对Parquet提供很好的查询.UMS落地到HDFS上是保存到Parquet文件中的.Parquet的内容是所有log的增删改信息以及_ums_id_,_ums_ts_都存下来.

Wormhole spark streaming根据namespace 将数据分布存储到不同的目录中,即不同的表和版本放在不同目录中.

由于每次写的Parquet都是小文件,大家知道HDFS对于小文件性能并不好,因此另外还有一个job,每天定时将这些的Parquet文件进行合并成大文件.

每个Parquet文件目录都带有文件数据的起始时间和结束时间.这样在回灌数据时,可以根据选取的时间范围来决定需要读取哪些Parquet文件,不必读取全部数据.

插入或更新数据的幂等性

常常我们遇到的需求是,将数据经过加工落地到数据库或HBase中.那么这里涉及到的一个问题就是,什么样的数据可以被更新到数据?

这里最重要的一个原则就是数据的幂等性.

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!