CN111736907B - 一种自适应低延迟内存计算引擎的数据分析方法 - Google Patents
一种自适应低延迟内存计算引擎的数据分析方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation 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机制。
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)
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)
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)
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 |
-
2020
- 2020-06-16 CN CN202010548158.8A patent/CN111736907B/zh active Active
Patent Citations (3)
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 |