【慕课网实战】Spark Streaming实时流处理项目实战笔记十二之铭文升级版
铭文一级:
======
Pull方式整合
Flume Agent的编写: flume_pull_streaming.conf
simple-agent.sources = netcat-source
simple-agent.sinks = spark-sink
simple-agent.channels = memory-channel
simple-agent.sources.netcat-source.type = netcat
simple-agent.sources.netcat-source.bind = hadoop000
simple-agent.sources.netcat-source.port = 44444
simple-agent.sinks.spark-sink.type = org.apache.spark.streaming.flume.sink.SparkSink
simple-agent.sinks.spark-sink.hostname = hadoop000
simple-agent.sinks.spark-sink.port = 41414
simple-agent.channels.memory-channel.type = memory
simple-agent.sources.netcat-source.channels = memory-channel
simple-agent.sinks.spark-sink.channel = memory-channel
注意点:先启动flume 后启动Spark Streaming应用程序
flume-ng agent \
--name simple-agent \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/flume_pull_streaming.conf \
-Dflume.root.logger=INFO,console
spark-submit \
--class com.imooc.spark.FlumePullWordCount \
--master local[2] \
--packages org.apache.spark:spark-streaming-flume_2.11:2.2.0 \
/home/hadoop/lib/sparktrain-1.0.jar \
hadoop000 41414
铭文二级:
Pull方式与Flume对接(常用):
改flume的配置文件,改sink的名称以及必须属性
官网Advanced Source大标题下有路径:Flume Integration Guide
一、导入jar包三个(第二个如果是用maven构建的scala工程则自动有):
groupId = org.apache.spark
artifactId = spark-streaming-flume-sink_2.11
version = 2.2.1
groupId = org.scala-lang
artifactId = scala-library
version = 2.11.8
groupId = org.apache.commons
artifactId = commons-lang3
version = 3.5
二、修改自定义sink:
agent.sinks = spark //自起名字
agent.sinks.spark.type = org.apache.spark.streaming.flume.sink.SparkSink
agent.sinks.spark.hostname = <hostname of the local machine> //hadoop000
agent.sinks.spark.port = <port to listen on for connection from Spark> //41414
agent.sinks.spark.channel = memoryChannel//自起名字
三、将createStream=>改成createPollingStream即可
四、启动顺序:
启动Flume->启动代码->telnet localhost 44444
五、打包到服务器
注释掉.setMaster后面的代码,可先删除sparktrain-1.0.jar,重新打包。
spark-submit \
--class com.imooc.spark.FlumePullWordCount \
--master local[2] \
--packages org.apache.spark:spark-streaming-flume_2.11:2.2.0 \
/home/hadoop/lib/sparktrain-1.0.jar \
hadoop000 41414
(竟然没有--name??--name是指定UI界面的名称)
整合Spark Streaming与Kafka实战:
一、Receiver-based
二、Direct Approch(常用)
Receiver方法(会有数据丢失)
此处选版本:Kafka Integration Guide
Write Ahead Logs (spark1.2版本引入的)
先确定修改的配置文件能用再进行编码:
具体步骤=>
1.先启动zk:./zkServer.sh start
2.启动kafka:./kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
3.创建topic
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kafka_streaming_topic
./kafka-topics.sh --list --zookeeper localhost:2181
4.通过控制台测试是否能正常生产与消费
./kafka-console-producer.sh --broker-list localhost:9092 --topic kafka_streaming_topic
./kafka-console-consumer.sh --zookeeper localhost:2181 --topic kafka_streaming_topic
编码(与Flume相类似)=>
1.引入依赖(记得查看maven project是否真的导入了)
groupId = org.apache.spark
artifactId = spark-streaming-kafka-0-8_2.11
version = 2.2.1
2.建KafkaReceiverWordCount类
main方法->最基础的四行代码->引入代码:
val kafkaStream = KafkaUtils.createStream(streamingContext,
[ZK quorum], [consumer group id], [per-topic number of Kafka partitions to consume])
->引入数组,含四个数->val Array(zkQuorum,group,topics,numThreads) = args
->判断是否传入四个参数->构建topicMap:
val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap
->topicMap带入KafkaUtils参数
->messages.map(_._2).flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).print()
messages即官网代码的kafkaSteam
KafkaUtils
3.打包jar
4.部署到服务器
(一般生产上是不能联网的,所以--packages使用不了,只能下载后用--jars来完成)
【慕课网实战】Spark Streaming实时流处理项目实战笔记十二之铭文升级版的更多相关文章
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十之铭文升级版
铭文一级: 第八章:Spark Streaming进阶与案例实战 updateStateByKey算子需求:统计到目前为止累积出现的单词的个数(需要保持住以前的状态) java.lang.Illega ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十四之铭文升级版
铭文一级: 第11章 Spark Streaming整合Flume&Kafka打造通用流处理基础 streaming.conf agent1.sources=avro-sourceagent1 ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记二之铭文升级版
铭文一级: 第二章:初识实时流处理 需求:统计主站每个(指定)课程访问的客户端.地域信息分布 地域:ip转换 Spark SQL项目实战 客户端:useragent获取 Hadoop基础课程 ==&g ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十六之铭文升级版
铭文一级: linux crontab 网站:http://tool.lu/crontab 每一分钟执行一次的crontab表达式: */1 * * * * crontab -e */1 * * * ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十五之铭文升级版
铭文一级:[木有笔记] 铭文二级: 第12章 Spark Streaming项目实战 行为日志分析: 1.访问量的统计 2.网站黏性 3.推荐 Python实时产生数据 访问URL->IP信息- ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十一之铭文升级版
铭文一级: 第8章 Spark Streaming进阶与案例实战 黑名单过滤 访问日志 ==> DStream20180808,zs20180808,ls20180808,ww ==> ( ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记九之铭文升级版
铭文一级: 核心概念:StreamingContext def this(sparkContext: SparkContext, batchDuration: Duration) = { this(s ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记八之铭文升级版
铭文一级: Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记七之铭文升级版
铭文一级: 第五章:实战环境搭建 Spark源码编译命令:./dev/make-distribution.sh \--name 2.6.0-cdh5.7.0 \--tgz \-Pyarn -Phado ...
随机推荐
- android项目安装报错:INSTALL_FAILED_CONFLICTING_PROVIDER
这主要是由于调试的环境中已有一个同名的Provider存在. 解决方法是修改AndroidManifest.xml中的 <provider android:name="applockP ...
- pthreads v3下的Volatile介绍与使用
由于pthreads v3中引入了Threaded对象自动不变性的概念,所以当我们在构造函数中给成员设置为数组时,在其他地方就无法对成员再次改写了. 例子如下: <?php //pthreads ...
- Js 怎么遍历json对象所有key及根据动态key获取值(根据key值获取相应的value值)
Js代码 <script type="text/javascript"> getJson('age'); function getJson(key){ var json ...
- initialize flexnet service failed error code 50003
网络上下载回来的绿色版Xshell/Xftp在每次启动时都会报这个错,通过FlexNet Licensing Service 安装与卸载脚本了解到,程序 启动的时候会检查FlexNet Licensi ...
- C++中的npos,size_t,size_type
string类提供了6种查找函数,每种函数以不同形式find命名,这些操作全都返回string::size_type类型的值,以下标形式标记查找匹配所发生的位置,或返回一个名为string::npos ...
- SSH原理与运用(一):远程登录(转)
作者: 阮一峰 日期: 2011年12月21日 SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很 ...
- win32多线程程序设计
标题是一本书名,写得挺有意思的,是今天早上同事带过来的,我借过来看了一会儿. 然后按照书里面前面几章的内容敲了一些代码,跑了几个例子看了一下. 创建线程的函数: HANDLE CreateThread ...
- 在开发node.js中,关于使用VS2013插件出现一直读取资源的问题
情况描述: 1.安装了VS2013: 2.安装了VS开发node.js的插件; 3.打开以前的工程文件,有的可以打开,有的打不开.而且打不开的始终停留在读取资源的界面.很痛苦的.等半天都没有反应.到底 ...
- ASCII码表以及不同进制间的O(1)转换
ASCII码表以及不同进制间的O(1)转换 一.ASCII码表 ASCII全称为American Standard Code for Information Interchange, ...
- Spring 注解驱动(一)基本使用规则
Spring 注解驱动(一)基本使用规则 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.基本使用 @Configur ...