Samza框架-----学习笔记
2018-03-23 20:59
218 查看
基本概念:
作业:是对一组输入流进行处理转化成输出流的程序。
分区:
Samza的流数据单位既不是Storm中的元组,也不是Spark Streaming中的DStream,而是一条条消息;
Samza中的每个流都被分割成一个或多个分区,对于流里的每一个分区而言,都是一个有序的消息序列,后续到达的消息会根据一定规则被追加到其中一个分区里;
任务:
一个作业会被进一步分割成多个任务(Task)来执行,其中,每个任务负责处理作业中的一个分区
分区之间没有定义顺序,从而允许每一个任务独立执行
YARN调度器负责把任务分发给各个机器,最终,一个工作中的多个任务会被分发到多个机器进行分布式并行处理
数据流图:
一个数据流图是由多个作业构成的,其中,图中的每个节点表示包含数据的流,每条边表示数据传输
多个作业串联起来就完成了流式的数据处理流程
由于采用了异步的消息订阅分发机制,不同任务之间可以独立运行
Samza系统架构主要包括:
处理分析过程:
1.Samza客户端需要执行一个Samza作业时,它会向YARN的ResouceManager提交作业请求
2.ResouceManager通过与NodeManager沟通为该作业分配容器(包含了CPU、内存等资源)来运行Samza ApplicationMaster
3.Samza ApplicationMaster进一步向ResourceManager申请运行任务的容器
4.获得容器后,Samza ApplicationMaster与容器所在的NodeManager沟通,启动该容器,并在其中运行Samza Task Runner
5.Samza Task Runner负责执行具体的Samza任务,完成流数据处理分析;
Storm、Spark Streaming和Samza的应用场景:
从编程的灵活性来讲,Storm是比较理想的选择,它使用Apache Thrift,可以用任何编程语言来编写拓扑结构(Topology)
当需要在一个集群中把流计算和图计算、机器学习、SQL查询分析等进行结合时,可以选择Spark Streaming,因为,在Spark上可以统一部署Spark SQL,Spark Streaming、MLlib,GraphX等组件,提供便捷的一体化编程模型
当有大量的状态需要处理时,比如每个分区都有数十亿个元组,则可以选择Samza。当应用场景需要毫秒级响应时,可以选择Storm和Samza,因为Spark Streaming无法实现毫秒级的流计算;
作业:是对一组输入流进行处理转化成输出流的程序。
分区:
Samza的流数据单位既不是Storm中的元组,也不是Spark Streaming中的DStream,而是一条条消息;
Samza中的每个流都被分割成一个或多个分区,对于流里的每一个分区而言,都是一个有序的消息序列,后续到达的消息会根据一定规则被追加到其中一个分区里;
任务:
一个作业会被进一步分割成多个任务(Task)来执行,其中,每个任务负责处理作业中的一个分区
分区之间没有定义顺序,从而允许每一个任务独立执行
YARN调度器负责把任务分发给各个机器,最终,一个工作中的多个任务会被分发到多个机器进行分布式并行处理
数据流图:
一个数据流图是由多个作业构成的,其中,图中的每个节点表示包含数据的流,每条边表示数据传输
多个作业串联起来就完成了流式的数据处理流程
由于采用了异步的消息订阅分发机制,不同任务之间可以独立运行
Samza系统架构主要包括:
处理分析过程:
1.Samza客户端需要执行一个Samza作业时,它会向YARN的ResouceManager提交作业请求
2.ResouceManager通过与NodeManager沟通为该作业分配容器(包含了CPU、内存等资源)来运行Samza ApplicationMaster
3.Samza ApplicationMaster进一步向ResourceManager申请运行任务的容器
4.获得容器后,Samza ApplicationMaster与容器所在的NodeManager沟通,启动该容器,并在其中运行Samza Task Runner
5.Samza Task Runner负责执行具体的Samza任务,完成流数据处理分析;
Storm、Spark Streaming和Samza的应用场景:
从编程的灵活性来讲,Storm是比较理想的选择,它使用Apache Thrift,可以用任何编程语言来编写拓扑结构(Topology)
当需要在一个集群中把流计算和图计算、机器学习、SQL查询分析等进行结合时,可以选择Spark Streaming,因为,在Spark上可以统一部署Spark SQL,Spark Streaming、MLlib,GraphX等组件,提供便捷的一体化编程模型
当有大量的状态需要处理时,比如每个分区都有数十亿个元组,则可以选择Samza。当应用场景需要毫秒级响应时,可以选择Storm和Samza,因为Spark Streaming无法实现毫秒级的流计算;
相关文章推荐
- 框架学习笔记:Unity3D的MVC框架——StrangeIoC
- ROS学习笔记(一)----ROS的框架
- 学习笔记之Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用
- YUI 框架学习笔记, RSS 阅读器 - 2
- 黑马程序员java学习笔记——集合框架
- OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)
- 学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(六)
- Java框架spring 学习笔记(九):Spring的bean管理(@Required、@Component、@Autowired、@Resource注解)
- Hadoop学习笔记:MapReduce框架详解
- Cas(单点登录框架)的学习笔记
- Python框架之Django学习笔记(二)
- Hibernate框架学习笔记 lesson4
- 黑马程序员学习笔记-OC之foundation框架
- Hadoop学习笔记:MapReduce框架详解
- 深度学习笔记——深度学习框架TensorFlow(一)
- SpringMVC框架学习笔记——各种异常、报错解决
- 作业调度框架 Quartz 学习笔记(五) -- 错过的任务怎么办?
- 【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用
- Java框架spring 学习笔记(十二):aop实例操作
- ASP.NET MVC2框架验证学习笔记