[发明专利]一种storm任务管理和调度方法有效
申请号: | 202210053528.X | 申请日: | 2022-01-18 |
公开(公告)号: | CN114489598B | 公开(公告)日: | 2023-03-28 |
发明(设计)人: | 高晨 | 申请(专利权)人: | 徐工汉云技术股份有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F9/48 |
代理公司: | 南京纵横知识产权代理有限公司 32224 | 代理人: | 母秋松 |
地址: | 221001 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 storm 任务 管理 调度 方法 | ||
1.一种storm任务管理和调度方法,其特征在于:包括如下步骤:
在web页面中设置spout节点和bolt节点数据结构的参数,并在web页面上对spout和bolt节点之间进行连线,完成storm拓扑结构抽象,形成storm任务;
将storm任务通过接口提交到dolphinscheduler中,dolphinscheduler根据任务类型jobType字段判断是否为提交的storm任务,若是storm任务,dolphinscheduler根据机器实际运行情况和调度策略,挑选合适的机器提交storm任务,在被挑选的机器上,通过抽取storm任务中的mainJar参数和jobResourceList参数信息,将jar包资源从hdfs下载到被挑选的机器上,执行命令将storm任务提交到storm集群中;
storm集群在收到提交的storm任务时,先执行mainClass定义的主方法,在主方法中获取params信息,抽取出nodes定义的节点信息,遍历所有节点将storm拓扑结构抽象映射成storm拓扑结构;
根据stormTopologyConfig定义的参数设置storm拓扑结构的运行参数,通过storm拓扑提交器将storm拓扑结构提交到storm集群中去运行;
针对正在运行的storm任务,storm rest接口中的host和port分别设置为storm UI的主机和端口信息,通过storm rest接口获取storm任务的概览信息,根据概览信息获取storm拓扑结构id,将storm拓扑结构id作为storm rest接口中参数topologyid参数的值,获取该storm任务的运行worker信息;
根据worker信息,在被挑选的机器上构建flume agen的配置文件,对每一个worker生成一个flume agent配置文件,flume agent配置文件中source类型使用flume自带的exec;
对于flume sink类型采用RabbitmqPublishSink,RabbitmqPublishsink将读取flumechannel中的数据并发布到rabbitmq的主题中,主题名称为storm任务名称,在rabbitmq中声明exchange类型时,选择fanout,即发布订阅模式;
使用python的paramiko模块将flume agent配置文件上传到storm日志文件所在的机器上,远程调用flume-ng agent命令启动flume agent,flume agent采用nohup方式运行,使用paramiko模块的invoke_shell发送执行命令给flume agent,同时paramiko模块休眠一定时间等待命令执行结果并将执行结果返回paramiko模块;
web页面通过websocket连接rabbitmq,订阅flume agent中RabbitmqPublishsink发送到rabbitmq中的storm任务日志信息,在web页面展示订阅的storm任务日志信息;
spout节点和bolt节点数据结构如下所示:
{
nodeId:,
preNodeArray:,
nodeName:,
nodeBusinessConfig:{},
nodeDescription:,
className:,
nodeType:,
grouping:,
taskNum:,
nodeResourceList:
}
其中nodeId表示节点唯一标识;preNodeArray表示父节点id,多个父节点id使用多个逗号相连接;nodeName表示节点名称;nodeBusinessConfig表示节点业务配置信息;nodeDescription表示节点描述;className表示节点运行的完整类名;nodeType表示节点类型,1为spout节点,2位bolt节点;grouping表示数据从父节点到该节点的分组方式,1为shuffleGrouping,即随机分组,2为fieldsGrouping,即按字段分组,3为localOrShuffleGrouping,即本地或随机分组;taskNum表示运行节点的executor数量;nodeResourceList表示节点的使用jar包资源列表;
spout节点的nodeBusinessConfig数据结构如下所示:
nodeBusinessConfig:{
kafkaSpoutConfig:{
groupField:,
needDeserialize:,
deserializeClass:,
zookeeperConnect:,
groupId:,
topic:,
autoOffsetReset:
}
}
其中kafkaSpoutConfig是kafka连接信息的数据结构,groupField表示数据传输到下个节点的分组字段名称,needDeserialize表示是否对kafka连接信息进行反序列化,1为进行反序列化,2为不进行反序列化;deserializeClass表示kafka连接信息反序类化的类名;zookeeperConnect表示zookeeper的连接信息;groupId表示消费者分组id;topic表示kafka中的消息主题;autoOffsetReset表示Kafka消费策略;
执行命令将storm任务提交到storm集群中的命令如下所示:
storm jar mainJar mainClass params--jar dependJars
其中:mainJar表示storm任务中的mainJar参数信息;mainClass表示storm任务中的mainClass参数信息;params表示storm任务中的params参数信息;dependJars是storm任务中的jobResourceList jar包信息,多个jar包采用逗号分隔。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于徐工汉云技术股份有限公司,未经徐工汉云技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210053528.X/1.html,转载请声明来源钻瓜专利网。