zoukankan      html  css  js  c++  java
  • FusionInsight大数据开发---SparkStreaming概述

    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暂停时间
  • 相关阅读:
    每天一个Linux指令--httpd
    每天一个Linux指令--alias和unalias
    每天一个Linux指令--adduser
    每天一个Linux指令--ls
    VScode 配置c/c++环境(结合各大网站的blog和官方文档)
    关于大数组定义为全局变量和内部变量的一些区别
    关于simplememory theme的设置和感想
    第一次训练赛感受和题解
    短期目标-1
    家事杂谈
  • 原文地址:https://www.cnblogs.com/cainiao-chuanqi/p/11251740.html
Copyright © 2011-2022 走看看