这一页提供了关于流处理的背景知识,描述什么是Samza,以及它为何而生。

what is messaging?什么叫消息?

消息系统是用来实现近实时异步计算的一种流行方式。当事件发生时,消息可以被放在消息队列里(ActiveMQ, RabbitMQ),发布-订阅系统(Kestrel, Kafka)里,或者日志汇集系统(Flume,Scribe)里。下游的消费者从这些系统里读消息,进行处理,或者根据消息内容采取行动。
 
假如你有一个网站,并且每次有人加载一个网页,就发送发一个"用户查看了页面"的消息到消息系统。你可能会有做以下任意事情的consumer:
  • 把消息存储到Hadoop,用来以后分析
  • 计算页面访问量并且更新到dashboard
  • 如果页面访问失败,触发一个警报Background
  • 发送一个电子邮件通知另一个用户
  • 把页面访问事件和用户的档案合在一起,把合并后的消息发回给消息系统
一个消息系统使你将以上的工作和实际的网页服务解耦合。
 

What is stream processing?  什么叫流处理

 
一个消息系统是相当低层级一部分基础设施——它存储消息,等待consumers来消费它。当你开始写代码来生产或消费消息,你很快就会发现在处理层有很多难对付的问题。Samza的目标就是帮助解决这些问题。
 
用上面的网页访问计数的例子(计算访问量,然后更新dashboard)来说。你的消费者运行在的机器出现故障,并且你当前的计数器的值丢失了,将会发生什么?你怎么来恢复?当处理程序重启时,它应该在哪运行?如果底层的消息系统发送给你两次同样的消息,或者丢失一个消息,应该怎么办?(除非你很小心,否则你的计数器可能就不正确了)。如果单独一台机器没有足够的计算能力,你怎么把计算分布到多台机器上。
 
流处理是消息系统之上的更高级别的抽象,它就是用来精确地解决这一类问题。
 

Samza

 
samza是一个流处理框架,它有以下特性:
  • 简单的API:不像大多数低层级的消息系统的API,Samza提供了一个非常简单的,基于回调的 “消息处理”  API,和MapReduce类似。
  • 受控的状态:Samza管理“流处理器”的快照和恢复。当一个流处理器重启,Samza会恢复它的状态到一个一致的快照。Samza被构建来处理大规模的状态(每个分区数GB).
  • 容错:当集群中的任何一个机器发生故障,Samza和YARN一起透明地迁移你的task到另一台机器。
  • Durability持久性: Samza使用Kafka来保证消息按照他们写入一个partition的顺序被处理,并且不会有消息丢失。
  • Scalability可扩展:Samza在各个层面上都是分区的以及分布式的。Kafka提供了有序的、分区的、可回放的、容错的消息流。YARN提供给Samza容器一个分布式的环境来运行。
  • Pluggable可插拔的:虽然Samza自带对Kafka和YARN的支持,但是Samza同时提供了可插拔的API来让你在别的消息系统和运行环境中运行Samza。
  • Processor isolation处理器隔离:Samza与Apache YARN一起工作。YARN提供了Hadoop的安全模型,以及利用Linux CGruops的资源隔离。

其它选择

 
现在可用的开源流处理系统都实际上非常新,没有一个单独的系统提供了所有的解决方案。这个领域的新问题包括:怎么管理流处理器的状态?是否一个流应该被远程缓存在硬盘上?当重复的消息被接收或者消息丢失时应该怎么做?怎么对底层的消息系统建模?
 
Samza的主要区分点在于:
  • Samza支持本地状态的容错。状态可以被想象成一些表,它们被分成很多块,和各个处理工作分布到一起。状态本身被建模成一个流。如果本地状态由于机器故障丢失,状态流就会被回放,以重建它。
  • 流是有序的、分区的、可以回放的、容错的
  • YARN被用来做处理器隔离、安全、以及容错
  • 任务之间是解耦合的:如果一个job很慢,积压了一些未处理的消息,其它的系统不会受影响。
如果想要一个对Smaza更深层的讨论,以及它和其它的流处理系统的关系,看一下Samza的Comparision文档吧。

Samza文档翻译 : Backgroud的更多相关文章

  1. Samza文档翻译 : Comparison Introduction

    http://samza.incubator.apache.org/learn/documentation/0.7.0/comparisons/introduction.html 这里有一些使得Sam ...

  2. Samza文档翻译 : Architecture

    http://samza.incubator.apache.org/learn/documentation/0.7.0/introduction/architecture.html Samza由三层组 ...

  3. Samza文档翻译 : Concepts

    此页介绍啊Samza的一些高层级概念. Streams Samza处理Streams(流).流由同一类型的不可变的消息组成.例如,一个流可以是对一个网站的所有点击,或者对一个数据库表的所有更新,或者一 ...

  4. 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的

    感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...

  5. Hibernate 3.3.2 文档翻译 Day01

    Hibernate 3.3.2 文档翻译 翻译人:微冷的雨 第一次书写:2015年11月29日 本人呕心沥血之作,请细心阅读领悟! Day01-1.1 项目描述 微冷的雨翻译:例如,我们将要建立一个可 ...

  6. 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 ...

  7. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...

  8. 流式大数据处理的三种框架:Storm,Spark和Samza

    许多分布式计算系统都可以实时或接近实时地处理大数据流.本文将对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异同. Apache Storm 在Storm中,先要设计一个用于实时计算的 ...

  9. SQLAlchemy 中文文档翻译计划

    SQLAlchemy 中文文档翻译计划已启动. Python 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质.交流群:467338606. 希望大家能够勇敢地去翻译和改进翻译.虽然我 ...

随机推荐

  1. Linux环境下Websphere重启

    一.Websphere控制台重启 1.更新class文件发布,Websphere自动重启. 2.更新web.xml发布,需要手动更新web.xml或者更新项目. web.config 缓存位置: We ...

  2. ### 学习《C++ Primer》- 9

    Part 9: 模板与泛型编程(第16章) // @author: gr // @date: 2016-03-18 // @email: forgerui@gmail.com 1. 模板参数 类型模板 ...

  3. Cocos2d-x优化中图片优化

    在2D游戏中图片无疑是最为重要的资源文件,它会被加载到内存中转换为纹理,由GPU贴在精灵之上渲染出来.它能够优化的方面很多,包括:图片格式.拼图和纹理格式等,下面我们从这几个方面介绍一下图片和纹理的优 ...

  4. Cocos2d-x实例:设置背景音乐与音效-设置场景实现

    设置场景(Setting),Setting.h文件代码如下: #ifndef __Setting_SCENE_H__ #define __Setting_SCENE_H__ #include &quo ...

  5. 给label text 上色 && 给textfiled placeholder 上色

    1.给label text 上色: NSInteger stringLength = ; stringLength = model.ToUserNickName.length; NSMutableAt ...

  6. Objective-C 【单个对象内存管理(野指针&内存泄露)】

    ------------------------------------------- 单个对象内存管理 (1)野指针 ①定义了一个指针变量,但是并没有赋初值,它随机指向一个东西 ②某指针变量指向的内 ...

  7. 关于html5 -- plus Webview模块管理应用窗口界面

    Webview模块管理应用窗口界面,通过plus.webview可获取应用界面管理对象. 方法: all:获取所有的webview窗口 close:关闭webview窗口 create:创建新的web ...

  8. Android Handler 原理

    在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知 handler基本使用: 在主线程中,使用handler很简单,new一个Handle ...

  9. Linux系统下安装rz/sz命令及使用说明(转载)

    对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令.今天,我们 ...

  10. Ajax 之【文件上传】

    // 前台 var formData = new FormData(); var file = document.getElementById('myFile').files[0]; formData ...