更新时间:2023-04-10 GMT+08:00

迁移Storm对接的外部安全组件业务

迁移Storm对接HDFS和HBase组件的业务

如果Storm的业务使用的storm-hdfs或者storm-hbase插件包进行的对接,那么在按照完整迁移Storm业务进行迁移时,需要指定特定安全参数,如下:

//初始化Storm的Config 
Config conf = new Config();  

//初始化安全插件列表 
List<String> auto_tgts = new ArrayList<String>(); 
//添加AutoTGT插件 
auto_tgts.add("org.apache.storm.security.auth.kerberos.AutoTGT"); 
//添加AutoHDFS插件 
//如果对接HBase,则如下更改为:auto_tgts.add("org.apache.storm.hbase.security.AutoHBase"); 
auto_tgts.add("org.apache.storm.hdfs.common.security.AutoHDFS");  

//设置安全参数 
conf.put(Config.TOPOLOGY_AUTO_CREDENTIALS, auto_tgts); 
//设置worker个数 
conf.setNumWorkers(3);  

//将Storm的Config转化为Flink的StormConfig 
StormConfig stormConfig = new StormConfig(conf);  

//使用Storm的TopologBuilder构造FlinkTopology 
FlinkTopology topology = FlinkTopology.createTopology(builder);  

//获取StreamExecutionEnvironment 
StreamExecutionEnvironment env = topology.getExecutionEnvironment();  

//将StormConfig设置到Job的环境变量中,用于构造Bolt和Spout 
//如果Bolt和Spout初始化时不需要config,则不用设置 
env.getConfig().setGlobalJobParameters(stormConfig); 

//执行拓扑提交 
topology.execute();

增加如上的安全插件配置后,可以避免HDFSBolt和HBaseBolt在初始化过程中的无谓登录,因为Flink已经实现准备好了安全上下文,无需再登录。

迁移Storm对接其他安全组件的业务

如果Storm的业务使用的storm-kakfa-client等插件包进行的对接时,需要注意,之前所配置的安全插件需要去掉,如下:

List<String> auto_tgts = new ArrayList<String>(); 
//keytab方式 
auto_tgts.add("org.apache.storm.security.auth.kerberos.AutoTGTFromKeytab");  

//将客户端配置的plugin列表写入config指定项中 
//安全模式必配 
//普通模式不用配置,请注释掉该行 
conf.put(Config.TOPOLOGY_AUTO_CREDENTIALS, auto_tgts);

如上所配置的AutoTGTFromKeytab插件在进行业务迁移时,必须删除,否则会引起相应Bolt或Spout初始化时登录异常。