Samza文档翻译 : Concepts
此页介绍啊Samza的一些高层级概念。
Streams
Samza处理Streams(流)。流由同一类型的不可变的消息组成。例如,一个流可以是对一个网站的所有点击,或者对一个数据库表的所有更新,或者一个服务产生的所有日志,或者其它类型的消息数据。消息可以被追加到一个流上或者从一个流读出来。一个流可以有任意数量的消费者,并且从一个流读消息并不会把消息从其中删除(所有每息都可以有效地广播到其它消费者)。消息可以有选择地拥有一个相关连的key用做分区partitioning,分区的问题接下来会提到。
Samza支持实现了流这种抽象的pluggable系统:对Kafka,一个流就是一个topic,对于数据库,我们可以消费对一个数据表的更新从而得到一个流,对Hadoop我们可以tail HDFS中的一个目录下的文件。

Jobs
一个Samza job是一些代码,它们用来对一些输入流做逻辑转换,然后把输出的消息追加到一些输出流里。
如果我们不关心可扩展性,我们就只需要streams和jobs。但是,为了扩展流处理器stream processor的吞吐量,我们把streams和jobs切成更小的并行工作的单元:partitions和tasks.
Partitions
每个流被分成一个或更多分区。流中的每个分区都是一个有序的消息序列。
序列中的每条消息都有一个叫做offset的标识,offset在每个partition中是唯一的。offset可以是连续的整数,字节偏移量,或者依赖于底层系统的字符串。
当一个消息被附加到一个流上,它被附加到这个流的一个分区里。从消息到分区的分配由消息生成者提供的一个key来完成。例如,如果用户ID被用来做key,那么就可以使得一个用户相关的所有消息都被送到同一个分区里。

Tasks
一个job通过分成多个task来扩展。task是job并行执行的单元,就像partition是stream的并行单元。每个task消费这个job的一系列输入流中每一个流的一个分区。
一个task从它的每一个输入分区中顺序处理消息,按照message的offset的顺序。在partition之间没有确定的顺序。这使得每个task可以独立操作。YARN调度器把每个task分配到机器,所以每个job做为一个整体被分布到多台机器上。
job里边task的数量由输入的parition的数量决定(不能有比输入的partition更多的task, 否则会有一些task没有输入)。你可以调整分配给一个job的计算资源(内存大小 、 CPU的核数,等)来满足job的需要。详见下边对container的描述。
task和partition之间的分配永远不会改变:如果某个机器上的task失败了,这个task会在别的地方重启,它还会继续消费同样的流的分区。

Dataflow Graphs
我们可以把多个job组在一起来创建一个dataflow graph。这个数据流图中,节点是包含了数据的stream,边是进行转换的jobs。这种组合完全通过job的输入输出流来实现。这些job的其它方面是完全解耦合的:它们不需要由同样的代码基础实现,并且对下游job的增加、移除、重启都不会影响上游的job。
这些graph通常都是无环的——数据通常不是从一个job出来,经过其它的job,回到它自己。但是,如果你需要,也可以创建有环图。

Containers
partition和task都是并行的逻辑单元,它们并不和任何对计算资源(CPU、内存、磁盘空间等)的特定分配有关。Container是物理并行的单元,一个container本质上是一个Unix进程(或Linux cgroup)。每个container运行一个或多个tasks。task的数目由输入的partition 的数目自动决定,并且是固定的。但是container的数量(以及与其相关联的CPU和存储资源)由用户在运行时指定的,并且任何时候都可以改变。
下一节 Architecture
Samza文档翻译 : Concepts的更多相关文章
- Samza文档翻译 : Comparison Introduction
http://samza.incubator.apache.org/learn/documentation/0.7.0/comparisons/introduction.html 这里有一些使得Sam ...
- Samza文档翻译 : Architecture
http://samza.incubator.apache.org/learn/documentation/0.7.0/introduction/architecture.html Samza由三层组 ...
- Samza文档翻译 : Backgroud
这一页提供了关于流处理的背景知识,描述什么是Samza,以及它为何而生. what is messaging?什么叫消息? 消息系统是用来实现近实时异步计算的一种流行方式.当事件发生时,消息可以被放在 ...
- Flink官网文档翻译
http://ifeve.com/flink-quick-start/ http://vinoyang.com/2016/05/02/flink-concepts/ http://wuchong.me ...
- Apache Samza - Reliable Stream Processing atop Apache Kafka and Hadoop YARN
http://engineering.linkedin.com/data-streams/apache-samza-linkedins-real-time-stream-processing-fram ...
- 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的
感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...
- 新书到手 TRANSACTION PROCESSING:CONCEPTS AND TECHNIQUES
新书到手 TRANSACTION PROCESSING:CONCEPTS AND TECHNIQUES Jim Gray大神的著作 本文版权归作者所有,未经作者同意不得转载.
- Hibernate 3.3.2 文档翻译 Day01
Hibernate 3.3.2 文档翻译 翻译人:微冷的雨 第一次书写:2015年11月29日 本人呕心沥血之作,请细心阅读领悟! Day01-1.1 项目描述 微冷的雨翻译:例如,我们将要建立一个可 ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点
Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...
随机推荐
- Android经验之谈1
豌豆荚等可能会导致手机网络出现问题,电话打不进来,所以需要及时卸载豌豆荚. 系统apk,不能通过在manifest.xml里面添加origin-package或者useid等来改变. 而是需要用and ...
- Python基础-简单输出
很好的一个博客地址:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316 ...
- 【转】C#实现二叉查找树
原文URL: http://www.cnblogs.com/CareySon/archive/2012/04/19/ImpleBinaryTreeWithCSharp.html 简介 树是一种非线 ...
- js实现跨域(jsonp, iframe+window.name, iframe+window.domain, iframe+window.postMessage)
一.浏览器同源策略 首先我们需要了解一下浏览器的同源策略,关于同源策略可以仔细看看知乎上的一个解释.传送门 总之:同协议,domain(或ip),同端口视为同一个域,一个域内的脚本仅仅具有本域内的权限 ...
- Java多线程(一) 多线程的基本使用
在总结JDBC数据库连接池的时候,发现Java多线程这块掌握得不是很好,因此回头看了下多线程的内容.做一下多线程模块的学习和总结,稳固一下多线程这块的基础.关于多线程的一些理论知识,这里不想啰嗦太多, ...
- 《APUE》第6章练习1
问题:编写一个程序,它调用uname并输出utsname结构中的所有字段,并将输出与uname(1)命令的输出结构做比较. 我本来以为utsname结构也跟passwd结构一样,也有那三个函数来获取整 ...
- linux centos 安装
本着学习的目的,在自己的电脑上进行 centos 7 安装,记录下这步骤以备忘. 一.Centos 下载 centos 官方(https://www.centos.org/)下载ISO镜像(这是我的下 ...
- 基于Golang的游戏服务器框架cellnet开发日记(二)
看官们肯定还有大部分不是很熟悉Actor模型. 我这里基于Erlang, Skynet等语言和框架库来实战型解释下Actor模型. Actor概念 Actor模型和OO类似, 都是符合人的思维模式进 ...
- 解决 Chrome 浏览器自动调整小于11px字体的问题
不知道说是 Chrome 智能呢?还是说它多此一举?Chrome 浏览器中存在默认会自动将小于11px大小的字体调整为12px.我在写 BlueNight 主题的最新评论时候就设置了评论发布时间为11 ...
- lnmp安装--php安装
版本:php5.6.4 x86_64 centos 6.6 x86_64 安装php之所以难,是因为要安装的扩展多,依赖关系复杂. 安装前的准备: 先看你想要安装哪些扩展.需要哪些包.下载地址:htt ...