码迷,mamicode.com
首页 > 编程语言 > 详细

第99课:使用Spark Streaming+Kafka实战对论坛网站动态行为的多维度分析及java.lang.NoClassDefFoundError问题解决完整内幕版本解密

时间:2016-05-12 22:46:54      阅读:371      评论:0      收藏:0      [点我收藏+]

标签:

第99课:使用Spark Streaming 实战对论坛网站动态行为的多维度分析

/* 王家林老师授课http://weibo.com/ilovepains  每天晚上20:00YY频道现场授课频道68917580*/

/**
 * *第99课:使用Spark Streaming 实战对论坛网站动态行为的多维度分析
 * 论坛数据自动生成代码,该生成的数据会作为Producer的方式发送给Kafka,然后SparkStreaming程序会从
 * Kafka中在线Pull到论坛或者网站的用户在线行为信息,进而进行多维度的在线分析
 * 数据格式如下:
 * date:日期,格式为yyyy-MM-dd
 * timestamp:时间戳
 * userID:用户ID
 * pageID:页面ID
 * chanelID:板块的ID
 * action:点击和注册   */

 

 生成的用户点击模拟数据如下:


生成模拟数据关键步骤:
启用一个线程,模拟producer生成 的用户点击行为的数据,发送给kakfa

 

二:我们计算在线不同模块的PV




三:启动hadoop、spark、zookeeper、kafka集群


1.启动hadoop



技术分享


2.启动spark 集群
 




技术分享


3.启动zookeeper
 




4.将 SparkStreamingDataManuallyProducerForKafka达成jar包文件,使用winscp从本地传到虚拟机

技术分享



5.启动kafka集群
  

6.在linux上运行,运行SparkStreamingDataManuallyProducerForKafka的jar包,将生成的数据加载到kafka集群,测试验证kafka上生产者消费者的情况
 


第一步:kafka建立 topic
kafka-topics.sh --create --zookeeper master:2181,worker1:2181,worker2:2181 --replication-factor 1 --partitions 1 --topic UserLogs
kafka查看 topic
kafka-topics.sh --describe --zookeeper master:2181,worker1:2181,worker2:2181  





第二步:运行SparkStreamingDataManuallyProducerForKafka,java.lang.NoClassDefFoundError的解决办法
在linux上运行,运行SparkStreamingDataManuallyProducerForKafka的jar包
当用java -jar SparkStreamingDataManuallyProducerForKafka.jar来运行一个应用程序时,会找不到第三方的jar包。 当使用-jar参数运行时,JVM会屏蔽所有的外部classpath,而只以内部的class作为类的寻找范围。
解决方法:BootStrap class扩展方案


7.kafka消费 topic
在master生产数据:
root@master:/usr/local/IMF_testdata# java -Xbootclasspath/a:/usr/local/kafka_2.10-0.8.2.1/libs/kafka_2.10-0.8.2.1.jar:/usrocal/scala-2.10.4/lib/scala-library.jar:/usr/local/kafka_2.10-0.8.2.1/libs/log4j-1.2.16.jar:/usr/local/kafka_2.10-0.8.2.1/libs/metrics-core-2.2.0.jar:/usr/local/spark-1.6.1-bin-hadoop2.6/lib/spark-streaming_2.10-1.6.1.jar:/usr/local/kafka_2.10-0.8.2.1/libs/kafka-clients-0.8.2.1.jar:/usr/local/kafka_2.10-0.8.2.1/libs/slf4j-log4j12-1.6.1.jar:/usr/local/kafka_2.10-0.8.2.1/libs/slf4j-api-1.7.6.jar     -jar SparkStreamingDataManuallyProducerForKafka.jar




在work1上启动消费
root@worker1:~# kafka-console-consumer.sh --zookeeper master:2181,worker1:2181,worker2:2181 --from-beginning --topic UserLogs


8.将OnlineBBSUserLogs达成jar包文件,使用winscp从本地传到虚拟机


9. 为避免敲入命令写错了,写个脚本来执行数据的产生
root@master:/usr/local/IMF_testdata# cat ProducerForKafka.sh
 java -Xbootclasspath/a:/usr/local/kafka_2.10-0.8.2.1/libs/kafka_2.10-0.8.2.1.jar:/usr/local/scala-2.10.4/lib/scala-library.jar:/usr/local/kafka_2.10-0.8.2.1/libs/log4j-1.2.16.jar:/usr/local/kafka_2.10-0.8.2.1/libs/metrics-core-2.2.0.jar:/usr/local/spark-1.6.1-bin-hadoop2.6/lib/spark-streaming_2.10-1.6.1.jar:/usr/local/kafka_2.10-0.8.2.1/libs/kafka-clients-0.8.2.1.jar:/usr/local/kafka_2.10-0.8.2.1/libs/slf4j-log4j12-1.6.1.jar:/usr/local/kafka_2.10-0.8.2.1/libs/slf4j-api-1.7.6.jar     -jar /usr/local/IMF_testdata/SparkStreamingDataManuallyProducerForKafka.jar


root@master:/usr/local/IMF_testdata# 


技术分享


10.OnlineBBSUserLogs成功消费数据,并统计出数值,实验成功




 技术分享

 


附:
OnlineBBSUserLogs的源代码

知识点:
1、创建kafka的createDirectStream,返回JavaPairInputDStream类型的line值
org.apache.spark.streaming.kafka.createDirectStream 源代码



2、读取kafka的数据流的值以后,进行相关mapToPair、reduceByKey的操作
mapToPair-reduceByKey-PairFunction-Function2的源代码



附录生成模拟数据的源代码:

 

 技术分享



技术分享



技术分享


王家林老师 :DT大数据梦工厂创始人和首席专家。

联系邮箱:18610086859@126.com 电话:18610086859 QQ:1740415547 

微信号:18610086859 微博:http://weibo.com/ilovepains/   
每天晚上20:00YY频道现场授课频道68917580




IMF Spark源代码版本定制班学员  :
上海-段智华  QQ:1036179833 mail:duanzhihua@189.cn 微信 18918561505

第99课:使用Spark Streaming+Kafka实战对论坛网站动态行为的多维度分析及java.lang.NoClassDefFoundError问题解决完整内幕版本解密

标签:

原文地址:http://blog.csdn.net/duan_zhihua/article/details/51344952

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!