目录
一、为什么 Kafka 要"外挂"进 CDH
二、集成前必懂:CSD 与 Parcel 的分工
三、4 步完成 Kafka 集成
四、小内存救命调参:Broker 堆改 256M
五、功能验证:建 Topic 收发消息
六、结语与系列预告
一、为什么 Kafka 要"外挂"进 CDH
在物联网架构案例里,海量设备上报数据先打进消息队列削峰,再落存储、进计算。Kafka 是这一层的标准选择。
但CDH 5.9 的官方组件清单里没有 Kafka——Cloudera 把它作为扩展服务提供,需要管理员手工把两样东西"教给"CM:
CSD 描述文件(KAFKA-1.2.0.jar):告诉 CM Kafka 是什么服务、怎么启动、有哪些配置项
Kafka Parcel:Kafka 本体的二进制分发包
理解了这个分工,四步操作就不是死记硬背了。
二、集成前必懂:CSD 与 Parcel 的分工
组件 文件 放置位置 作用
CSD KAFKA-1.2.0.jar /opt/cloudera/csd/ 服务定义(元信息)
Parcel KAFKA-2.0.2-1.2.0.2.p0.5-el7.parcel + .sha1 /opt/cloudera/parcel-repo/ 程序本体
只有 CSD 没有 Parcel,服务能"看见"但装不上;只有 Parcel 没有 CSD,文件躺在仓库里 CM 根本不认识。两者齐备,再重启 CM Server 让它重新扫描。
三、4 步完成 Kafka 集成
步骤 1:放置 CSD 文件(仅 master)
bash
mv KAFKA-1.2.0.jar /opt/cloudera/csd/
chown cloudera-scm:cloudera-scm /opt/cloudera/csd/KAFKA-1.2.0.jar
步骤 2:放置 Kafka Parcel 并改名(仅 master)
bash
mv KAFKA-2.0.2-1.2.0.2.p0.5-el7.parcel /opt/cloudera/parcel-repo/
mv KAFKA-2.0.2-1.2.0.2.p0.5-el7.parcel.sha1 /opt/cloudera/parcel-repo/
老规矩:sha1 必须改名
mv /opt/cloudera/parcel-repo/KAFKA-2.0.2-1.2.0.2.p0.5-el7.parcel.sha1
/opt/cloudera/parcel-repo/KAFKA-2.0.2-1.2.0.2.p0.5-el7.parcel.sha
重启 CM Server 使 CSD + Parcel 生效:
bash
/opt/cm/etc/init.d/cloudera-scm-server restart
步骤 3:Web 端分发激活 Parcel
CM 控制台 → 主机 → Parcel 页面:
找到 KAFKA-2.0.2 条目
依次点击 下载 → 分配 → 激活
激活完成后,Kafka 的程序包已经落到了全部三个节点。
步骤 4:添加 Kafka 服务
先决条件:ZooKeeper 服务必须已存在。 如果第 6 篇没勾选 ZooKeeper,先通过"添加服务"装上。
Kafka 依赖 ZooKeeper 做 Broker 注册、控制器选举和集群协调,没有它 Kafka 服务在向导里都过不去,这是铁律。
然后添加服务:
CM 首页 → 添加服务 → 选择 Kafka
Broker 角色分配到三个节点(cdhmaster、cdhslave01、cdhslave02)
配置页把 Replication Factor 改为 3(三副本,容忍一台 Broker 宕机)
启动服务
四、小内存救命调参:Broker 堆改 256M
小内存机器上 Kafka 启动失败的高发原因就是默认堆内存太大。如果启动报错或反复闪退:
进入 Kafka 服务 → 配置
搜索 Java Heap Size
把 Broker 的堆内存改为 256M
保存并重启服务
实验/教学集群 256M 完全够用;生产集群按吞吐量评估,一般 4~8G。
五、功能验证:建 Topic 收发消息
任一节点执行(Kafka 客户端命令由 Parcel 自动配好):
bash
创建测试主题:3 副本 3 分区
kafka-topics.sh --create --zookeeper cdhmaster:2181
–replication-factor 3 --partitions 3 --topic test
查看主题列表
kafka-topics.sh --list --zookeeper cdhmaster:2181
输出:test
开一个控制台生产者,输入几条消息
kafka-console-producer.sh --broker-list cdhmaster:9092 --topic test
另开终端开消费者,能收到刚才的消息即全链路通
kafka-console-consumer.sh --bootstrap-server cdhmaster:9092 --topic test --from-beginning
控制台也能看到 Kafka 服务状态绿灯、三个 Broker 实例健康。
六、结语与系列预告
至此,物联网架构的数据平台全部就位:HDFS 存储、YARN 调度、Hive 数仓、Oozie 调度、Kafka 消息管道。
系列收官篇来了:把整个部署过程中踩过的坑浓缩成一张故障排查表——7180 打不开、Parcel 分发失败、Kafka 起不来……收藏那篇,部署不慌。