启用 Kerberos 的 HDP 2.6 集群中 Storm HDFS Bolt 面临问题

问题描述 投票:0回答:1

我已在 HDP 2.6 集群中启用了 Kerberos 安全性,在启用 Kerberos 之前,在该集群上安装了 Kafka 和 Storm 服务。

我正在运行的拓扑有 kafka-spout 和 hdfs-bolt。因此,使用内置的 Kafka Spout 摄取来自特定 Kafka 主题的 CSV 数据,然后使用内置的 HDFS Bolt 传输到 HDFS 目录。

我面临一个错误: 未启用简单身份验证。可用:[TOKEN、KERBEROS]

代码:

Map<String, Object> map = new HashMap<String,Object>();
    map.put("hdfs.keytab.file","/etc/security/keytabs/storm.headless.keytab");
    map.put("hdfs.kerberos.principal","[email protected]");
    Config conf = new Config();
    conf.put("hdfs.config", map);
    conf.put(HdfsSecurityUtil.STORM_KEYTAB_FILE_KEY,"/etc/security/keytabs/storm.headless.keytab");
    conf.put(HdfsSecurityUtil.STORM_USER_NAME_KEY,"[email protected]");
    conf.setNumWorkers(1);

    HdfsBolt hdfsbolt = new HdfsBolt()
            .withFsUrl(hdfsUrl)
            .withFileNameFormat(fileNameFormat).withRecordFormat(recordFormat)
            .withRotationPolicy(rotationPolicy).withSyncPolicy(syncPolicy).withConfigKey("hdfs.config");

StormSubmitter.submitTopology(topologyName, conf, builder.createTopology());

错误:

Thread-7-hdfs-bolt-executor[3 3] [ERROR]
org.apache.hadoop.security.AccessControlException: 
SIMPLE authentication is not enabled.  Available:[TOKEN, KERBEROS]

如果我需要对 Storm-hdfs 连接器进行任何其他步骤/配置相关更改才能与 Kerberos 配合使用,请告诉我。

hadoop apache-kafka apache-storm kerberos hadoop-streaming
1个回答
0
投票

根据上述代码 您正在使用 hdfsBolt 的 withConfigKey 方法 在storm.yaml中添加

topology.classpath: "etc/hadoop/conf"
将允许访问安全的hdfs并解决kerberos问题

© www.soinside.com 2019 - 2024. All rights reserved.