一种分布式数据处理方法与流程
- 国知局
- 2024-07-31 23:03:23
本发明涉及数据处理,尤其涉及一种分布式数据处理方法。
背景技术:
1、借助pyspark技术,spark开发者可以在spark任务中使用python,从而可以充分利用python在科学计算、机器学习方面的生态,极大的扩展spark计算能力。但pyspark往往需要在spark集群中的每个节点都部署python环境以及开发过程中使用到的python库,常见有两种方案:
2、一是在所有spark集群进行手动部署,但随着集群规模增大,部署及运维工作量会显著增加,同时无法满足开发者对python环境及python库的动态需求,开发者可能随时需要引入新的python库。
3、二是提交spark任务时打包携带所有python环境及依赖库,这样虽然解决了动态需求问题,但每个spark任务都需要消耗大量的网络流量,同时每个任务执行前都需要重建python环境。
4、中国专利公开号:cn114996148a,公开了一种基于pyspark的自动化测试方法、装置、计算机设备及存储介质,包括:定时获取任务调度平台中的遗漏监测任务;在运行所述遗漏监测任务时,获取预设编辑平台中编写的pyspark逻辑,通过pyspark逻辑执行与多个数据集群分别对应的自动化测试脚本,并通过所述自动化测试脚本对各数据集群中的监测数据进行监测,得到监测结果;通过任务流程展示平台将所述监测结果展示至预设接收平台;由此可见,上述技术方案存在以下问题:未考虑到针对python环境进行建立,未考虑到在完成python环境的建立后针对数据的具体的运行情况进行监测,影响了python环境的稳定性,进而影响了数据的处理效率。
技术实现思路
1、为此,本发明提供一种分布式数据处理方法,用以克服现有技术中未考虑到针对python环境进行建立,未考虑到在完成python环境的建立后针对数据的具体的运行情况进行监测,影响了python环境的稳定性,进而影响了数据的处理效率的问题。
2、为实现上述目的,本发明提供一种分布式数据处理方法,包括:
3、在客户端提交pyspark应用时,构建独立于spark集群外的python执行环境,python执行环境包括若干节点,各节点均包括独立的python依赖模块和python执行模块,单个节点包括若干spark executor;
4、spark driver解析pyspark应用的python依赖参数,并将依赖参数通过python构建模块发送至python执行环境的各节点;
5、所述python依赖模块检查本地python环境,若依赖库已经存在,则直接返回成功信息给spark driver,若依赖库不存在,通过python工具自动下载并部署依赖库,完成后返回成功信息给spark driver;
6、所述spark driver将pyspark任务调度给所述spark executor执行;
7、所述spark executor通过pyspark.remote.daemon模块,将pyspark.worker构建命令发送至各节点;
8、所述spark executor通过所述pyspark.remote.daemon模块与pyspark.worker进行任务与数据交互,所述spark executor完成计算任务并返回结果;
9、所述spark executor返回结果给所述spark driver,spark driver将结果返回给客户端;
10、根据获取的预设分析时长内spark driver接收的传输字符数确定针对执行环境的构建参数不符合预设标准的处理方式,或根据pyspark应用中注释的字符数与文件的总字符数的比值确定执行环境的构建参数是否符合预设标准;
11、根据第二预设传输字符数与传输字符数的传输差值确定将节点的数量调节至对应值,将各节点对应的spark executor的数量调节至对应值,或将数据传输的压缩比调节至对应值;
12、当所有计算任务完成后,所述spark executor销毁本地pyspark.remote.daemon与远程pyspark.worker。
13、进一步地,将获取的预设分析时长内spark driver接收的字符数记为传输字符数,并根据传输字符数确定执行环境的构建参数是否符合预设标准;
14、若传输字符数小于等于第一预设传输字符数,根据第二预设传输字符数与传输字符数的差值确定针对执行环境的构建参数不符合预设标准的处理方式;
15、若传输字符数小于等于第二预设传输字符数且大于所述第一预设传输字符数,根据pyspark应用中注释的字符数与文件的总字符数的比值重新确定执行环境的构建参数是否符合预设标准。
16、进一步地,将获取的pyspark应用中注释的字符数与文件的总字符数的比值记为字符比值,并根据字符比值重新确定执行环境的构建参数是否符合预设标准;
17、根据预设字符比值与字符比值的差值将第一预设传输字符数与第二预设传输字符数调节至对应值;
18、根据第二预设传输字符数与传输字符数的差值确定针对执行环境的构建参数不符合预设标准的处理方式。
19、进一步地,将第二预设传输字符数与传输字符数的差值记为传输差值,并根据传输差值确定针对执行环境的构建参数不符合预设标准的处理方式;
20、根据预设分析时长内各节点分别输出的各字符数确定针对各节点的处理方式;
21、根据预设历史时长内的各字符数重新确定针对执行环境的构建参数不符合预设标准的处理方式;
22、根据pyspark应用的总数据量将节点的数量调节至对应值。
23、进一步地,将计算的预设分析时长内各节点分别输出的各字符数的方差记为字符方差,并根据字符方差确定针对各节点的处理方式;
24、根据预设字符方差与字符方差的差值将各节点对应的spark executor的数量调节至对应值;
25、根据各节点分别输出的各字符数将输出的字符数最小的节点的spark executor的数量调节至对应值。
26、进一步地,获取预设历史时长内各预设分析时长对应的各传输字符数,并将计算的各传输字符数的方差记为传输方差,根据传输方差重新确定针对执行环境的构建参数不符合预设标准的处理方式;
27、根据pyspark应用的总数据量将节点的数量调节至对应值;
28、根据传输方差与预设传输方差的差值将数据传输的压缩比调节至对应值。
29、进一步地,基于预设字符比值与字符比值的差值设有若干针对第一预设传输字符数与第二预设传输字符数的标准调节方式,且各标准调节方式针对第一预设传输字符数和第二预设传输字符数的调节幅度均不相同;
30、基于调节后的第一预设传输字符数与第二预设传输字符数重新确定执行环境的构建参数是否符合预设标准;若传输字符数仍小于等于调节后的第二预设传输字符数且大于调节后的第一预设传输字符数,根据调节后的第二预设传输字符数与传输字符数的差值确定针对执行环境的构建参数不符合预设标准的处理方式。
31、进一步地,基于预设字符方差与字符方差的差值设有若干针对各节点对应的spark executor的数量的进程调节方式,且各进程调节方式针对各节点对应的sparkexecutor的数量的调节幅度均不相同。
32、进一步地,将各节点分别输出的各字符数将输出的字符数最小的节点记为标定节点,计算各节点分别输出的各字符数的平均值,并将计算的平均值与标定节点对应的字符数的差值记为标定差值,基于标定差值设有若干针对标定节点的spark executor的数量的标定调节方式,且各标定调节方式针对标定节点的spark executor的数量的调节幅度均不相同。
33、进一步地,基于pyspark应用的总数据量设有若干针对节点的数量的节点调节方式,且各节点调节方式针对节点的数量的调节幅度均不相同;
34、基于传输方差与预设传输方差的差值设有若干针对数据传输的压缩比的压缩调节方式,且各压缩调节方式针对数据传输的压缩比的调节幅度均不相同。
35、与现有技术相比,本发明的有益效果在于,本发明通过为pyspark构建独立的python执行环境,同时扩展spark driver 及spark executor功能,支持动态更新python执行环境,显著提升python执行环境构建的灵活性,保障了高效、动态的pyspark执行能力。
36、进一步地,对python执行环境进行建立,在完成python执行环境的建立后针对数据的具体的运行情况进行监测,根据spark driver数据接收情况对执行环境的构建参数进行判定;在传输字符数小于等于第二预设传输字符数且大于第一预设传输字符数时,分析模块无法仅根据预设分析时长内spark driver接收的字符数确定执行环境的构建参数是否符合预设标准,在此情况下综合考虑pyspark应用中注释的字符数与文件的总字符数的比值,对执行环境的构建参数是否符合预设标准进行重新确定;在字符比值小于等于预设字符比值时,注释占比较小,传输的数据中包括少量注释,python执行模块需处理大量程序,在此情况下python执行模块针对数据的处理较慢是符合预设标准的,此时针对第一预设传输字符数和第二预设传输字符数进行调节,保证针对执行环境的判定可适用于多种场景;在字符比值大于预设字符比值时,传输的数据中包括大量注释,在此情况下python执行模块需处理的程序量较小,此时若python执行模块针对数据的处理较慢,分析模块判定执行环境的构建参数不符合预设标准,并具体确定针对不符合预设标准的处理方式;在提高了python执行环境的稳定性的同时,进而提高了数据的处理效率。
37、进一步地,对python执行环境进行建立,在完成python执行环境的建立后针对数据的具体的运行情况进行监测,根据spark driver数据接收情况对执行环境的构建参数进行判定;在传输字符数小于等于第二预设传输字符数且大于第一预设传输字符数时,分析模块无法仅根据预设分析时长内spark driver接收的字符数确定执行环境的构建参数是否符合预设标准,在此情况下综合考虑pyspark应用中注释的字符数与文件的总字符数的比值,对执行环境的构建参数是否符合预设标准进行重新确定;在字符比值小于等于预设字符比值时,注释占比较小,传输的数据中包括少量注释,python执行模块需处理大量程序,在此情况下python执行模块针对数据的处理较慢是符合预设标准的,此时针对第一预设传输字符数和第二预设传输字符数进行调节,保证针对执行环境的判定可适用于多种场景;在字符比值大于预设字符比值时,传输的数据中包括大量注释,在此情况下python执行模块需处理的程序量较小,此时若python执行模块针对数据的处理较慢,分析模块判定执行环境的构建参数不符合预设标准,并具体确定针对不符合预设标准的处理方式;在提高了python执行环境的稳定性的同时,进而提高了数据的处理效率。
38、进一步地,根据第二预设传输字符数与传输字符数的差值确定针对执行环境的构建参数不符合预设标准的处理方式,在传输差值小于等于第一预设传输差值时,在此情况下数据的传输仅为轻微缓慢,此时因spark executor的数量过低导致任务执行性能不稳定,无法充分利用集群资源进行任务执行,在此情况下分析模块获取各节点的具体传输情况,在字符方差小于等于预设字符方差时,各节点针对数据的处理均较慢,且各节点间处理能力的差距较小,此时针对各节点进行统一调节,并根据预设字符方差与字符方差的差值对各节点对应的spark executor的数量进行调节;在传输字符数本身较低的,且各节点的任务执行速度统一缓慢的情况下,预设字符方差与字符方差的差值与各节点对应的sparkexecutor的数量的调节幅度呈反比;在字符方差大于预设字符方差时,各节点的任务处理速度差距较大,在此情况下仅有少量节点的任务处理速度低,此时仅针对各节点分别输出的各字符数将输出的字符数最小的节点进行处理,根据具体的实际运行情况对执行环境的构建参数进行具体确定,提升了python执行环境构建的灵活性,进而提高了数据的处理效率。
39、进一步地,在传输差值小于等于第二预设传输差值且大于第一预设传输差值时,分析模块综合考虑历史传输情况中各数据传输的稳定性,获取预设历史时长内各预设分析时长对应的各传输字符数的方差,在传输方差小于等于预设传输方差时,在此情况下各预设分析时长内的传输的字符数较为稳定,在此情况下因节点数过低导致任务排队等待执行,从而造成任务堵塞,影响整体的任务执行效率和响应时间,此时针对节点的数量进行调节;在传输方差大于预设传输方差时,在此情况下数据传输不稳定,因网络问题导致在当前预设分析时长内传输的字符数过低,此时针对传输的数据的压缩比进行调节以提高数据的传输效率,进而提高了数据的处理效率。
本文地址:https://www.jishuxx.com/zhuanli/20240730/195818.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表