Hadoop(2.x)云计算生态系统

Checkpointing

检查点

Samza提供对流的容错性处理:Samza保证信息不会丢失,即使你的job崩溃,或者是一台机器down掉了,再或是网络故障,还是其他什么地方出了问题。为了提供这种保障,Samza期望的输入流系统,要能以满足以下要求:

  • 该流可以是分成一个或一个以上的分区。每个分区独立于其他分区,分区的副本在多台机器复制(流仍然可用,即使一台机器出现故障)。
  • 每个分区包含消息在一个固定的顺序的序列。每个消息的偏移量,这表明其在该序列的位置。消息总是每个分区中消耗的顺序。

  • 一个Samza作业可以从任何消息的位置序列开始处理消息。

kafka满足上面得要求,但并不意味着只有kafka。samza可以整合其他的message broker 系统。

我们描述一下SamzaContainer得处理场景,每个task实例将会消费一个输入流系统得一个分区,每个task都会保存每个分区当前处理得offset值。每一次处理一个消息,offset将往前移动一位。

如果SamzaContainer失败,需要重新启动能够恢复到处理失败的地方,为了能够做到这一点,需要SamzaContainer能够保存每个task实例当前处理的offset位置。