Linkedin Samza

Samza CheckPoint

A checkpoint is a mapping of all the streams a job is consuming and the most recent current offset for each. From org.apache.samza.checkpoint.CheckPoint.java

Samza提供一种容错的流式处理机制

数据流流可能会订阅一个或者多个分区  分区之间彼此独立且可以相互复制

每个分区认为是消息的有序序列

每个消息有一个指定序列位置的offset


如果samza container挂了,需要重启并且从流处理失败的点恢复


配置参数:

Samza job中配置文件定义一个job,如下所示:

# Job
job.factory.class=samza.job.local.LocalJobFactory
job.name=hello-world

# Task
task.class=samza.task.example.MyJavaStreamerTask
task.inputs=example-system.example-stream

# Serializers
serializers.registry.json.class=org.apache.samza.serializers.JsonSerdeFactory
serializers.registry.string.class=org.apache.samza.serializers.StringSerdeFactory

# Systems
systems.example-system.samza.factory=samza.stream.example.ExampleConsumerFactory
systems.example-system.samza.key.serde=string
systems.example-system.samza.msg.serde=json

配置文件主要由四部分组成:

job部分:job名称以及使用YarnJobFactory or LocalJobFactory.

task部分:指定stream-task,指定input-stream

serializers部分:指定序列化&反序列化机制

system部分:指定StreamTask可以读取的键值类型


找到了一份儿完整的配置列表:

http://samza.incubator.apache.org/learn/documentation/0.7.0/jobs/configuration-table.html


samza实现流处理方法必须实现StreamTask接口

package org.darion.samza;

import org.apache.samza.system.IncomingMessageEnvelope;
import org.apache.samza.task.MessageCollector;
import org.apache.samza.task.StreamTask;
import org.apache.samza.task.TaskCoordinator;

public class TestTask implements StreamTask {

	public void process(IncomingMessageEnvelope arg0, MessageCollector arg1,
			TaskCoordinator arg2) throws Exception {
		
	}

}




package org.darion.samza;

import org.apache.samza.Partition;
import org.apache.samza.system.SystemStream;

public class SystemStreamPartition extends SystemStream {

	public String getSystem() {
	}

	public String getStream() {
	}

	public Partition getPartition() {
	}
}



未完待续……  



你可能感兴趣的:(Samza)