http://blog.csdn.net/amber_amber/article/details/46049455
eclipse本身对Scala的支持不是很友好,但还是有一部分同学(比如我)习惯用eclipse来做开发。所以这里提供结合spark streaming+kafka编程在eclipse上实现的过程。
安装配置单机版kafka
如果已经有kafka,这一步跳过。参考官网介绍步骤进行。
(1) 下载kafka包并解压
- tar -xzf kafka_2.10-0.8.2.0.tgz
- cd kafka_2.10-0.8.2.0
(2) 启动zookeeper和kafka
- bin/zookeeper-server-start.sh config/zookeeper.properties
- bin/kafka-server-start.sh config/server.properties
如果需要修改zookeeper的端口号,在zookeeper.properties中修改后,也要同步修改server.properties, producer.properties以及consumer.properties里的。
(3) 创建topic
- bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看已创建的topic:
- bin/kafka-topics.sh --list --zookeeper localhost:2181
(4) 启动producer用于发送数据
- bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
(5) 启动consumer接收器(这个步骤仅仅用来测试kafka的运行,跳过也可以)
- bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
eclipse下的spark streaming编程
(1) 创建一个新的scala project。在此之前需要先安装Scala插件scala IDE,可以去官网下载安装,过程就省略了。
(2) 添加依赖包。右键新创建的project --> build path --> configure build path,然后点add external jars...
要添加的jar包(注意版本的对应关系):
kafka_2.10-0.8.1.1.jarmetrics-core-2.2.0.jar
spark-streaming_2.10-1.3.1.jar
spark-streaming-kafka_2.10-1.3.1.jar
zkclient-0.3.jar
spark-assembly-*.jar
(3) 编程。
(4) 程序编写完后,打包成jar包:右键 --> export -->export jar file。
在集群中执行
(1) 把2步骤中打包后的jar包上传到spark客户端。
(2) 添加依赖: 把如下jar包上传到同客户端上的某个目录下(注意版本):
这里的jar包和2中要导入eclipse project的相比,少了一个spark-assembly*jar包。因为spark-assembly是spark的核心包,客户端本身就有。kafka_2.10-0.8.1.1.jar
metrics-core-2.2.0.jar
spark-streaming_2.10-1.3.1.jar
spark-streaming-kafka_2.10-1.3.1.jar
zkclient-0.3.jar
(3) 提交执行:
- spark-submit \
- --master yarn-cluster \
- --class com.sogou.spark.streamExm.KafkaWordCount \
- --jars
- spark-streaming_2.10-1.3.1.jar,\
- spark-streaming-kafka_2.10-1.3.1.jar,\
- zkclient-0.3.jar,kafka_2.10-0.8.1.1.jar,\
- metrics-core-2.2.0.jar
- your-spark-streaming.jar [args]
除了这种方法,还支持maven和sbt来管理项目和依赖。spark streaming官网上有介绍如何用maven或者sbt管理streaming项目和依赖,有兴趣的可以去看。