zoukankan      html  css  js  c++  java
  • 5分钟spark streaming实践之 与kafka联姻

    你: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很牛

    你:哎,你这个水平,我走了。。。

    我:别,我是认真严肃的,用数据说话,看图,spark和kafka都是属于上升趋势,此图来源:

    https://trends.google.com/trends/explore?date=all&q=%2Fm%2F0fdjtq,%2Fm%2F0ndhxqz,%2Fm%2F0zmynvd

    你:还是没有回答我的问题,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

  • 相关阅读:
    c#中ref与out区别
    【转载】Firebug中net面板的使用
    结构声明、定义
    开始旅程了
    strcpy、strcat、strcmp、strlen
    #include 格式
    宏定义
    MySQL 字段类型
    MySQL 约束类型
    (转载)C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
  • 原文地址:https://www.cnblogs.com/dateInsigts/p/8624510.html
Copyright © 2011-2022 走看看