nifi1.28.1集群部署详细记录

NiFi 1.28.1 必须使用JDK 1.8或更高版本,低于此版本将无法运行。
验证命令:java -version
配置一定用主机名!!!

1.解压安装包

unzip nifi-1.28.1-bin.zip

2.配置环境变量

cat <<‘EOF’ > /etc/profile.d/nifi.sh
export NIFI_HOME=/data12/nifi/nifi-1.28.1
export PATH= P A T H : PATH: PATH:{NIFI_HOME}/bin
EOF
sleep 1
source /etc/profile.d/nifi.sh

cat <<‘EOF’ > /etc/profile.d/jdk8.sh
export JAVA_HOME=/usr/java/jdk1.8.0_202-amd64/jre
export PATH= P A T H : PATH: PATH:{JAVA_HOME}/bin
EOF
s

<think>我们正在讨论的是Apache NiFi 1.28.1版本如何配置写入Kafka 2.13。根据引用内容,我们可以知道: - 引用[1]提供了Kafka集群的地址和NiFi的访问地址,说明用户有一个Kafka集群(版本未明确,但题目要求是Kafka 2.13)和NiFi实例。 - 引用[2]提到了一个使用NiFi处理器PublishKafkaRecord_2_6的实例,虽然版本不同(2.6 vs 我们需要的2.13),但配置方法类似,可以作为参考。 - 引用[3]是NiFi集群部署记录,说明用户可能是在集群环境下运行,但问题本身不限于集群环境。 - 引用[4]说明了NiFi集群基于ZooKeeper,而Kafka也需要ZooKeeper,因此需要确保ZooKeeper集群可用。 - 引用[5]是另一个NiFi处理器的使用实例,表明用户对NiFi处理器的配置流程有一定了解。 因此,我们需要提供NiFi 1.28.1向Kafka 2.13写入数据的完整指南,包括处理器选择、配置步骤、常见问题及解决方法。 步骤: 1. 处理器选择:在NiFi中,写入Kafka的处理器主要有两个:PublishKafka和PublishKafkaRecord。由于Kafka版本为2.13,我们应选择支持该版本的处理。在NiFi 1.28.1中,有多个版本的处理,例如PublishKafkaRecord_2_6(适用于Kafka 2.6.x),但也可以用于更高版本的Kafka(只要客户端兼容)。另外,还有PublishKafkaRecord_2_0、PublishKafkaRecord_0_11等。通常,选择与Kafka集群版本最匹配的处理器,但如果没有完全匹配的,可以选择客户端兼容的版本。对于Kafka 2.13,我们可以选择PublishKafkaRecord_2_6(因为2.6之后的客户端通常兼容2.13),或者检查NiFi是否提供了更高版本的处理(如PublishKafkaRecord_2_8)。在NiFi 1.28.1中,内置的处理包括到2.6版本。因此,我们使用PublishKafkaRecord_2_6,并通过配置正确的Kafka客户端版本来确保兼容性。 2. 配置步骤: a. 将PublishKafkaRecord_2_6添加到画布。 b. 配置处理器属性: - Kafka Brokers: 输入Kafka集群的地址,如引用[1]中的`Kafkahost001.dev.ia:19092,host001.dev.ia:29092,host001.dev.ia:39092`。 - Topic Name: 指定要写入的Kafka主题。 - Record Writer: 选择记录写入器,例如使用JsonRecordSetWriter将FlowFile内容作为JSON写入Kafka。 - 其他重要属性: - Security Protocol: 如果Kafka启用了安全认证(如SSL或SASL),需要配置。 - Delivery Guarantee: 选择交付保证(如最多一次,至少一次,精确一次)。 - Compression Type: 压缩类型(如snappy, gzip等)。 - Kafka Version: 手动指定Kafka版本(虽然处理器是2.6,但我们可以通过设置属性`kafka.version`为2.13来使用相应的客户端)。注意:NiFi的处理器可能默认使用与处理器版本匹配的客户端,但我们可以通过覆盖`kafka.version`属性来指定更高版本。需要确保NiFi的Kafka客户端库支持2.13版本。在NiFi 1.28.1中,默认的Kafka客户端版本可能是2.6,但我们可以手动指定为2.13(需确认NiFi的lib目录下是否有对应版本的kafka-clients包。如果没有,需要手动添加)。 注意:NiFi 1.28.1自带的Kafka客户端库版本可能不支持Kafka 2.13,因此可能需要升级kafka-clients库。NiFi 1.28.1默认使用的是Kafka客户端2.6.0(与处理器版本匹配)。如果我们希望使用Kafka 2.13,需要将相应版本的kafka-clients jar包放入NiFi的lib目录下(例如kafka-clients-2.13.x.x.jar),并重启NiFi。 3. 可能遇到的问题及解决办法: - 问题1: 处理器无法连接Kafka。 解决:检查Brokers地址是否正确,网络是否连通,Kafka是否在运行,以及安全配置(SSL/SASL)是否正确。 - 问题2: 版本不兼容,出现异常如`java.lang.NoSuchMethodError`或`UnsupportedVersionException`。 解决:升级NiFi的Kafka客户端库到与Kafka集群匹配的版本(2.13)。注意,升级库后,处理器应选择与库版本匹配的(如PublishKafkaRecord_2_6可以继续使用,因为其内部使用配置的kafka-clients库)。 - 问题3: 认证失败。 解决:配置正确的安全协议和认证信息(如JAAS配置、SSL证书等)。 - 问题4: 记录写入格式错误。 解决:检查Record Writer的配置,确保输出格式与Kafka消费者预期的格式匹配。 4. 操作示例: 参考引用[2]中的实例,我们可以构建一个类似的流程,但使用Kafka 2.13: - 使用GetFile获取数据(如文本文件)。 - 使用SplitText分割文本行(如果需要逐行处理)。 - 使用ExtractText提取内容(可能转换为JSON格式)。 - 使用AttributesToJSON将属性转换为JSON(可选)。 - 使用PublishKafkaRecord_2_6将记录发布到Kafka。 注意:在PublishKafkaRecord_2_6的配置中,设置Kafka Brokers、Topic,并指定Record Writer为JsonRecordSetWriter(配置适当的Schema)。 5. 验证: 可以通过Kafka控制台消费者检查消息是否被正确写入。 注意事项: - 确保NiFi节点有网络访问Kafka集群的权限。 - 在集群环境下,NiFi节点都需要配置相同的Kafka客户端库(如有手动升级)。 - 如果使用Kerberos认证,需要在nifi.properties中配置Kerberos服务主体和keytab文件(引用[3]中提到了TLS配置,但Kerberos配置类似)。 最后,生成相关问题。 </think>### NiFi 1.28.1 写入 Kafka 2.13 使用指南 #### 一、处理器选择与配置 NiFi 写入 Kafka 主要使用 **PublishKafkaRecord** 系列处理器(如 `PublishKafkaRecord_2_6`)。虽然名称含版本号,但通过配置可兼容 Kafka 2.13: 1. **添加处理器** 在画布拖入 `PublishKafkaRecord_2_6`(NiFi 1.28.1 内置该处理器) ```plaintext Processor > Apache Kafka 2.6 > PublishKafkaRecord_2_6 ``` 2. **核心配置**(按引用[1][2]调整) | 属性 | 值示例 | 说明 | |---|---|---| | `Kafka Brokers` | `Kafkahost001.dev.ia:19092,host001.dev.ia:29092` | Kafka集群地址[^1] | | `Topic Name` | `my_topic` | 目标Kafka主题 | | `Record Writer` | `JSONRecordSetWriter` | 数据格式转换器 | | `Security Protocol` | `SASL_SSL` | 安全协议(若启用) | | `SASL Mechanism` | `PLAIN` | 认证机制 | | `Username/Password` | 账号凭证 | SASL认证信息 | 3. **版本兼容配置** 在处理器自定义属性中添加: ```plaintext 属性名: kafka.version 值: 2.13 # 强制指定Kafka客户端版本 ``` 需确保 NiFi lib 目录包含 Kafka 2.13 的客户端库(如 `kafka-clients-3.6.1.jar`)。若无,需手动下载放入 `$NIFI_HOME/lib/` 并重启[^3]。 #### 二、数据流构建示例 参照引用[2][5],构建完整流程: ``` GetFile → SplitText → ExtractText → AttributesToJSON → PublishKafkaRecord_2_6 ``` 1. **ExtractText处理器** 提取文本内容到属性 `content`: ```plaintext 属性名: content 正则: (.*) # 捕获全文 ``` 2. **AttributesToJSON处理器** 将属性转为JSON格式: ```plaintext 属性列表: content 目标属性: kafka_message ``` 3. **Record Writer配置** 为 `PublishKafkaRecord_2_6` 创建 `JSONRecordSetWriter`: ```json { "Schema Write Strategy": "no-schema", "Schema Access Strategy": "do-not-inherit" } ``` #### 三、常见问题与解决 1. **连接失败** - ✅ **检查点**:确认 `Kafka Brokers` 地址与端口正确[^1] - ✅ **网络策略**:确保 NiFi 节点可访问 Kafka Broker 的端口 - ✅ **协议配置**:若 Kafka 启用 SSL,需在 NiFi 配置证书(参考引用[3]) 2. **版本不兼容错误** 如遇 `UnsupportedVersionException`: ```log ERROR org.apache.nifi.publishkafka.Failed processing session: org.apache.kafka.common.errors.UnsupportedVersionException ``` - ✅ **解决方案**: 1. 手动下载 Kafka 2.13 的客户端库([Maven仓库](https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients/3.6.1)) 2. 替换 `$NIFI_HOME/lib/` 中的旧 JAR 文件 3. 重启 NiFi 节点[^3] 3. **认证失败** SASL/PLAIN 认证错误时: - ✅ 检查 `jaas.conf` 配置(集群环境需同步到所有节点): ```plaintext KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="user" password="pass"; } ``` - ✅ 在 `nifi.properties` 添加: ```properties nifi.kafka.ssl.security.protocol=SASL_SSL nifi.kafka.sasl.mechanism=PLAIN ``` #### 四、性能优化建议 1. **批处理设置** ```plaintext PublishKafkaRecord_2_6 > Properties: Message Max Count: 10000 # 单次发送最大消息数 Compression Type: snappy # 启用压缩 ``` 2. **集群部署** 多节点 NiFi 集群需配置: - ZooKeeper 连接(引用[4]) - 相同版本的 Kafka 客户端库 - 同步 `jaas.conf` 安全配置到所有节点[^3] 3. **容错机制** ```plaintext PublishKafkaRecord_2_6 > Settings: Failure Strategy: Route to Failure Delivery Guarantee: BEST_EFFORT # 根据场景选GUARANTEED_DELIVERY ``` > **关键验证步骤**: > 在 Kafka 端运行消费命令验证数据: > ```bash > bin/kafka-console-consumer.sh --bootstrap-server host001.dev.ia:19092 --topic my_topic > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值