这一页提供了关于流处理的背景知识,描述什么是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. asp.net运行原理(一)总体概要

     1.浏览器发送请求报文到服务器,服务器接收到请求之后,根据请求报文头(url地址)的后缀名解析. 2.以iis服务器为例.他分为两种模式,经典模式和集成模式.主要是经典模式会将请求报文通过aspne ...

  2. NSUserDefaults存储自定义对象

    场景是这样的: 现在有一个数组如下,数组中存放着自定义的对象GoodscCategory <__NSArrayM 0x7ffb9c2032b0>( <GoodscCategory: ...

  3. 【转】简单理解socket

    题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...

  4. 利用mysqld_multi启动管理多实例

    利用mysqld_multi启动管理多实例 官方管理多实例的一个脚本peer #将之前的目录清空 [root@mysql01 mysql]# tree /data/mysql/ /data/mysql ...

  5. position containing block原点

    如果元素有属性 'position:absolute',containing block 由最近的 position 不是 static 的祖先建立,按下面的步骤:        1.如果祖先是块级元 ...

  6. 在Windows 7下面IIS7的安装和 配置ASP的正确方法

    在Windows 7下如何安装IIS7,以及IIS7在安装过程中的一些需要注意的设置,以及在IIS7下配置ASP的正确方法. 一.进入Windows 7的 控制面板,选择左侧的打开或关闭Windows ...

  7. Scrapy简介

    什么是Scrapy? Scrapy是一个快速.高级的爬行器和网页抓取框架,用来抓取网站和提取网页中结构化的数据.它被广泛的使用于监控数据采集和自动化测试. 参考:http://scrapy.org/

  8. 解决Strict Standards: Only variables should be passed by reference

    这个错误发生在大家php调试程序用到一段代码里,那就是格式化显示出变量的函数functionrdump($arr)的第5行, 这段代码出自ecmall团队之手,但是ecmall已经很古董了,在php5 ...

  9. 开始学习python

    刚刚离开学校,到公司实习,发现所有的技术都是崭新的,所有的工具都是熟悉中带着陌生. 就像是孤身一人到了一个曾经只闻其名的偌大城市,看什么都觉得新鲜,做什么都心有畏惧.幸好 搞软件并没有那么多人情世故, ...

  10. IIs上MP4、及SVG格式加载失败解决方式

    部署项目是遇到网页播放mp4文件时候,MP4文件不能加载的问题.那是因为IIS上MIME类型中没有添加MP4的格式,添加一下即可. 解决方案: 1.在IIS上选中你的网站,然后点击右边的MIME类型, ...