SparkStreaming概述

SparkStreaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。

SparkStreaming原理

  1. SparkStreaming接收实时的输入数据流,然后将这些数据切分为批数据供Spark引擎处理,Spark引擎将数据生成最终的结果数据。
  2. 使用DStream从Kafka和HDFS等源获取连接的数据流。DStream是一系列连续的RDD组成。

SparkStreaming数据源

  1. 基本源:HDFS等文件系统、Socket连接等
  2. 高级源:Kafka等
  3. 自定义源: 需要实现用户自定义receiver

可靠性(二次开发)

  1. Reliable Receiver
  2. 设置CheckPoint
  3. 确保Driver可以自动启动
  4. 使用Write Ahead Log 功能

SparkStreaming代码流程
常见业务代码逻辑

  1. 创建StreamingContext
  2. 定义输入源
  3. 准备应用计算逻辑
  4. 使用streamingContext.start()方法接受和处理数据。
  5. 使用streamingContext.stop()方法停止流计算。

窗口操作
SparkStreaming支持窗口计算,允许用户在一个滑动窗口数据上应用transformation算子。
窗口在源DStream上滑动,合并和操作落入窗口RDDs,产生窗口化的DStream的RDDs。

Checkpoint
SparkStreaming可以checkpoint足够的信息到容错存储系统中,以使系统崩溃后从故障中恢复。

  1. Metadata checkpoint:保存流计算的定义信息到HDFS中
  2. Data checkpoint:保存生成的RDD到HDFS中。

SparkStreaming性能调优

  • 设置合理的批处理时间(batch Duration)
  • 设置合理数据接收并行度
  1. 设置多个Receiver接受数据
  2. 设置合理的Receiver阻塞时间
  • 设置合理数据处理并行度
  • 使用Kryo系列化
  • 内存调优
    1. 设置持久化级别减少GC开销
    2. 使用并发的标记-清理GC算法减少GC暂停时间

FusionInsight大数据开发---SparkStreaming概述的更多相关文章

  1. FusionInsight大数据开发学习总结(1)

    FusionInsight大数据开发 FusionInsight HD是一个大数据全栈商用平台,支持各种通用大数据应用场景. 技能需求 扎实的编程基础 Java/Scala/python/SQL/sh ...

  2. 大数据开发-Spark-Streaming处理数据到mysql

    前面一篇讲到streamin读取kafka数据加工处理后写到kafka数据,大数据开发-Spark-开发Streaming处理数据 && 写入Kafka是针对比如推荐领域,实时标签等场 ...

  3. FusionInsight大数据开发---HDFS应用开发

    HDFS应用开发 HDFS(Dadoop Distributed File System) HDFS概述 高容错性 高吞吐量 大文件存储 HDFS架构包含三部分 Name Node DataNode ...

  4. FusionInsight大数据开发---MapReduce与YARN应用开发

    MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...

  5. FusionInsight大数据开发--HBase应用开发

    HBase应用开发 HBase的定义 HBase是一个高可靠.高性能.面向列.可伸缩的分布式存储系统. 适合于存储大表数据,可以达到实时级别. 利用Hadoop HDFS 作为其文件存储系统,提供实时 ...

  6. FusionInsight大数据开发---Flume应用开发

    Flume应用开发 要求: 了解Flume应用开发适用场景 掌握Flume应用开发 Flume应用场景Flume的核心是把数据从数据源收集过来,在送到目的地.为了保证输送一定成功,发送到目的地之前,会 ...

  7. FusionInsight大数据开发---Hive应用开发

    Hive应用开发 了解Hive的基本架构原理 掌握JDBC客户端开发流程 了解ODBC客户端的开发流程 了解python客户端的开发流程 了解Hcatalog/webHcat开发接口 掌握Hive开发 ...

  8. FusionInsight大数据开发---Oozie应用开发

    Oozie应用开发 要求: 了解Oozie应用开发适用场景 掌握Oozie应用开发 熟悉并使用Oozie常用API Oozie简介 Oozie是一个Hadoop作业的工作流调度管理系统 Oozie工作 ...

  9. FusionInsight大数据开发---Streaming应用开发

    Streaming应用开发 掌握Streaming基本业务开发流 熟悉Streaming常用API接口使用 掌握Streaming业务设计基本原则 了解Streaming应用开发环境 了解CQL开发流 ...

随机推荐

  1. 【spring data jpa】带有条件的查询后分页和不带条件查询后分页实现

    一.不带有动态条件的查询 分页的实现 实例代码: controller:返回的是Page<>对象 @Controller @RequestMapping(value = "/eg ...

  2. MySQLDump--导出数据脚本异常

    在一次使用mysqldump导出数据过程中,发现导出SQL无法正常执行,仔细观察后发下导出脚本为: (,,,,' Yimu(id:5085297)',''¥','[新教室V32] ',15593224 ...

  3. 【SSH错误】ssh_exchange_identification: read: Connection reset by peer

    进行远程登录时,ssh root@xxxxxxxxx出现如下错误 ssh_exchange_identification: read: Connection reset by peer 解决方案:登录 ...

  4. Memcache内存缓存框架

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10923221.html 一:Memcache是什么,为什么要用它 MemCache是一个高性能.“分布式”的 ...

  5. Linux小知识:CentOS使用Google-BBR加速网络

    准备一台centos的服务器查看系统内核:rpm -qa | grep kernel这里需要Linux内核在4.9 RC版本以上,如果版本不是请继续下面操作 访问https://elrepo.org/ ...

  6. Nginx 高级配置-压缩功能

    Nginx 高级配置-压缩功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx压缩相关参数概述 1>.gzip on | off; Nginx支持对指定类型的文 ...

  7. JavaScript模拟call和apply的实现

    参考: call和apply的模拟实现 1. call:调用一个对象的一个方法,用另一个对象替换当前对象.例如:B.call(A, args1,args2);即A对象调用B对象的方法. /*call( ...

  8. helm搭建本地chart仓库及基本操作

    这个步骤,是配合公司的竞赛. 因为公司这次的环境,我们只有namespace权限,而没有整个集群的管理, 而且,公司没有提供统一的helm chart repo, 所以只能自建. 参考URL: htt ...

  9. nginx 跨域请求访问

    1.nginx跨域请求访问 location ~ .*\.(htm|html)$ { add_header Access-Control-Allow-Origin(请求域名) *(所有域名) http ...

  10. 第05组 Beta冲刺(3/4)

    第05组 Beta冲刺(3/4) 队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪 ...