欢迎转载,转载请注明出处,徽沪一郎。

概要

Spark应用开发实践性非常强,很多时候可能都会将时间花费在环境的搭建和运行上,如果有一个比较好的指导将会大大的缩短应用开发流程。Spark Streaming中涉及到和许多第三方程序的整合,源码中的例子如何真正跑起来,文档不是很多也不详细。

本篇主要讲述如何运行KafkaWordCount,这个需要涉及Kafka集群的搭建,还是说的越仔细越好。

搭建Kafka集群

步骤1:下载kafka 0.8.1及解压

  1. wget https://www.apache.org/dyn/closer.cgi?path=/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz
  2. tar zvxf kafka_2.10-0.8.1.1.tgz
  3. cd kafka_2.10-0.8.1.1

步骤2:启动zookeeper

  1. bin/zookeeper-server-start.sh config/zookeeper.properties

步骤3:修改配置文件config/server.properties,添加如下内容

  1. host.name=localhost
  2. # Hostname the broker will advertise to producers and consumers. If not set, it uses the
  3. # value for "host.name" if configured. Otherwise, it will use the value returned from
  4. # java.net.InetAddress.getCanonicalHostName().
  5. advertised.host.name=localhost

步骤4:启动Kafka server

  1. bin/kafka-server-start.sh config/server.properties

步骤5:创建topic

  1. bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

检验topic创建是否成功

  1. bin/kafka-topics.sh --list --zookeeper localhost:2181

如果正常返回test

步骤6:打开producer,发送消息

  1. bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
  2. ##启动成功后,输入以下内容测试
  3. This is a message
  4. This is another message

步骤7:打开consumer,接收消息

  1. bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
  2. ###启动成功后,如果一切正常将会显示producer端输入的内容
  3. This is a message
  4. This is another message

运行KafkaWordCount

KafkaWordCount源文件位置 examples/src/main/scala/org/apache/spark/examples/streaming/KafkaWordCount.scala

尽管里面有使用说明,见下文,但如果不是事先对Kafka有一定的了解的话,决然不知道这些参数是什么意思,也不知道该如何填写

  1. /**
  2. * Consumes messages from one or more topics in Kafka and does wordcount.
  3. * Usage: KafkaWordCount
  4. * is a list of one or more zookeeper servers that make quorum
  5. * is the name of kafka consumer group
  6. * is a list of one or more kafka topics to consume from
  7. * is the number of threads the kafka consumer should use
  8. *
  9. * Example:
  10. * `$ bin/run-example \
  11. * org.apache.spark.examples.streaming.KafkaWordCount zoo01,zoo02,zoo03 \
  12. * my-consumer-group topic1,topic2 1`
  13. */
  14. object KafkaWordCount {
  15. def main(args: Array[String]) {
  16. if (args.length < 4) {
  17. System.err.println("Usage: KafkaWordCount ")
  18. System.exit(1)
  19. }
  20. StreamingExamples.setStreamingLogLevels()
  21. val Array(zkQuorum, group, topics, numThreads) = args
  22. val sparkConf = new SparkConf().setAppName("KafkaWordCount")
  23. val ssc = new StreamingContext(sparkConf, Seconds(2))
  24. ssc.checkpoint("checkpoint")
  25. val topicpMap = topics.split(",").map((_,numThreads.toInt)).toMap
  26. val lines = KafkaUtils.createStream(ssc, zkQuorum, group, topicpMap).map(_._2)
  27. val words = lines.flatMap(_.split(" "))
  28. val wordCounts = words.map(x => (x, 1L))
  29. .reduceByKeyAndWindow(_ + _, _ - _, Minutes(10), Seconds(2), 2)
  30. wordCounts.print()
  31. ssc.start()
  32. ssc.awaitTermination()
  33. }
  34. }

讲清楚了写这篇博客的主要原因之后,来看一看该如何运行KafkaWordCount

步骤1:停止运行刚才的kafka-console-producer和kafka-console-consumer

步骤2:运行KafkaWordCountProducer

  1. bin/run-example org.apache.spark.examples.streaming.KafkaWordCountProducer localhost:9092 test 3 5

解释一下参数的意思,localhost:9092表示producer的地址和端口, test表示topic,3表示每秒发多少条消息,5表示每条消息中有几个单词

步骤3:运行KafkaWordCount

  1. bin/run-example org.apache.spark.examples.streaming.KafkaWordCount localhost:2181 test-consumer-group test 1

解释一下参数, localhost:2181表示zookeeper的监听地址,test-consumer-group表示consumer-group的名称,必须和$KAFKA_HOME/config/consumer.properties中的group.id的配置内容一致,test表示topic,1表示线程数。

Apache Spark技术实战之1 -- KafkaWordCount的更多相关文章

  1. Apache Spark技术实战之6 --Standalone部署模式下的临时文件清理

    问题导读 1.在Standalone部署模式下,Spark运行过程中会创建哪些临时性目录及文件? 2.在Standalone部署模式下分为几种模式? 3.在client模式和cluster模式下有什么 ...

  2. Apache Spark技术实战之4 -- 利用Spark将json文件导入Cassandra

    欢迎转载,转载请注明出处. 概要 本文简要介绍如何使用spark-cassandra-connector将json文件导入到cassandra数据库,这是一个使用spark的综合性示例. 前提条件 假 ...

  3. Apache Spark技术实战之3 -- Spark Cassandra Connector的安装和使用

    欢迎转载,转载请注明出处,徽沪一郎. 概要 前提 假设当前已经安装好如下软件 jdk sbt git scala 安装cassandra 以archlinux为例,使用如下指令来安装cassandra ...

  4. Apache Spark技术实战之9 -- 日志级别修改

    摘要 在学习使用Spark的过程中,总是想对内部运行过程作深入的了解,其中DEBUG和TRACE级别的日志可以为我们提供详细和有用的信息,那么如何进行合理设置呢,不复杂但也绝不是将一个INFO换为TR ...

  5. Apache Spark技术实战之8:Standalone部署模式下的临时文件清理

    未经本人同意严禁转载,徽沪一郎. 概要 在Standalone部署模式下,Spark运行过程中会创建哪些临时性目录及文件,这些临时目录和文件又是在什么时候被清理,本文将就这些问题做深入细致的解答. 从 ...

  6. Apache Spark技术实战之6 -- spark-submit常见问题及其解决

    除本人同意外,严禁一切转载,徽沪一郎. 概要 编写了独立运行的Spark Application之后,需要将其提交到Spark Cluster中运行,一般会采用spark-submit来进行应用的提交 ...

  7. Apache Spark技术实战之7 -- CassandraRDD高并发数据读取实现剖析

    未经本人同意,严禁转载,徽沪一郎. 概要 本文就 spark-cassandra-connector 的一些实现细节进行探讨,主要集中于如何快速将大量的数据从cassandra 中读取到本地内存或磁盘 ...

  8. Apache Spark技术实战之5 -- SparkR的安装及使用

    欢迎转载,转载请注明出处,徽沪一郎. 概要 根据论坛上的信息,在Sparkrelease计划中,在Spark 1.3中有将SparkR纳入到发行版的可能.本文就提前展示一下如何安装及使用SparkR. ...

  9. Apache Spark技术实战之2 -- PackratParsers实例

    欢迎转载,转载请注明出处,徽沪一郎 概要 通过一个简明的Demo程序来说明如何使用scala中的PackratParsers DemoApp import scala.util.parsing.com ...

随机推荐

  1. GPU基本概念详解

    §1 个 multiprocessor <-> 1个instruction unit  <-> 8 个processor  <-> 在一个warp中执行  < ...

  2. kail ip配置

    设置ip /etc/network/interfaces # This file describes the network interfaces available on your system # ...

  3. Linux vim 底下显示行号

    使用 vim /etc/vimrc 然后进入之后再 set ruler" show the cursor position all the time 底下再加上 set nu 保存退出 :w ...

  4. Java中栈结构的自我实现

    package com.pinjia.shop.common.collection; /** * Created by wangwei on 2017/1/3. */ public class MyL ...

  5. Emacs简易教程

    Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: ...

  6. matlab练习程序(最小包围矩形)

    又是计算几何,我感觉最近对计算几何上瘾了. 当然,工作上也会用一些,不过工作上一般直接调用boost的geometry库. 上次写过最小包围圆,这次是最小包围矩形,要比最小包围圆复杂些. 最小包围矩形 ...

  7. matlab练习程序(射线法判断点与多边形关系)

    依然是计算几何. 射线法判断点与多边形关系原理如下: 从待判断点引出一条射线,射线与多边形相交,如果交点为偶数,则点不在多边形内,如果交点为奇数,则点在多边形内. 原理虽是这样,有些细节还是要注意一下 ...

  8. 在crontab中动态写日志

    45 3 * * * setsid script -c /home/dlht/shell/coreBusiness/coreOpt.sh  >> /home/dlht/logs/coreO ...

  9. Loadrunner中web_reg_save_param的使用详解

    [摘要]利用实际案例说明如何使用Mercury LoadRunner提取包含在HTML页内的动态信息并创建参数. [关键词]性能测试,压力测试,Mercury LoadRunner 应用范围 在使用L ...

  10. oracle创建临时表没有权限

    执行下面: grant create any table to 用户名称