你: kafka 是什么?
我: 嗯, 这个嘛看官网
Apache Kafka® is a distributed streaming platform
Kafka is generally used for two broad classes of applications: Building real-time streaming data pipelines that reliably get data between systems or applications,Building real-time streaming applications that transform or react to the streams of data
你: 我虽然英语很好, 但是请你用中文回答嘛, 或者自己的语言
我: 好, 翻译下, kafka 很牛
你: 哎, 你这个水平, 我走了
https://trends.google.com/trends/explore?date=all&q=/m/0fdjtq,/m/0ndhxqz,/m/0zmynvd
你: 还是没有回答我的问题, kafka 可以做什么?
我: 问题真多, 本系列风格是做, 做, 做, 优雅地说实践, 要想找答案, 请移步官网
5 分钟目标
练习 spark 与 kafka 集成的 API, 要求和上次一样, 必须可以任意地在浏览器中码代码和运行
简单啊, 和上次那个流程一样开始, 但是, 等等, 我有一个一千万的想法, 就差个程序员帮我实现, 哦 错了, 不是差个程序员, 是差个 kafka 集群, 我这个本地怎么 setup 呢?
先来个 OverView:
图中大致给出了一次执行流程, 其中的每个组件都是个很大的 topic, 一般公司中有专门的团队在维护或者二次开发, 本博客只是搭建一个可以学习, 能够 work 的 pipeline, 还有我们的目标是学习 spark api, 以此能够运用相关业务中, 所以各个组件搭建不是重点
以下不算在 5 分钟里面 (环境搭建是一次性的工作, 开发是个无限迭代循环)
浏览器, zeppelin,spark 这部分昨天的 5 分钟里面已经完成, 所以剩下的就是本地搭建个 kafka cluster 了
- kafka cluster setup ,the easier way https://github.com/wurstmeister/kafka-docker
- 1.git clone https://github.com/wurstmeister/kafka-docker.git
2. 修改 KAFKA_ADVERTISED_HOST_NAME in docker-compose.yml 为你本机
3. docker-compose up -d
看到这三步就可以完成, 是不是很欣慰? 哈, 少年, 难道你不知道有墙? 反正我是用代理才搞定的, 时间也是发了半上午
不要问我 git ,docker-compose 是什么鬼? 不懂请自行 google
还是不行, 要不你试试 kafka 官网自行安装?
好吧, 5 分钟到底想做什么?
1.kafka 的某个 topic stream 里面存的是些因为句子比如 (spark is fun)
2.spark 实时的读取这个 topic, 不断的计算句子中词的次数, 所以结果就是,(spark,1),(is,1),(fun,1)
开始计时:
1. docker run -p 8080:8080 --name zeppelin fancyisbest/zeppeinsparkstreaming:0.2
2. 进入 http://localhost:8080/, 找到 kafka integration notebook
3. 修改 bootstrap server 参数, 运行代码, bingo, 完成上图:
5 分钟, 这算是作弊吗?
我们的目标是探索 spark 和 integration 的 API, 你在 notebook 里面可以尝试各种不同参数组合和不同的 API, 或者实现到不同的业务逻辑, 别的费时间工作要么是一次性的, 我准备好的模版代码也是让你能尽快运行起来
什么? 你没有得到结果?
注意啊, 我省了向 kafka 里面创建 topic, 插入数据这些步骤, 以下命令提供参考完成这些动作
1. 进入 kafka 容器, docker exec -it c81907e90cc2 /bin/bash
2. 创建 topic : kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test
3. 向 topic 写入数据: kafka-console-producer.sh --broker-list localhost:9092 --topic test
还有什么问题吗? 请留言, 期待与你共同学习与探讨
后续: 见证 exactly once 语义
参考:
- http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
- https://kafka.apache.org/
- https://github.com/wurstmeister/kafka-docker
来源: https://www.cnblogs.com/dateInsigts/p/8624510.html