
# 迁移Storm对接的外部安全组件业务
#### 迁移Storm对接HDFS和HBase组件的业务
如果Storm的业务使用的storm-hdfs或者storm-hbase插件包进行的对接，那么在按照[完整迁移Storm业务](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1050.html)进行迁移时，需要指定特定安全参数，如下：
```
//初始化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-kafka-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初始化时登录异常。
