一种提升spark结构化流计算数据持久化的方法与流程

文档序号:37939531发布日期:2024-05-11 00:18阅读:8来源:国知局
一种提升spark结构化流计算数据持久化的方法与流程

本发明涉及的是大数据实时计算领域,具体涉及一种提升spark结构化流计算数据持久化的方法。


背景技术:

1、structured streaming是业界具有低处理时延、高吞吐量的分布式实时计算框架。目前业务中常见的一种应用场景是structured streaming消费kafka消息中间件的数据,经过etl清洗后将结果数据存储在hive表中。

2、若实时计算处理逻辑中不包含shuffle算子,如repartition、join等,其微批处理模型如图1所示,structured streaming写入hdfs存储系统的文件个数与sparktask个数一致;

3、在实际的业务处理中,为了减少产生过多的小文件影响hadoop集群的稳定性。常见的解决方案是在将结果数据写出到外部存储系统前,通过在sink端增加coalesce算子进行合并。但缺点是在业务流量高峰期,数据持久化到hdfs的效率会大大降低,而过多的数据堆积在spark executor中也容易导致任务因oom失败。

4、为了提升在业务高峰期structured streaming数据持久化到hdfs文件系统的效率,同时降低在业务低谷期产生过多的小文件,本发明提出了一种structured streaming自适应执行方案。


技术实现思路

1、针对现有技术上存在的不足,本发明目的是在于提供一种提升structuredstreaming数据持久化的方法,提升了在业务高峰期structured streaming数据持久化到hdfs文件系统的效率,同时降低在业务低谷期产生过多的小文件。

2、为了实现上述目的,本发明是通过如下的技术方案来实现:一种提升spark结构化流计算数据持久化的方法,包括以下步骤:

3、1、structured streaming读取kafka数据进行计算,若在下一个调度周期内,前一个batch任务仍未将数据处理完,则会出现batch任务堆积。spark driver周期性检测batch堆积数目是否大于阈值m.此处m取值3;

4、2、若否,则任务物理执行计划(dag)不变,仍保留coalesce(n)算子,在batch时间内只产生n个hdfs文件;

5、3、若是,则spark调度下一个任务时将动态调整执行计划,去掉coalesce算子,此时spark dag只保留一个stage,数据接入、清洗后会直接写入到hdfs存储系统,不存在因coalesce引入的shuffle操作(spark shuffle包含了大量的磁盘io、序列化、网络数据传输等操作,会降低任务处理性能),数据同步效率会大大增加。

6、本发明的有益效果:本发明提升了在业务高峰期structured streaming数据持久化到hdfs文件系统的效率,同时降低在业务低谷期产生过多的小文件。



技术特征:

1.一种提升spark结构化流计算数据持久化的方法,其特征在于,包括以下步骤:


技术总结
本发明公开了一种提升spark结构化流计算数据持久化的方法,包括以下步骤:(1)、Structured Streaming读取Kafka数据进行计算,若在下一个调度周期内,前一个batch任务仍未将数据处理完,则会出现batch任务堆积。Spark Driver周期性检测batch堆积数目是否大于阈值M.此处M取值3;(2)、若否,则任务物理执行计划DAG不变,仍保留coalesce(N)算子,在batch时间内只产生N个HDFS文件;(3)、若是,则spark调度下一个任务时将动态调整执行计划,去掉coalesce算子,此时Spark DAG只保留一个stage,数据接入、清洗后会直接写入到HDFS存储系统。本发明提升了在业务高峰期Structured Streaming数据持久化到HDFS文件系统的效率,同时降低在业务低谷期产生过多的小文件。

技术研发人员:张璐波,王全福,谢巍盛
受保护的技术使用者:天翼电子商务有限公司
技术研发日:
技术公布日:2024/5/10
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1