迁移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初始化时登录异常。