spark streaming 没有统计结果?

2020-10-09 14:51发布

4条回答
浅浅77
2楼 · 2020-10-09 16:09

sparkstreaming 程序没有结果,不报错也不输出
通过浏览器访问8088端口 spark streaming程序一直处于ACCEPTED状态(处于RUNNING的程序才会运行。)

可能原因:
1.spark streaming 在同一个 spark context 下同时只会运行一个,如果需要运行下一个,必须完全kill上一个。
2. kafka队列中有太多积压得信息未被读取。

正确代码:
1.使用 
yarn application --list 查看正在运行得yarn应用
2.使用
yarn application -kill application_num 关闭积压的yarn应用
3.最好kill掉 整个 spark 后台 重新运行
4.创建 kafka 消费者 消耗掉 队列积压的消息
kafka-console-consumer.sh --bootstrap-server 192.168.119.137:9092 --topic click-trace --from-beginning
5. 重新运行 spark streaming


我的网名不再改
3楼 · 2020-10-11 15:08

报错代码:

报错:
sparkstreaming 程序没有结果,不报错也不输出
通过浏览器访问8088端口 spark streaming程序一直处于ACCEPTED状态(处于RUNNING的程序才会运行。)

可能原因:
1.spark streaming 在同一个 spark context 下同时只会运行一个,如果需要运行下一个,必须完全kill上一个。
2. kafka队列中有太多积压得信息未被读取。

正确代码:
1.使用 yarn application --list 查看正在运行得yarn应用
2.使用yarn application -kill application_num 关闭积压的yarn应用
3.最好kill掉 整个 spark 后台 重新运行
4.创建 kafka 消费者 消耗掉 队列积压的消息
kafka-console-consumer.sh --bootstrap-server 192.168.119.137:9092 --topic click-trace --from-beginning
5. 重新运行 spark streaming


小叮当
4楼 · 2020-10-11 22:05

1.spark streaming 在同一个 spark context 下同时只会运行一个,如果需要运行下一个,必须完全kill上一个。
2. kafka队列中有太多积压得信息未被读取。

乐xenia
5楼 · 2020-10-21 16:25

1、Spark Streaming简介

Spark Streaming:Spark提供的,对于大数据进行实时计算的一种框架;它的底层,也是基于Spark Core的;
其基本的计算模型,还是基于内存的大数据实时计算模型RDD,只不过,针对实时计算的特点,在RDD之上,进行了一层封装,叫做DStream(类似Spark SQL中的DataFrame);所以RDD是整个Spark技术生态的核心。

Spark Streaming是Spark Core Api的一种扩展,它可以用于进行大规模、高吞吐量、容错的实时数据流的处理;支持从很多种数据源中读取数据,比如Kafka、Flume、Twitter、ZeroMQ、Kinesis或者TCP Socket,并且能够使用类似高阶函数的复杂算法来进行数据处理,比如map、reduce、join、window;处理后的数据可以被保存到文件系统、数据库、Dashboard等存储中。

image.png

2、Spark Streaming工作原理

Spark Streaming内部的基本工作原理:接收实时输入数据流,然后将数据拆分成多个batch,比如每收集1s的数据封装为一个batch,  然后将每个batch交给Spark的计算引擎进行处理,最后会生产出一个结果数据流,其中的数据,也是一个个的batch所组成的。其中,一个batchInterval累加读取到的数据对应一个RDD的数据

image.png

3、DStream

DStream:Discretized Stream,离散流,Spark Streaming提供的一种高级抽象,代表了一个持续不断的数据流;
DStream可以通过输入数据源来创建,比如Kafka、Flume,也可以通过对其他DStream应用高阶函数来创建,比如map、reduce、join、window;

  • DStream的内部,其实是一系列持续不断产生的RDD,RDD是Spark Core的核心抽象,即,不可变的,分布式的数据集;
    DStream中的每个RDD都包含了一个时间段内的数据;
    以下图为例,0-1这段时间的数据累积构成了RDD@time1,1-2这段时间的数据累积构成了RDD@time2,。。。

image.png

  • 对DStream应用的算子,其实在底层会被翻译为对DStream中每个RDD的操作;
    比如对一个DStream执行一个map操作,会产生一个新的DStream,其底层原理为,对输入DStream中的每个时间段的RDD,都应用一遍map操作,然后生成的RDD,即作为新的DStream中的那个时间段的一个RDD;
    底层的RDD的transformation操作,还是由Spark Core的计算引擎来实现的,Spark Streaming对Spark core进行了一层封装,隐藏了细节,然后对开发人员提供了方便易用的高层次API。

image.png

4、Spark Streaming VS Storm

image.png

  • 优势
    从上图中可以看出,Spark Streaming绝对谈不上比Storm优秀,这两个框架在实时计算领域中,都很优秀,只是擅长的细分场景并不相同;

    Spark Streaming仅仅在吞吐量上比Storm要优秀,但问题是,是不是在所有的实时计算场景下,都那么注重吞吐量?
    不尽然。
    因此,通过吞吐量说Spark Streaming 强于Storm,不靠谱;

    事实上,Storm在实时延迟度上,比Spark Streaming就好多了,Storm是纯实时,Spark Streaming是准实时;而且Storm的事务机制,健壮性/容错性、动态调整并行度等特性,都要比Spark Streaming更加优秀。

    Spark Streaming的真正优势(Storm绝对比不上的),是它属于Spark生态技术栈中,因此Spark Streaming可以和Spark Core、Spark SQL无缝整合,而这也就意味着,我们可以对实时处理出来的中间数据,立即在程序中无缝进行延迟批处理、交互式查询等操作,这个特点大大增强了Spark Streaming的优势和功能。

  • 应用场景

    • Storm:
      1、建议在那种需要纯实时,不能忍受1s以上延迟的场景下使用,比如金融系统,要求纯实时进行金融交易和分析;
      2、如果对于实时计算的功能中,要求可靠的事务机制和可靠性机制,即数据的处理完全精准,一条也不能多,一条也不能少,也可以考虑使用Strom;
      3、如果需要针对高峰低峰时间段,动态调整实时计算程序的并行度,以最大限度利用集群资源,也可以考虑用Storm;
      4、如果一个大数据应用系统,它就是纯粹的实时计算,不需要在中间执行SQL交互式查询、复杂的transformation算子等,那么使用Storm是比较好的选择

    • Spark Streaming:
      1、如果对上述适用于Storm的三点,一条都不满足的实时场景,即,不要求纯实时,不要求强大可靠的事务机制,不要求动态调整并行度,那么可以考虑使用Spark Streaming;
      2、考虑使用Spark Streaming最主要的一个因素,应该是针对整个项目进行宏观的考虑,即,如果一个项目除了实时计算之外,还包括了离线批处理、交互式查询等业务功能,而且实时计算中,可能还会牵扯到高延迟批处理、交互式查询等功能,那么就应该首选Spark生态,用Spark Core开发离线批处理,用Spark SQL开发交互式查询,用Spark Streaming开发实时计算,三者可以无缝整合,给系统提供非常高的可扩展性。



作者:张凯_9908
链接:https://www.jianshu.com/p/931651943104
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


相关问题推荐

  • 什么是大数据时代?2021-01-13 21:23
    回答 100

    大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,而这个海量数据的时代则被称为大数据时代。随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。大数据(Big data)通常用来形容一个公司创造的大量非结...

  • 回答 84

    Java和大数据的关系:Java是计算机的一门编程语言;可以用来做很多工作,大数据开发属于其中一种;大数据属于互联网方向,就像现在建立在大数据基础上的AI方向一样,他两不是一个同类,但是属于包含和被包含的关系;Java可以用来做大数据工作,大数据开发或者...

  • 回答 52
    已采纳

    学完大数据可以从事很多工作,比如说:hadoop 研发工程师、大数据研发工程师、大数据分析工程师、数据库工程师、hadoop运维工程师、大数据运维工程师、java大数据工程师、spark工程师等等都是我们可以从事的工作岗位!不同的岗位,所具备的技术知识也是不一样...

  • 回答 29

    简言之,大数据是指大数据集,这些数据集经过计算分析可以用于揭示某个方面相关的模式和趋势。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。大数据的特点:数据量大、数据种类多、 要求实时性强、数据所蕴藏的...

  • 回答 14

    tail -f的时候,发现一个奇怪的现象,首先 我在一个窗口中 tail -f test.txt 然后在另一个窗口中用vim编辑这个文件,增加了几行字符,并保存,这个时候发现第一个窗口中并没有变化,没有将最新的内容显示出来。tail -F,重复上面的实验过程, 发现这次有变化了...

  • 回答 18

    您好针对您的问题,做出以下回答,希望有所帮助!1、大数据行业还是有非常大的人才需求的,对于就业也有不同的岗位可选,比如大数据工程师,大数据运维,大数据架构师,大数据分析师等等,就业难就难在能否找到适合的工作,能否与你的能力和就业预期匹配。2、...

  • 回答 33

    大数据的定义。大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据是对大量、动态、能持续的数据,通过运用新系统、新工具、新...

  • 回答 17

    最小的基本单位是Byte应该没多少人不知道吧,下面先按顺序给出所有单位:Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB,按照进率1024(2的十次方)计算:1Byte = 8 Bit1 KB = 1,024 Bytes 1 MB = 1,024 KB = 1,048,576 Bytes 1 GB = 1,024 MB = 1,048,576...

  • 回答 5

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的版本:针对不同的用户,MySQL分为两种不同的版本:MySQL Community Server社区版本,免费,但是Mysql不提供...

  • mysql安装步骤mysql 2022-05-07 18:01
    回答 2

    mysql安装需要先使用yum安装mysql数据库的软件包 ;然后启动数据库服务并运行mysql_secure_installation去除安全隐患,最后登录数据库,便可完成安装

  • 回答 5

    1.查看所有数据库showdatabases;2.查看当前使用的数据库selectdatabase();3.查看数据库使用端口showvariableslike'port';4.查看数据库编码showvariableslike‘%char%’;character_set_client 为客户端编码方式; character_set_connection 为建立连接...

  • 回答 5

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(    `runoob_id` INT UNSIGNED AUTO_INCREMENT,    `runoob_title` VARCHAR(100) NOT NULL,    `runoob_author` VARCHAR(40) NOT NULL,    `submission_date` DATE,    PRI...

  • 回答 9

    学习多久,我觉得看你基础情况。1、如果原来什么语言也没有学过,也没有基础,那我觉得最基础的要先选择一种语言来学习,是VB,C..,pascal,看个人的喜好,一般情况下,选择C语言来学习。2、如果是有过语言的学习,我看应该一个星期差不多,因为语言的理念互通...

  • 回答 7

    添加语句 INSERT插入语句:INSERT INTO 表名 VALUES (‘xx’,‘xx’)不指定插入的列INSERT INTO table_name VALUES (值1, 值2,…)指定插入的列INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)查询插入语句: INSERT INTO 插入表 SELECT * FROM 查...

  • 回答 5

    看你什么岗位吧。如果是后端,只会CRUD。应该是可以找到实习的,不过公司应该不会太好。如果是数据库开发岗位,那这应该是不会找到的。

  • 回答 7

    查找数据列 SELECT column1, column2, … FROM table_name; SELECT column_name(s) FROM table_name 

没有解决我的问题,去提问