1. 程式人生 > >storm-kafka 訪問帶 kerberos 權限的 kafka

storm-kafka 訪問帶 kerberos 權限的 kafka

spa plaintext log 地址 url 設置 lib hosts lease

之前項目裏面 pom 裏面的 storm-kafka 的依賴版本是 1.0.1 或 1.1.0 這兩個版本的 KafkaSpout 的 SpoutConfig 都是無法設置 securityProtocol 的。

如果強行設置會報 Exception in thread "main" java.lang.NoSuchFieldError: securityProtocol

而 HDP 2.5.0.0-1245 裏面的 “定制版”。 pom 如下:

<dependency>
    <groupId>org.apache.storm</groupId>
    <
artifactId>storm-kafka</artifactId> <version>1.0.1.2.5.0.0-1245</version> </dependency>

當然,此版本號過於特殊, maven central 裏面是找不到的。

在這 http://repo.spring.io/libs-release/org/apache/storm/storm-kafka/1.0.1.2.5.0.0-1245/

在 pom 裏面配置一下就可以了,或者把這個地址加到 nexus 私服上。

    <repositories>
        <
repository> <id>spring-lib-release</id> <url>http://repo.spring.io/libs-release/</url> </repository> </repositories>

其它的就簡單了。

下面是整體的 dependency

<dependencies>
        <dependency>
            <groupId>org.apache.kafka</
groupId> <artifactId>kafka-clients</artifactId> <version>0.10.0.1</version> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.10</artifactId> <version>0.10.0.1</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-kafka</artifactId> <version>1.0.1.2.5.0.0-1245</version> </dependency> <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</artifactId> <version>1.1.0</version> <scope>${storm.scope}</scope> </dependency> </dependencies>

核心代碼,2333:

 SpoutConfig spoutConfig = new SpoutConfig(hosts, topic, zkRoot, clientId);
        spoutConfig.securityProtocol = "SASL_PLAINTEXT";

storm-kafka 訪問帶 kerberos 權限的 kafka