Stream Processing with Apache Flink

Stream Processing with Apache Flink - Fundamentals,Implementation,and Operation of Streaming Applications
应用Apache Flink进行流式处理 - 流式应用的架构、实现和操作
Stream Processing with Apache Flink_第1张图片

作者: Fabian Hueske (费比安 韦斯克), Vasiliki Kalavri (瓦西利基 卡拉夫里)

如果是相对Flink有跟深入的了解,除了查看官方文档和源码外,这里推荐可以看下这本书,如果支持原版的可以网上查询购买,书籍详细信息可访问 OREILLY 官网 Books & Videos。后续有时间我可能会更新书中比较重要和精彩的部分的翻译吧。先释放出这本书的目录,大家可以参考这本书的目录对相应的知识点进行了解和学习。

书中源码可以访问 GitHub streaming-with-flink

catalogue 目录
1. Preface 前言
   a. What You Will Learn in This Book 你将在本书中学到什么
   b. Conventions Used in This Book 本书中使用的约定
   c. Using Code Examples 使用代码示例
   d. O’Reilly Online Learning O’Reilly在线学习
   e. How to Contact Us 如何联系我们
   f. Acknowledgments 致谢
 
2. 1. Introduction to Stateful Stream Processing 有状态流处理简介
   a. Traditional Data Infrastructures 传统数据基础架构
      i. Transactional Processing 事务性处理
      ii. Analytical Processing 分析处理
   b. Stateful Stream Processing 有状态的流处理
      i. Event-Driven Applications 事件驱动的应用程序
      ii. Data Pipelines 数据管道
      iii. Streaming Analytics 流式分析
   c. The Evolution of Open Source Stream Processing 开源流处理的演进
      i. A Bit of History 一点历史
   d. A Quick Look at Flink 快速浏览Flink
      i. Running Your First Flink Application 运行您的第一个Flink应用程序
   e. Summary 小结
 
3. 2. Stream Processing Fundamentals 流处理基础
   a. Introduction to Dataflow Programming Dataflow编程简介
      i. Dataflow Graphs 数据流图
      ii. Data Parallelism and Task Parallelism 数据并行与Task并行
      iii. Data Exchange Strategies 数据交换策略
   b. Processing Streams in Parallel 并行处理流
      i. Latency and Throughput 延迟和吞吐量
      ii. Operations on Data Streams 数据流上的Operation
   c. Time Semantics 时间语义
      i. What Does One Minute Mean in Stream Processing? 流处理中的一分钟意味着什么?
      ii. Processing Time 处理时间
      iii. Event Time 事件时间
      iv. Watermarks 水位线
      v. Processing Time Versus Event Time 处理时间与事件时间
   d. State and Consistency Models 状态和一致性模型
      i. Task Failures 任务失败
      ii. Result Guarantees 结果保证
   e. Summary 小结
 
4. 3. The Architecture of Apache Flink Apache Flink的体系结构
   a. System Architecture 系统架构
      i. Components of a Flink Setup Flink设置的组件
      ii. Application Deployment 应用程序部署
      iii. Task Execution Task执行
      iv. Highly Available Setup 高度可用的设置
   b. Data Transfer in Flink Flink中的数据传输
      i. Credit-Based Flow Control 基于信用的流量控制
      ii. Task Chaining Task链
   c. Event-Time Processing 事件时间处理
      i. Timestamps 时间戳
      ii. Watermarks 水位线
      iii. Watermark Propagation and Event Time 水位线传播和事件时间
      iv. Timestamp Assignment and Watermark Generation 时间戳分配和水位线生成
   d. State Management 状态管理
      i. Operator State Operator状态
      ii. Keyed State Keyed状态
      iii. State Backends 状态后端
      iv. Scaling Stateful Operators 扩展有状态的Operator
   e. Checkpoints, Savepoints, and State Recovery Checkpoints、Savepoints和状态恢复
      i. Consistent Checkpoints 一致的Checkpoint
      ii. Recovery from a Consistent Checkpoint 从一致的Checkpoint恢复
      iii. Flink’s Checkpointing Algorithm Flink的Checkpoint算法
      iv. Performace Implications of Checkpointing Checkpoint的性能影响
      v. Savepoints Savepoint
   f. Summary 小节
 
5. 4. Setting Up a Development Environment for Apache Flink 为Apache Flink设置开发环境
   a. Required Software 软件要求
   b. Run and Debug Flink Applications in an IDE 在IDE中运行和调试Flink应用程序
      i. Import the Book’s Examples in an IDE 在IDE中导入Book的示例
      ii. Run Flink Applications in an IDE 在IDE中运行Flink应用程序
      iii. Debug Flink Applications in an IDE 在IDE中调试Flink应用程序
   c. Bootstrap a Flink Maven Project 引导Flink Maven项目
   d. Summary 小节
 
6. 5. The DataStream API (v1.7) DataStream API(v1.7)
   a. Hello, Flink! Hello, Flink!
      i. Set Up the Execution Environment 设置执行环境
      ii. Read an Input Stream 读取输入流
      iii. Apply Transformations 应用转换
      iv. Output the Result 输出结果
      v. Execute 执行
   b. Transformations 转换
      i. Basic Transformations 基本转换
      ii. KeyedStream Transformations KeyedStream转换
      iii. Multistream Transformations 多流转换
      iv. Distribution Transformations 分布变换
   c. Setting the Parallelism 设置并行度
   d. Types 类型
      i. Supported Data Types 支持的数据类型
      ii. Creating Type Information for Data Types 为数据类型创建类型信息
      iii. Explicitly Providing Type Information 明确提供类型信息
   e. Defining Keys and Referencing Fields 定义key和引用字段
      i. Field Positions 字段位置
      ii. Field Expressions 字段表达
      iii. Key Selectors key选择器
   f. Implementing Functions 实现Functions
      i. Function Classes Functions类
      ii. Lambda Functions Lambda函数
      iii. Rich Functions 符函数
   g. Including External and Flink Dependencies 包括外部和Flink依赖项
   h. Summary 小节
 
7. 6. Time-Based and Window Operators 基于时间和窗口的Operator
   a. Configuring Time Characteristics 配置时间特征
      i. Assigning Timestamps and Generating Watermarks 分配时间戳和生成Watermark
      ii. Watermarks, Latency, and Completeness 水位线、延迟和完整性
   b. Process Functions 处理Functions
      i. TimerService and Timers TimerService和定时器
      ii. Emitting to Side Outputs 发射到侧面输出
      iii. CoProcessFunction CoProcessFunction
   c. Window Operators 窗口Operator
      i. Defining Window Operators 定义窗口Operator
      ii. Built-in Window Assigners 内置窗口分配器
      iii. Applying Functions on Windows 在Windows上应用功能
      iv. Customizing Window Operators 自定义窗口运算符
   d. Joining Streams on Time 按时加入Streams
      i. Interval Join 间隔加入
      ii. Window Join 窗口加入
   e. Handling Late Data 处理迟到的数据
      i. Dropping Late Events 放弃迟到的事件
      ii. Redirecting Late Events 重定向延迟事件
      iii. Updating Results by Including Late Events 通过包含延迟事件来更新结果
   f. Summary 小节
 
8. 7. Stateful Operators and Applications 有状态的Operator和应用
   a. Implementing Stateful Functions 实现有状态的函数
      i. Declaring Keyed State at RuntimeContext 在RuntimeContext中声明keyed状态
      ii. Implementing Operator List State with the ListCheckpointed Interface 使用ListCheckpointed接口实现Operator列表状态
      iii. Using Connected Broadcast State 使用连接广播状态
      iv. Using the CheckpointedFunction Interface 使用CheckpointedFunction接口
      v. Receiving Notifications About Completed Checkpoints 接收有关已完成Checkpoint的通知
   b. Enabling Failure Recovery for Stateful Applications 为有状态应用程序启用故障恢复
   c. Ensuring the Maintainability of Stateful Applications 确保有状态应用的可维护性
      i. Specifying Unique Operator Identifiers 指定唯一的Operator标识符
      ii. Defining the Maximum Parallelism of Keyed State Operators 定义keyed状态算子的最大并行性
   d. Performance and Robustness of Stateful Applications 状态应用的性能和稳健性
      i. Choosing a State Backend 选择状态后端
      ii. Choosing a State Primitive 选择状态原始
      iii. Preventing Leaking State 防止泄漏状态
   e. Evolving Stateful Applications 不断发展的有状态应用
      i. Updating an Application without Modifying Existing State 更新应用程序而不修改现有状态
      ii. Removing State from an Application 从应用程序中删除状态
      iii. Modifying the State of an Operator 修改Operator的状态
   f. Queryable State 可查询状态
      i. Architecture and Enabling Queryable State 架构和启用可查询状态
      ii. Exposing Queryable State 公开可查询状态
      iii. Querying State from External Applications 从外部应用程序查询状态
   g. Summary 小节
 
9. 8. Reading from and Writing to External Systems 读写外部系统
   a. Application Consistency Guarantees 应用程序一致性保证
      i. Idempotent Writes 幂等性写
      ii. Transactional Writes 事务性写
   b. Provided Connectors 提供连接器
      i. Apache Kafka Source Connector Apache Kafka源连接器
      ii. Apache Kafka Sink Connector Apache Kafka Sink连接器
      iii. Filesystem Source Connector 文件系统源连接器
      iv. Filesystem Sink Connector 文件系统Sink连接器
      v. Apache Cassandra Sink Connector Apache Cassandra Sink连接器
   c. Implementing a Custom Source Function 实现自定义源方法
      i. Resettable Source Functions 可复位的源功能
      ii. Source Functions, Timestamps, and Watermarks 源函数,时间戳和水位线
   d. Implementing a Custom Sink Function 实现自定义Sink功能
      i. Idempotent Sink Connectors 幂等性Sink连接器
      ii. Transactional Sink Connectors 事务性Sink连接器
   e. Asynchronously Accessing External Systems 异步访问外部系统
   f. Summary 小节
 
10. 9. Setting Up Flink for Streaming Applications 为流式应用程序设置Flink
   a. Deployment Modes 部署模式
      i. Standalone Cluster 独立群集
      ii. Docker Docker
      iii. Apache Hadoop YARN Apache Hadoop YARN
      iv. Kubernetes Kubernetes
   b. Highly Available Setups 高可用的设置
      i. HA Standalone Setup HA独立安装程序
      ii. HA YARN Setup HA YARN设置
      iii. HA Kubernetes Setup HA Kubernetes设置
   c. Integration with Hadoop Components 与Hadoop组件集成
   d. Filesystem Configuration 文件系统配置
   e. System Configuration 系统配置
      i. Java and Classloading Java和类加载
      ii. CPU CPU
      iii. Main Memory and Network Buffers 主存储器和网络缓冲器
      iv. Disk Storage 磁盘存储
      v. Checkpointing and State Backends Checkpoint和状态后端
      vi. Security 安全
   f. Summary 小节
 
11. 10. Operating Flink and Streaming Applications 运行Flink和流式应用程序
   a. Running and Managing Streaming Applications 运行和管理流应用程序
      i. Savepoints Savepoint
      ii. Managing Applications with the Command-Line Client 使用命令行客户端管理应用程序
      iii. Managing Applications with the REST API 使用REST API管理应用程序
      iv. Bundling and Deploying Applications in Containers 在容器中捆绑和部署应用程序
   b. Controlling Task Scheduling 控制Task调度
      i. Controlling Task Chaining 控制Task链
      ii. Defining Slot-Sharing Groups 定义Slot共享组
   c. Tuning Checkpointing and Recovery 调整Checkpoint和恢复
      i. Configuring Checkpointing 配置Checkpoint
      ii. Configuring State Backends 配置状态后端
      iii. Configuring Recovery 配置恢复
   d. Monitoring Flink Clusters and Applications 监控Flink群集和应用程序
      i. Flink Web UI Flink Web UI
      ii. Metric System Metric系统
      iii. Monitoring Latency 监控延迟
   e. Configuring the Logging Behavior 配置日志记录行为
   f. Summary 小节
 
12. 11. Where to Go from Here? 下一步?
   a. The Rest of the Flink Ecosystem Flink生态系统的其余部分
      i. The DataSet API for Batch Processing 用于批处理的DataSet API
      ii. Table API and SQL for Relational Analysis 用于关系分析的Table API和SQL
      iii. FlinkCEP for Complex Event Processing and Pattern Matching FlinkCEP用于复杂事件处理和模式匹配
      iv. Gelly for Graph Processing 用于图处理的Gelly
   b. A Welcoming Community 欢迎的社区
 
13. Index 索引



1. Preface (前言 )

a. What You Will Learn in This Book(你将在本书中学到什么)

本书将向您介绍使用Apache Flink进行流式处理时需要了解的所有内容。 它由11章组成,希望能够讲述一个连贯的故事。 虽然有些章节是描述性的,旨在介绍高级设计概念,但其他章节则更具实际操作性并包含许多代码示例。

虽然我们打算在编写本书时以章节顺序阅读本书,但熟悉章节内容的读者可能希望跳过它。 其他人对立即编写Flink代码感兴趣可能需要先阅读实用章节。 在下文中,我们将简要介绍每章的内容,以便您可以直接跳转到您最感兴趣的章节。

  • 第1章概述了有状态流处理,数据处理应用程序体系结构,应用程序设计以及流处理相对于传统方法的好处。 它还简要介绍了在本地Flink实例上运行第一个流应用程序的情况。

  • 第2章讨论了流处理的基本概念和挑战,独立于Flink。

  • 第3章介绍了Flink的系统架构和内部构件。 它讨论了流式应用程序中的分布式体系结构,时间和状态处理,以及Flink的容错机制。

  • 第4章介绍如何设置开发和调试Flink应用程序的环境。

  • 第5章介绍了Flink的DataStream API的基础知识。您将学习如何实现DataStream应用程序以及支持哪些流转换,函数和数据类型。

  • 第6章讨论DataStream API的基于时间的operator。这包括窗口operator和基于时间的连接以及在流应用程序中处理时间时提供最大灵活性的过程函数。

  • 第7章解释了如何实现有状态函数并讨论了有关该主题的所有内容,例如状态函数的性能,健壮性和演变。它还显示了如何使用Flink的可查询状态。

  • 第8章介绍了Flink最常用的源和Sink连接器。它讨论了Flink的端到端应用程序一致性方法,以及如何实现自定义连接器从外部系统中提取数据和向外部系统发送数据。

  • 第9章讨论如何在各种环境中设置和配置Flink集群。

  • 第10章介绍了全天候运行的流应用程序的操作,监视和维护。

  • 最后第11章包含可用于提问,参加Flink相关事件以及了解Flink当前如何使用的资源。

你可能感兴趣的:(大数据)