CN111736907B - 一种自适应低延迟内存计算引擎的数据分析方法 - Google Patents

一种自适应低延迟内存计算引擎的数据分析方法 Download PDF

Info

Publication number
CN111736907B
CN111736907B CN202010548158.8A CN202010548158A CN111736907B CN 111736907 B CN111736907 B CN 111736907B CN 202010548158 A CN202010548158 A CN 202010548158A CN 111736907 B CN111736907 B CN 111736907B
Authority
CN
China
Prior art keywords
spark
sql
service
query
starting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010548158.8A
Other languages
English (en)
Other versions
CN111736907A (zh
Inventor
陈琳
崔岭峰
黄杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan Xingyue Tianxuan Technology Co ltd
Original Assignee
Hunan Xingyue Tianxuan Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan Xingyue Tianxuan Technology Co ltd filed Critical Hunan Xingyue Tianxuan Technology Co ltd
Priority to CN202010548158.8A priority Critical patent/CN111736907B/zh
Publication of CN111736907A publication Critical patent/CN111736907A/zh
Application granted granted Critical
Publication of CN111736907B publication Critical patent/CN111736907B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种自适应低延迟内存计算引擎的数据分析方法,步骤包括:步骤S1:定义Spark服务启动相关的参数;步骤S2:在数据平台上集成一次启动处理过程;在首次启动时,向Hadoop集群提交Spark任务运行请求,申请硬件资源容器;向Spark内部注册进度监听器HKSparkListener;启动内部网络服务端用于接收通过JDBC接口提交的SQL查询请求及控制命令的处理;启动JDBC接口解析器负责解析所有的SQL语句;向JVM注册关机钩子负责JVM退出时的清理工作,至此启动结束;步骤S3:在进行SQL通信请求时,大数据平台上集成的Spark驱动客户端通过JDBC接口发起SQL查询请求;步骤S4:当收到Spark驱动客户端的停止控制命令时,停止Spark的容器进程。本发明具有原理简单、适用范围广、授权管理保密性更好的等优点。

Description

一种自适应低延迟内存计算引擎的数据分析方法
技术领域
本发明主要涉及到大数据分析内存计算引擎性能优化技术领域,特指一种自适应低延迟内存计算引擎的数据分析方法。
背景技术
当前,MapReduce编程模型已经成为主流的分布式编程模型,它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。但是MapReduce也存在一些缺陷,如高延迟、不支持DAG模型、Map与Reduce的中间数据落地等。因此在近两年,出现了优化改进MapReduce的项目,如交互查询引擎Impala、支持DAG的TEZ、支持内存计算Spark等。Spark相对与MapReduce的优势有:低延迟、支持DAG和分布式内存计算。Spark在内存中对数据进行迭代计算如果数据由内存读取是hadoop MapReduce的100倍。Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,会消耗较多的启动时间。
当前Hadoop项目平台中Spark使用方法主要有以下几种:
(1)基于Spark-api开放的API脚本直接采用linux-shell的脚本调用方法,存在的问题是使用起来很不灵活,不能动态传入参数,不能实现自动化集成。
(2)基于Azkaban等开源的大数据调度平台实现对Spark-api开放的API脚本的集成方法,存在问题是azkaban代码框架组织不好,不方便扩展、集成新功能。
(3)基于大数据集成平台集成Native本地调用的方式调用Spark-api开放的API脚本。
以上三种方法都存在的问题是:采用Spark原生实现的底层,如jvm垃圾回收算法。数据压缩算法性能较差,Spark内部的进度信息只能在自带的监控展示页面上看到,不方便集成到公司内部的系统中,实时性不高。单次任务启动耗时很高,一般在40秒到一分钟之内(视分配给Spark进程的CPU核心及内存等硬件资源参数而定),这些往往为了限制大数据量任务的整体执行速度,消耗较多的启动时间。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、易实现、适用范围广、授权管理保密性更好的自适应低延迟内存计算引擎的数据分析方法。
为解决上述技术问题,本发明采用以下技术方案:
一种自适应低延迟内存计算引擎的数据分析方法,其步骤包括:
步骤S1:定义Spark服务启动相关的参数;
步骤S2:在数据平台上集成一次启动处理过程;即,在首次启动时,向Hadoop集群提交Spark任务运行请求,申请硬件资源容器;向Spark内部注册进度监听器HKSparkListener;启动内部网络服务端用于接收通过JDBC接口提交的SQL查询请求及控制命令的处理;启动JDBC接口解析器负责解析所有的SQL语句;向JVM注册关机钩子负责JVM退出时的清理工作,至此该程序启动结束;
步骤S3:在进行SQL通信请求时,大数据平台上集成的Spark驱动客户端通过JDBC接口发起SQL查询请求;解析请求并发送到Hadoop集群中的Spark引擎;收到Spark引擎执行结束响应;如果synchFlag参数为true,则一直等待执行结束返回查询结果集,本次查询结束;对应synchFlag参数为false的情况则立即返回;当本Spark驱动收到Spark引擎的onJobEnd回调请求后通知调用的客户端查询结束并带上结果集一起返回,本次查询结束;当本Spark驱动收到Spark驱动客户端的进度查询请求时,本Spark驱动根据内部存储的jobIdMap容器中与querykey对应的任务进度信息进行查询,如果本次SQL查询请求已执行结束则带上结果集返回给客户端,本次查询结束;否则,循环本步骤直到本次查询结束;
步骤S4:当收到Spark驱动客户端的停止控制命令时,停止Spark的容器进程。
作为本发明方法的进一步改进:在所述步骤S1中,包括:
步骤S101:配置代理服务描述如下:
c_AgentServer={agent.server.host,agent.server.port}为代理服务主机和端口集合;
c_AgentKeepAliveSql={agent.keepalive.sql}为监控Spark context环境有效性保活SQL参数;
c_AgentKeepAliveInterval={agent.keepalive.interval.second}为检测SQL间隔参数;
步骤S102:配置SQLService服务描述如下:
c_SqlBatchReturn={sql.batch.return.max}为接口最大返回结果数配置参数;
c_SqlTmp={sql.tmp.db_database,sql.tmp.database,sql.tmp.table.prefix,sql.spark.register.tmp.table.prefix,sql.tmp.table.timeout.second,sql.tmp.table.stored,sql.tmp.table.compression}为临时表前缀、临时表清空时间、临时表存储方式、临时表压缩方式参数;
步骤S103:配置Spark任务提交相关参数描述如下:
c_SparkDriver={spark.driver.enable,spark.driver.pid,spark.driver.nohup.file}为本发明方法启用标志,pid文件名,nohup输入文件名参数;
c_SparkSubmit={spark.submit.user,spark.submit.dir,spark.submit.class,spark.submit.master,spark.submit.runjar}为运行用户、服务根目录、运行主类名、集群模式、运行jar包参数;
步骤S104:配置初始化Spark任务相关性能参数描述如下:
c_SparkExecutor={spark.executor.instances,spark.executor.cores,spark.executor.memory}为executor实例数、单个executor所在CPU核数、executor占用内存参数;
c_SparkDefault={spark.default.parallelism}为并行度配置参数;
c_SparkDriver={spark.driver.memeory}为配置Driver占用内存参数;
c_SparkStorage={spark.storage.memoryFraction}为存储内存占比参数;
c_SparkShuffle={spark.shuffle.memoryFraction}为shuffle阶段内存占比参数;
步骤S105:根据步骤S101-步骤S104中的参数动态生成Spark的启动命令参数DRIVER_RUN_CMD。
作为本发明方法的进一步改进:在所述步骤S2中包括:
步骤S201:初始化设置log4j的根日志级别为WARN告警级别;
步骤S202:写入进程当前的进程号到对应的.pid文件;
步骤S203:初始化Spark容器上下文环境变量,通过SparkConf接口配置应用名;
步骤S204:注册JavaSparkContext,它对应JAVA语言的上下文环境变量ctx;
步骤S205:注册自定义的Spark-主监听器HKSparkListener到ctx;
步骤S206:取spark的任务分阶段监听器回调接口,通过该回调接口及时得到任务分阶段的运行进度信息;
步骤S207:将ctx变量注册到SQLContext主上下文环境中;
步骤S208:注册JVM退出钩子服务,该服务主要负责停止cxt上下文变量、删除启动过程中产生的.pid文件及申请的临时内存清理工作;
步骤S209:启动RMI服务接口的3个子服务,包括sqlService提供SQL服务的接口,graphXService提供对Spark图计算的相关服务,mlService提供机器学习服务;commandService提供内部方法控制指令类接收服务;
步骤S210:注册Spark-JDBC驱动程序。
作为本发明方法的进一步改进:采用动态测试算法动态判断对象中Field字段的位置,生成对象的Field-位置映射信息,服务端与客户端采用相同的计算方法,对同一个对象定义会生成唯一的Field位置映射表做为通信双方的元数据字典固化到内存表中。
作为本发明方法的进一步改进:采用内存映射机制,在进程启动时就申请对应大小的一个整体内存快,实现对象内存池,对象申请及释放都由本内存池接管。
作为本发明方法的进一步改进:采用基于JAVA内部NIO机制实现高效数据传输接口。
作为本发明方法的进一步改进:采用基于Spark内部的接口实现可视化的进度展示方法,即:在一次启动的时候会将HKSparkListener注册到Spark内部的监听器上,负责监听Spark内部任务分阶段的运行进度信息,实时传回给大数据平台的前面页面做显示,用户可以实时了解当前比较耗时的SQL任务的执行进度,并可随时停止该SQL任务;与前台监控页面的通信采用的是WebSocket机制。
与现有技术相比,本发明的优点在于:本发明的自适应低延迟内存计算引擎的数据分析方法,原理简单、易实现、适用范围广,基于Spark计算引擎进行内部优化、加快单次启动用时及实时性任务进度可视化展示的方法,用以解决Spark集成性较差及执行效率低等一系列问题。
附图说明
图1是本发明方法的流程示意图。
图2是本发明方法在具体实施时的硬件拓扑结构原理示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1和图2所示,本发明的自适应低延迟内存计算引擎的数据分析方法,其步骤包括:
步骤S1:定义Spark服务启动相关的参数;
步骤S2:在数据平台上集成一次启动处理过程;即,在首次启动时,向Hadoop集群提交Spark任务运行请求,申请硬件资源容器。向Spark内部注册进度监听器HKSparkListener。启动内部网络服务端用于接收通过JDBC接口提交的SQL查询请求及控制命令的处理。启动JDBC接口解析器负责解析所有的SQL语句。向JVM注册关机钩子负责JVM退出时的清理工作,至此该程序启动结束。
步骤S3:在进行SQL通信请求时,大数据平台上集成的Spark驱动客户端通过JDBC接口发起SQL查询请求。解析请求并发送到Hadoop集群中的Spark引擎。收到Spark引擎执行结束响应。如果synchFlag参数为true,则一直等待执行结束返回查询结果集,本次查询结束。对应synchFlag参数为false的情况则立即返回。当本Spark驱动收到Spark引擎的onJobEnd回调请求后通知调用的客户端查询结束并带上结果集一起返回,本次查询结束。当本Spark驱动收到Spark驱动客户端的进度查询请求时,本Spark驱动根据内部存储的jobIdMap容器中与querykey对应的任务进度信息进行查询,如果本次SQL查询请求已执行结束则带上结果集返回给客户端,本次查询结束。否则,循环本步骤直到本次查询结束。
步骤S4:当收到Spark驱动客户端的停止控制命令时,停止Spark的容器进程。
在本发明的具体应用实例中,所述步骤S1包括:
步骤S101:配置代理服务描述如下:
c_AgentServer={agent.server.host,agent.server.port}为代理服务主机和端口集合;
c_AgentKeepAliveSql={agent.keepalive.sql}为监控Spark context环境有效性保活SQL参数;
c_AgentKeepAliveInterval={agent.keepalive.interval.second}为检测SQL间隔参数。
步骤S102:配置SQLService服务描述如下:
c_SqlBatchReturn={sql.batch.return.max}为接口最大返回结果数配置参数;
c_SqlTmp={sql.tmp.db_database,sql.tmp.database,sql.tmp.table.prefix,sql.spark.register.tmp.table.prefix,sql.tmp.table.timeout.second,sql.tmp.table.stored,sql.tmp.table.compression}为临时表前缀、临时表清空时间、临时表存储方式、临时表压缩方式等参数。
步骤S103:配置Spark任务提交相关参数描述如下:
c_SparkDriver={spark.driver.enable,spark.driver.pid,spark.driver.nohup.file}为本发明方法启用标志,pid文件名(路径自动检测),nohup输入文件名等参数;
c_SparkSubmit={spark.submit.user,spark.submit.dir,spark.submit.class,spark.submit.master,spark.submit.runjar}为运行用户、服务根目录、运行主类名、集群模式、运行jar包(路径自动检测)等参数。
步骤S104:配置初始化Spark任务相关性能参数描述如下:
c_SparkExecutor={spark.executor.instances,spark.executor.cores,spark.executor.memory}为executor实例数、单个executor所在CPU核数、executor占用内存等参数;
c_SparkDefault={spark.default.parallelism}为并行度配置参数;
c_SparkDriver={spark.driver.memeory}为配置Driver占用内存参数;
c_SparkStorage={spark.storage.memoryFraction}为存储内存占比参数;
c_SparkShuffle={spark.shuffle.memoryFraction}为shuffle阶段内存占比参数。
步骤S105:根据步骤S101-步骤S104中的参数动态生成Spark的启动命令参数DRIVER_RUN_CMD。
在本发明的具体应用实例中,所述步骤S2包括:
步骤S201:初始化设置log4j的根日志级别为WARN告警级别;
步骤S202:写入进程当前的进程号到对应的.pid文件;
步骤S203:初始化Spark容器上下文环境变量,通过SparkConf接口配置本发明方法所属的应用名,可便于在Hadoop集群上定位本发明方法的资源占用情况;
步骤S204:注册JavaSparkContext,它对应JAVA语言的上下文环境变量ctx;
步骤S205:注册自定义的Spark-本发明方法主监听器HKSparkListener到ctx。
步骤S206:取spark的任务分阶段监听器回调接口,通过该回调接口及时得到任务分阶段的运行进度信息。
步骤S207:将ctx变量注册到SQLContext主上下文环境中。
步骤S208:注册本发明方法JVM退出钩子服务,该服务主要负责停止cxt上下文变量、删除启动过程中产生的.pid文件及申请的临时内存清理工作。
步骤S209:启动RMI服务接口的3个子服务,包括sqlService提供SQL服务的接口,graphXService提供对Spark图计算的相关服务,mlService提供机器学习服务;commandService提供内部方法控制指令类接收服务。
步骤S210:注册Spark-JDBC驱动程序。
在本发明的具体应用实例中,在本发明的上述步骤中,采用动态测试算法动态判断对象中Field字段的位置,生成对象的Field-位置映射信息,由于服务端与客户端采用的是相同的计算方法,对同一个对象定义会生成唯一的Field位置映射表做为通信双方的元数据字典固化到内存表中。
其中对象序列化方式为:field1位置序号(固定1B)+数据1字节流(数据采用压缩方式:比如如果原对象中定义的是Int理论上占用4字节进行动态判断如果实际值小于等于255则实际采用1个byte字节传输,通过这种方式可大幅压缩序列化后的数据大小;不用指定数据类型及数据长度,这些都可通过元数据字典自动推断出来)+field2位置序号(固定1B)+数据2字节流…+fieldn位置序号(固定1B)+数据n字节流。
在本发明的具体应用实例中,在本发明的上述步骤中,采用内存映射机制,在进程启动时就申请对应大小的一个整体内存快,实现对象内存池,对象申请及释放都由本内存池接管,由于使用的是操作系统的堆外内存,能大幅减少垃圾回收(简称GC)次数,在启动阶段的内存申请过程中的属于young GC,full GC次数为0,解决了JVM本身的垃圾回收问题,实现了内存的高效利用。
在本发明的具体应用实例中,本发明进一步采用基于JAVA内部NIO机制实现高效数据传输接口,即:采用Netty+内部的数据传输算法实现了高性能的网络数据传输。本发明方法对外按标准的JDBC接口方式封装,内部实现了连接池化管理,自动连接掉线检测及重连机制。对RowSet结果集接口的实现采用的数组方式的ArrayListRowSet采用容量预先分配的方式记录只能向前移动,去掉了本发明方法不会用到的双向移动功能,提升整体数据交换速度。对Statement接口的实现类为SparkStatement优化了批量执行SQL的executeBatch()方法,采用多线程并行的方式提交到内部SparkSqlRecver接收器,真正实现了并行提交SQL查询请求到Hadoop集群。重载SQL语句的查询方法ResultSetexecuteQuery(String sql)为ResultSetexecuteQuery(String sql,Stringquerykey,BooleansynchFlag)。
扩展的参数说明如下:
querykey参数:查询标识(调用端负责生成的全局唯一标识),第一个作用是用来定位对应的Spark任务job实现对此任务的进度实时跟踪功能。具体实现方式是调用ctx.setLocalProperty("querykey",querykey)绑定到上下文的局部变量上。第二个作用时用来当synchFlag设置为true时取回本次查询异步返回的数据结果集。
synchFlag参数:同步查询标志,默认值是true,表示查询要等到SQL在Spark中执行结束调用才返回,当前查询数据量不是很大时可以采用此默认配置。false:异步查询,当开启异步查询请求时,本次调用会立即返回,当Spark引擎执行完此查询后会向调用者异步发送一个带上querykey标识的结果集,调用端也可主动来本发明方法查询querykey对应的查询请求的处理完成情况,如果已处理完会直接在响应中带上结果集,否则会返回本次SQL请求的执行进度信息。
在本发明的具体应用实例中,本发明进一步采用基于Spark内部的接口实现可视化的进度展示功能,即:本发明方法在一次启动的时候会将HKSparkListener注册到Spark内部的监听器上,负责监听Spark内部任务分阶段的运行进度信息,实时传回给大数据平台的前面页面做显示,用户可以实时了解当前比较耗时的SQL任务的执行进度,并可随时停止该SQL任务。与前台监控页面的通信采用的是WebSocket机制。
HKSparkListener实现类中的jobIdMap容器作用存储了客户端提交的SQL查询请求job线程局部变量(querykey)和jobId列表的映射关系:因为正常查询语句只要有where就会起多个job,所以使用ConcurrentHashMap<String,List<JobIdInfo>>实现一个SQL查询与实际Spark引擎中的多个job对象关系;每次当收到Spark引擎的onJobStart事件时就添加到jobIdMap容器中,当收到onJobEnd请求时就将其移除掉。通过Spark内部提供的JobProgressListener监听器的配合完成了实时地对当前job下面所有task任务的统计工作:包括统计数据有总任务数、正在运行的任务数、成功完成任务数、跳过的任务数和失败的任务数。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (7)

1.一种自适应低延迟内存计算引擎的数据分析方法,其特征在于,步骤包括:
步骤S1:定义Spark服务启动相关的参数;
步骤S2:在数据平台上集成一次启动处理过程;在首次启动时,向Hadoop集群提交Spark任务运行请求,申请硬件资源容器;向Spark内部注册进度监听器HKSparkListener;启动内部网络服务端用于接收通过JDBC接口提交的SQL查询请求及控制命令的处理;启动JDBC接口解析器负责解析所有的SQL语句;向JVM注册关机钩子负责JVM退出时的清理工作,至此该程序启动结束;
步骤S3:在进行SQL通信请求时,大数据平台上集成的Spark驱动客户端通过JDBC接口发起SQL查询请求;解析请求并发送到Hadoop集群中的Spark引擎;收到Spark引擎执行结束响应;如果synchFlag参数为true,则一直等待执行结束返回查询结果集,本次查询结束;对应synchFlag参数为false的情况则立即返回;当本Spark驱动收到Spark引擎的onJobEnd回调请求后通知调用的客户端查询结束并带上结果集一起返回,本次查询结束;当本Spark驱动收到Spark驱动客户端的进度查询请求时,本Spark驱动根据内部存储的jobIdMap容器中与querykey对应的任务进度信息进行查询,如果本次SQL查询请求已执行结束则带上结果集返回给客户端,本次查询结束;否则,循环本步骤直到本次查询结束;
步骤S4:当收到Spark驱动客户端的停止控制命令时,停止Spark的容器进程。
2.根据权利要求1所述的自适应低延迟内存计算引擎的数据分析方法,其特征在于,在所述步骤S1中,包括:
步骤S101:配置代理服务描述如下:
c_AgentServer={agent.server.host,agent.server.port}为代理服务主机和端口集合;
c_AgentKeepAliveSql={agent.keepal ive.sql}为监控Spark context环境有效性保活SQL参数;
c_AgentKeepAliveInterval={agent.keepal ive.interval.second}为检测SQL间隔参数;
步骤S102:配置SQLService服务描述如下:
c_SqlBatchReturn={sql.batch.return.max}为接口最大返回结果数配置参数;
c_SqlTmp={sql.tmp.db_database,sql.tmp.database,sql.tmp.table.prefix,sql.spark.register.tmp.table.prefix,sql.tmp.table.timeout.second,sql.tmp.table.stored,sql.tmp.table.compression}为临时表前缀、临时表清空时间、临时表存储方式、临时表压缩方式参数;
步骤S103:配置Spark任务提交相关参数描述如下:
c_SparkDriver={spark.driver.enable,spark.driver.pid,spark.driver.nohup.file}为所述方法的启用标志,pid文件名,nohup输入文件名参数;
c_SparkSubmit={spark.submit.user,spark.submit.dir,spark.submit.class,spark.submit.master,spark.submit.runjar}为运行用户、服务根目录、运行主类名、集群模式、运行jar包参数;
步骤S104:配置初始化Spark任务相关性能参数描述如下:
c_SparkExecutor={spark.executor.instances,spark.executor.cores,spark.executor.memory}为executor实例数、单个executor所在CPU核数、executor占用内存参数;
c_SparkDefault={spark.default.parallelism}为并行度配置参数;
c_SparkDriver={spark.driver.memeory}为配置Driver占用内存参数;
c_SparkStorage={spark.storage.memoryFraction}为存储内存占比参数;
c_SparkShuffle={spark.shuffle.memoryFraction}为shuffle阶段内存占比参数;
步骤S105:根据步骤S101-步骤S104中的参数动态生成Spark的启动命令参数DRIVER_RUN_CMD。
3.根据权利要求1所述的自适应低延迟内存计算引擎的数据分析方法,其特征在于,在所述步骤S2中包括:
步骤S201:初始化设置log4j的根日志级别为WARN告警级别;
步骤S202:写入进程当前的进程号到对应的.pid文件;
步骤S203:初始化Spark容器上下文环境变量,通过SparkConf接口配置应用名;
步骤S204:注册JavaSparkContext,它对应JAVA语言的上下文环境变量ctx;
步骤S205:注册自定义的Spark-主监听器HKSparkListener到ctx;
步骤S206:取spark的任务分阶段监听器回调接口,通过该回调接口及时得到任务分阶段的运行进度信息;
步骤S207:将ctx变量注册到SQLContext主上下文环境中;
步骤S208:注册JVM退出钩子服务,该服务负责停止cxt上下文变量、删除启动过程中产生的.pid文件及申请的临时内存清理工作;
步骤S209:启动RMI服务接口的子服务,包括sqlService提供SQL服务的接口,graphXService提供对Spark图计算的相关服务,mlService提供机器学习服务;commandService提供内部方法控制指令类接收服务;
步骤S210:注册Spark-JDBC驱动程序。
4.根据权利要求1或2或3所述的自适应低延迟内存计算引擎的数据分析方法,其特征在于,采用动态测试算法动态判断对象中Field字段的位置,生成对象的Field-位置映射信息,服务端与客户端采用相同的计算方法,对同一个对象定义会生成唯一的Field位置映射表做为通信双方的元数据字典固化到内存表中。
5.根据权利要求1或2或3所述的自适应低延迟内存计算引擎的数据分析方法,其特征在于,采用内存映射机制,在进程启动时就申请对应大小的一个整体内存快,实现对象内存池,对象申请及释放都由本内存池接管。
6.根据权利要求1或2或3所述的自适应低延迟内存计算引擎的数据分析方法,其特征在于,采用基于JAVA内部NIO机制实现高效数据传输接口。
7.根据权利要求1或2或3所述的自适应低延迟内存计算引擎的数据分析方法,其特征在于,采用基于Spark内部的接口实现可视化的进度展示方法,在一次启动的时候将HKSparkListener注册到Spark内部的监听器上,负责监听Spark内部任务分阶段的运行进度信息,实时传回给大数据平台的前面页面做显示,用户实时了解当前比较耗时的SQL任务的执行进度,并可随时停止该SQL任务;与前台监控页面的通信采用的是WebSocket机制。
CN202010548158.8A 2020-06-16 2020-06-16 一种自适应低延迟内存计算引擎的数据分析方法 Active CN111736907B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010548158.8A CN111736907B (zh) 2020-06-16 2020-06-16 一种自适应低延迟内存计算引擎的数据分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010548158.8A CN111736907B (zh) 2020-06-16 2020-06-16 一种自适应低延迟内存计算引擎的数据分析方法

Publications (2)

Publication Number Publication Date
CN111736907A CN111736907A (zh) 2020-10-02
CN111736907B true CN111736907B (zh) 2022-08-02

Family

ID=72649411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010548158.8A Active CN111736907B (zh) 2020-06-16 2020-06-16 一种自适应低延迟内存计算引擎的数据分析方法

Country Status (1)

Country Link
CN (1) CN111736907B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112822072A (zh) * 2020-12-31 2021-05-18 鲸灵科技股份有限公司 一种轻量化计算任务的基于tcp的双向通信协议
CN115529306B (zh) * 2022-07-22 2024-05-17 四川启睿克科技有限公司 一种基于springboot的spark jar包远程提交方法
CN116737512B (zh) * 2023-08-14 2023-11-10 杭州玳数科技有限公司 一种基于Spark的离线任务执行进度计算与获取方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814077A (zh) * 2009-12-04 2010-08-25 四川川大智胜软件股份有限公司 一种基于oci 9的数据库访问中间件
CN107391555A (zh) * 2017-06-07 2017-11-24 中国科学院信息工程研究所 一种面向Spark‑Sql检索的元数据实时更新方法
CN110825522A (zh) * 2019-10-31 2020-02-21 武汉联图时空信息科技有限公司 Spark参数自适应优化方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10580080B2 (en) * 2014-09-05 2020-03-03 Clutch Technologies, Llc System and method for dynamic insurance coverage in a subscription vehicle service

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814077A (zh) * 2009-12-04 2010-08-25 四川川大智胜软件股份有限公司 一种基于oci 9的数据库访问中间件
CN107391555A (zh) * 2017-06-07 2017-11-24 中国科学院信息工程研究所 一种面向Spark‑Sql检索的元数据实时更新方法
CN110825522A (zh) * 2019-10-31 2020-02-21 武汉联图时空信息科技有限公司 Spark参数自适应优化方法及系统

Also Published As

Publication number Publication date
CN111736907A (zh) 2020-10-02

Similar Documents

Publication Publication Date Title
CN111736907B (zh) 一种自适应低延迟内存计算引擎的数据分析方法
CN110908641B (zh) 基于可视化的流计算平台、方法、设备和存储介质
WO2018120171A1 (zh) 一种用于存储过程的执行方法、设备以及系统
CN105138679A (zh) 一种基于分布式缓存的数据处理系统及处理方法
WO2021150165A1 (en) Method and apparatus for managing and controlling resource, device and storage medium
CN116108057B (zh) 一种分布式数据库访问方法、装置、设备及存储介质
CN114138776A (zh) 图结构和图属性分离设计的方法、系统、装置和介质
CN108363787B (zh) 一种ifc文件并行存储方法、装置及系统
CN108519987A (zh) 一种数据持久化方法和装置
CN109857545A (zh) 一种数据传输方法及装置
US20190327342A1 (en) Methods and electronic devices for data transmission and reception
CN111917814A (zh) 数据发布、订阅方法、装置、设备、系统及可读存储介质
CN113867953A (zh) 一种资源分配方法、装置、存储介质和电子设备
CN110781137A (zh) 分布式系统的目录读取方法、装置、服务器和存储介质
CN116932147A (zh) 流式作业处理方法、装置、电子设备及介质
CN110955461A (zh) 计算任务的处理方法、装置、系统、服务器和存储介质
CN112883088A (zh) 一种数据处理方法、装置、设备及存储介质
CN115984022A (zh) 分布式支付系统统一对账方法和装置
US20230393782A1 (en) Io request pipeline processing device, method and system, and storage medium
CN113923212B (zh) 一种网络数据包处理方法和装置
CN102253940B (zh) 树形控件处理数据的方法和装置
KR102628592B1 (ko) 대량의 dbms 태스크 연산 기반 오프로딩 스니펫 스케줄링 방법
CN112256710B (zh) 一种基于元数据的数据统计分析图表生成系统、方法及设备
CN116009949B (zh) 一种数值获取方法、装置、设备及存储介质
US11734291B2 (en) Parallel execution of API calls using local memory of distributed computing devices

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant