【Spark】Spark Stream 整合 Kafka(一)

 

一、Kafka 简介

Kafka:高吞吐量的分布式消息系统,发布-订阅,分布式提交日志;

特点:快,可扩展性,稳定性,分布式;

Apache Kafka 是分布式发布-订阅消息系统。它最初由linkedin公司开发,之后成为Apache项目的一部分。Kafka是一种快速的、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。

Apache Kafka 与传统消息系统相比,有以下不同:

1)它被设计为一个分布式系统,易于向外扩展;

2)它同时为发布和订阅提供高吞吐量;

3)它支持多订阅者,当失败时能自动平衡消费者;

4)它将消息持久化到磁盘,因此可用于批量消费,例如 ETL,以及实时应用程序;

kafka 架构

1)生产者(producer)是能够发布消息到话题(topic)的任何对象;

2)已发布的消息保存在一组服务器中,它们被称为代理(Broker)或kafka集群;

3)消费者可以订阅一个或多个话题,并从Broker中拉取数据,从而消费这些已发布的消息;

4)话题(topic)是特定类型的消息流。消息是字节的有效负载(payload),话题是消息的分类名或种子(Feed)名。

5)kafka依赖于zookeeper;

二、kafka的安装

用scala语言编写的2个大数据框架:spark、kafka;

安装kafka集群步骤:

1)安装jdk;

2)安装zookeeper;

3)安装scala;

4)安装kafka;

 

kafka依赖于zookeeper;如果没有安装zookeeper,要先安装zookeeper;

安装zookeeper:

1)版本为 zookeeper-3.4.5-cdh5.3.6,解压到安装目录,安装目录是:/opt/cdh-5.3.6/zookeeper-3.4.5-cdh5.3.6;

2)在安装目录下,创建目录:data/zkData,用于存放数据;

3)把 conf/zoo_sample.cfg 文件名称修改为 zoo.cfg,修改 zoo.cfg 的内容:

dataDir=/opt/cdh-5.3.6/zookeeper-3.4.5-cdh5.3.6/data/zkData

zookeeper 安装完毕,启动 zookeeper

1)启动 zkServer

$ZOOKEEPER_HOME/bin/zkServer.sh start

2)进入zk客户端;

$ZOOKEEPER_HOME/bin/zkCli.sh

3)可以用命令查看zk中的节点和内容;查看根目录下的节点,只有zookeeper 一个节点;

[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]


安装kafka步骤;

可以参考官网安装:http://kafka.apache.org/quickstart 

1)官网下载,http://kafka.apache.org/downloads,由于是练习,用的版本比较老:kafka_2.10-0.8.2.1.tgz,依赖scala版本是 2.10;

2)解压到安装目录,安装目录是:/opt/cdh-5.3.6/kafka_2.10-0.8.2.1

3)替换kafka依赖的zookeeper包;

要使得 kafka 用我们安装的 zookeeper (版本为3.4.5),所以 kafka自带的zookeeper包应该删除,

rm -rf libs/zookeeper-3.4.6.jar 

把 zookeeper-3.4.5-cdh5.3.6 安装目录下的依赖包 zookeeper-3.4.5-cdh5.3.6.jar 拷贝到kafka的libs目录下,作为kafka的依赖;

cp /opt/cdh-5.3.6/zookeeper-3.4.5-cdh5.3.6/zookeeper-3.4.5-cdh5.3.6.jar libs/

4)修改配置文件:config/server.properties

每一台broker都要有一个唯一的整型 id:

broker.id=0

端口号:

port=9092

主机名:

host.name=hadoop-senior.ibeifeng.com

日志,先创建目录:

mkdir -p kafka-logs

再修改:

log.dirs=/opt/cdh-5.3.6/kafka_2.10-0.8.2.1/kafka-logs

zk的连接:

zookeeper.connect=hadoop-senior.ibeifeng.com:2181

 

三、kafka的启动

1)启动zookeeper

$ZOOKEEPER_HOME/bin/zkServer.sh start

2)启动kafka

$KAFKA_HOME/bin/kafka-server-start.sh config/server.properties

在后台启动的命令为:

nohup $KAFKA_HOME/bin/kafka-server-start.sh config/server.properties &

3)查看jps进程,可以看到多个进程,其中 QuorumPeerMain 是zookeeper;

> jps
4144 Kafka
4123 QuorumPeerMain

4)查看zookeeper中的cli 客户端

$KAFKA_HOME/bin/zkCli.sh

查看根目录下的节点列表:

[zk: localhost:2181(CONNECTED) 1] ls /
[consumers, config, controller, admin, brokers, zookeeper, controller_epoch]
[zk: localhost:2181(CONNECTED) 2] ls /brokers
[topics, ids]
[zk: localhost:2181(CONNECTED) 3] ls /config
[topics, changes]

5)创建topic

bin/kafka-topics.sh --create --zookeeper hadoop-senior.ibeifeng.com:2181 --replication-factor 1 --partitions 1 --topic test

6)查看已有的topic,

bin/kafka-topics.sh --list --zookeeper hadoop-senior.ibeifeng.com:2181

在zk客户端查看

[zk: localhost:2181(CONNECTED) 7] ls /config/topics
[test]

7)生产数据

bin/kafka-console-producer.sh --broker-list hadoop-senior.ibeifeng.com:9092 --topic test

8)消费数据

bin/kafka-console-consumer.sh --zookeeper hadoop-senior.ibeifeng.com:2181 --topic test --from-beginning

9)在生产者控制台,输入字符串

> bin/kafka-console-producer.sh --broker-list hadoop-senior.ibeifeng.com:9092 --topic test
This is a message
This is another message

10)可以在消费者控制台,看到输出字符串

bin/kafka-console-consumer.sh --zookeeper hadoop-senior.ibeifeng.com:2181 --topic test --from-beginning
This is a message
This is another message

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值