热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

“五招”迅速提升你的流处理程序

今天解读的内容是来自SparkSummitEast2017关于SparkStreaming应用程序开发的一个介绍:WhatNoOneTellsYouAboutWritingaStr

今天解读的内容是来自 Spark Summit East 2017 关于 Spark Streaming 应用程序开发的一个介绍:
What No One Tells You About Writing a Streaming App

注:本文只是解读此技术分享的要点,如果对具体内容有兴趣,请查看 PPT 或视频,资料下载请关注微信公众号:
大数据技术峰会解读(bigdata_summit),回复 “001”

作者主要针对 Spark Streaming 流处理程序的如下五个方面进行探讨:

  • 监控和管理流处理作业
  • 如何防止数据丢失
  • 什么场景使用 Spark Streaming
  • Exact Once 语义
  • 如何优雅地关闭流处理程序

Monitoring and managing jobs( 监控和管理作业)

主要是针对运行在 YARN 之上的 spark streaming 流处理程序进行探讨并回答如下方面的问题:

作业管理:

  • 在哪里运行 driver 程序?
    • 以 yarn cluster 模型部署运行,driver 运行在 YARN 中
  • 当 driver 程序失败的时候,如何自动地重启 driver 程序?
    • 设置 spark.yarn.maxAppAttempts 和 spark.yarn.am.attemptFailuresValidityInterval
  • 如何暂停作业?
    • 参考 “如何优雅地关闭流处理程序”

作业监控:

  • 如何防止待处理数据堆积?
  • 如何监控长时间运行的 driver 程序的健康状态?

Prevent data loss (防止数据丢失)

由上面可知,当 Driver 程序宕掉后,可以自动重启,但是这过程中如何防止数据丢失呢?不同的情况需要不同对待:

1. File Sources(当数据源来自文件,如 HDFS 文件或 S3)

  • 主要是使用 Checkpoint

2. Reciever based sources(有专门的 executor 接受来自外部 [如 socket 等] 的数据,供后续其他 executor 处理)

  • Checkpoint + WAL(Write Ahead Log)

3. Spark Streaming with Kafka

  • 使用 Direct Connect 模式,无需 WAL
  • 但是应用程序需要记录 kafka offset,一种做法是使用 checkpoint,但是作者不建议这么做,因为一旦更新应用程序,老程序的 checkpoint 就无法使用了,建议使用 Zookeeper,HDFS 或者数据库来记录 kafka offset。

扩展阅读:

  • Spark streaming 与 kafka 0.8 集成: Spark Streaming + Kafka Integration Guide (Kafka broker version 0.8.2.1 or higher)
  • Spark streaming 与 kafka 0.10 集成: Spark Streaming + Kafka Integration Guide (Kafka broker version 0.10.0 or higher)
  • Improved Fault-tolerance and Zero Data Loss in Apache Spark Streaming: Improved Fault-tolerance and Zero Data Loss in Apache Spark Streaming
  • Tracking offsets when using direct connector: Exactly-once Spark Streaming from Apache Kafka – Cloudera Engineering Blog

Do I really need to use Spark Streaming (真的需要使用 Spark Streaming 吗?)

Spark Streaming 比较适合如下场景:

  • Accutate Counts(精确地计数)
  • Windows aggregations(基于时间窗口的聚合运算)
  • Progressive Analysis
  • Continuous Machine Learning(连续第做 ML 计算,如根据结果持续地优化 ML 模型)

如下方面 Spark Streaming 也能做,但是作者认为 Spark Streaming 未必是最好的选择

  • Automic Enrichment
  • Notifications
  • Joining
  • Partitioning
  • Ingestion

Exactly once sematics (Exactly once 语义)

作者认为,虽然 spark 引擎能提供 Exactly Once 语义,但是它很可能只是整个流水线的一(小)部分,任何一个其他地方(如数据源、Sink 等)出错,可能从应用层面就无法保证计算的完全精确。

Graceful shutting down your streaming app (如何优雅地关闭流处理程序)

首先定义如何关闭流处理程序才算是 “优雅地关闭”:

  • Offset known (这里的 offset 指的应该是 Kafka 的 offset)
  • State stored externally (比如 checkpoint)
  • Stopping at the right place(即等待当前的 micro-batch 处理完成的时候)

介绍了两种优雅关闭Spark Streaming 程序的方法:

  • 使用 spark-submit –kill 选项来关闭,但前提是 Spark Streaming 程序需要设置 spark.streaming.stopGracefullyOnShutdown=true
  • 使用一个标记文件(marker file), 比如是存储在 HDFS 上的一个空文件,程序定期地监控这个文件,如果此文件不存在,就调用 streamingContext.stop(stopSparkCOntext= true, stopGracefully = true),作者更加推荐这个方式

推荐阅读
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 本文详细介绍如何使用 Apache Spark 执行基本任务,包括启动 Spark Shell、运行示例程序以及编写简单的 WordCount 程序。同时提供了参数配置的注意事项和优化建议。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • 本文详细记录了一次 HBase RegionServer 异常宕机的情况,包括具体的错误信息和可能的原因分析。通过此案例,探讨了如何有效诊断并解决 HBase 中常见的 RegionServer 挂起问题。 ... [详细]
  • 全面解读Apache Flink的核心架构与优势
    Apache Flink作为大数据处理领域的新兴力量,凭借其独特的流处理能力和高效的批处理性能,迅速获得了广泛的关注。本文旨在深入探讨Flink的关键技术特点及其应用场景,为大数据处理提供新的视角。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 大数据SQL优化:全面解析数据倾斜解决方案
    本文深入探讨了大数据SQL优化中的数据倾斜问题,提供了多种解决策略和实际案例,旨在帮助读者理解和应对这一常见挑战。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 本文详细介绍了Apache Spark 2.2.0版本中集群模式的基本概念和工作流程,包括如何通过集群管理器分配资源,以及Spark应用程序在集群中的运行机制。链接:http://spark.apache.org/docs/2.2.0/cluster-overview.html ... [详细]
author-avatar
立而山0605_408
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有