Python 简介
Python 简介 Python 教程提供了 Python 的基本和高级概念。 Python 教程是为初学者和专业人士设计的。 Python 是一种简单、通用、高级和面向对象的编程语言。 Python 也是一种解释脚本语言。 Guido Van Rossum 被称为 Python 编程的创始人。 教程包括 Python 编程的所有主题,如安装、控制语句、字符串、列表、元组、字典、模块、异常、日期和 ...
Flink状态管理与checkpoint容错机制(二)
状态分类 Flink支持两种状态Keyed State和Operator State。两类状态又都包括原始状态row state和托管状态managed state。 原始状态:由用户自行管理状态具体的数据结构,框架在做checkpoint的时候,使用byte[]来读写状态内容,对其内部数据结构一无所知。当实现一个用户自定义的operator时,会使用到原始状态 托管状态是由Flink框架管 ...
Flink状态管理与Checkpoint机制(一)
何为状态? 计算任务的结果不仅仅依赖于输入,还依赖于它的当前状态,其实大多数的计算都是有状态的计算。比如wordcount,给一些word,其计算它的count,这是一个很常见的业务场景。count做为输出,在计算的过程中要不断的把输入累加到count上去,那么count就是一个state。 在批处理过程中,数据是划分为块分片去完成的,然后每一个Task去处理一个分片。当分片执行完成后,把输出聚合 ...
Flink-Watermark机制
watermark简介 watermark的概念 watermark是一种衡量Event Time进展的机制,它是数据本身的一个隐藏属性。通常基于Event Time的数据,自身都包含一个timestamp,例如1472693399700(2016-09-01 09:29:59.700),而这条数据的watermark时间则可能是: watermark(1472693399700) = 14726 ...
Flink广播状态
背景 有这样一个需求:flink或者spark任务需要访问数据库,或者用到表schema信息。但此时数据库中的字段有添加或者修改时(schama发生改变的时候),这时候任务就会失败。最直接的做法就是重启flink或spark任务,但该做法会对业务数据造成一定的影响。 方案:将改动的schema信息放入redis中,再通过broadcast广播的方式传送给数据流。 flink broadcast s ...
kafka本地安装
安装zookeeper 地址:zookeeper-3.4.14,下载后解压 进入zookeeper的相关设置所在的文件目录,例如本文的:D: \ …\zookeeper-3.4.10\conf 将"zoo_sample.cfg"重命名为"zoo.cfg" dataDir=/tmp/zookeeper to D:/ …/zookeeper-3. ...
Flink背压机制
背压产生的原因 流处理系统需要能优雅地处理反压(backpressure)问题。反压通常产生于这样的场景:短时负载高峰导致系统接收数据的速率远高于它处理数据的速率。许多日常问题都会导致反压,例如,垃圾回收停顿可能会导致流入的数据快速堆积,或者遇到大促或秒杀活动导致流量陡增。反压如果不能得到正确的处理,可能会导致资源耗尽甚至系统崩溃。 目前主流的流处理系统 Storm/JStorm/Spark St ...
拉链表
历史拉链表是一种数据模型,主要是针对数据仓库设计中表存储数据的方式而定义的。所谓历史拉链表,就是指记录一个事物从开始一直到当前状态的所有变化信息。拉所有记录链表可以避免按每一天存储造成的海量存储问题,同时也是处理缓慢变化数据的一种常见方式 一、应用场景 现假设有如下场景: 一个企业拥有5000万会员信息,每天有20万会员资料变更,需要在数仓中记录会员表的历史变化以备分析使用,即每天都要保留一 ...
深入理解Kafka副本机制
一、Kafka集群 Kafka 使用 Zookeeper 来维护集群成员 (brokers) 的信息。每个 broker 都有一个唯一标识 broker.id,用于标识自己在集群中的身份,可以在配置文件 server.properties 中进行配置,或者由程序自动生成。下面是 Kafka brokers 集群自动创建的过程: 每一个 broker 启动的时候,它会在 Zookeeper 的 ...
Kafka消费者详解
一、消费者和消费者群组 在 Kafka 中,消费者通常是消费者群组的一部分,多个消费者群组共同读取同一个主题时,彼此之间互不影响。Kafka 之所以要引入消费者群组这个概念是因为 Kafka 消费者经常会做一些高延迟的操作,比如把数据写到数据库或 HDFS ,或者进行耗时的计算,在这些情况下,单个消费者无法跟上数据生成的速度。此时可以增加更多的消费者,让它们分担负载,分别处理部分分区的消息,这就是 ...