Storm技术内幕与大数据实践 - (EPUB全文下载)
文件大小:0.19 mb。
文件格式:epub 格式。
书籍内容:
Storm技术内幕与大数据实践
第1章 绪论
第2章 实时平台介绍
第3章 Storm集群部署和配置
第4章 Storm内部剖析
第5章 Storm运维和监控
第6章 Storm的扩展
第7章 Storm开发
第8章 基于Storm的实时数据平台
第9章 大数据应用案例
第10章 Storm使用经验和性能优化
附录A Kafka原理
附录B 将Storm源码导入Eclipse
第1章 绪论
Apache Storm(http://storm.apache.org/)是由Twitter开源的分布式实时计算系统。Storm可以非常容易并且可靠地处理无限的数据流。对比Hadoop的批处理,Storm是一个实时的、分布式的、具备高容错的计算系统。Storm应用可以使用何编程语言来进行开发,并且非常有趣。
Storm的使用场景非常广泛,比如实时分析、在线机器学习、分布式RPC、ETL等。Storm非常高效,在一个多节点集群上每秒钟可以轻松处理上百万条的消息。Storm还具有良好的可扩展性和容错性以及保证数据可以至少被处理一次等特性。
图1-1中水龙头和后面水管组成的拓扑图就是一个Storm应用(Topology),其中的水龙头是Spout,用来源源不断地读取消息并发送出去,水管的每一个转接口就是一个Bolt,通过Stream分组的策略转发消息流。
图1-1 Topology图(来源http://storm.apache.org/)
1.1 Storm的基本组件
1.1.1 集群组成
Storm的集群表面上看和Hadoop的集群非常像。但是在Hadoop上运行的是MapReduce的作业(job),而在Storm上运行的是Topology。Storm和Hadoop一个非常关键的区别是Hadoop的MapReduce作业最终会结束,而Storm的Topology会一直运行(除非显式地杀掉它)。
如果说批处理的Hadoop需要一桶桶地搬走水,那么Storm就好比自来水水管,只要预先接好水管,然后打开水龙头,水就源源不断地流出来了,即消息就会被实时地处理。
在Storm的集群中有两种节点:主节点(Master Node)Nimbus和工作节点(Worker Node)Supervisor。Nimbus的作用类似于Hadoop中的JobTracker,Nimbus负责在集群中分发代码,分配工作给机器,并且监控状态。每个工作节点上运行一个Supervisor进程(类似于TaskTracker)。Supervisor会监听Nimbus分配给那台机器的工作,根据需要启动/关闭具体的Worker进程。每个Worker进程执行一个具体的Topology,Worker进程中的执行线程称为Executor,可以有一个或者多个。每个Executor中又可以包含一个或者多个Task。Task为Storm中最小的处理单元。一个运行的Topology由运行在一台或者多台工作节点上的Worker进程来完成具体的业务执行。Storm组件和Hadoop组件的对比参见表1-1。
表1-1 Storm组件和Hadoop组件对比
Storm
Hadoop
角色
Nimbus
JobTracker
Supervisor
TaskTracker
Worker
Child
应用名称
Topology
Job
编程接口
Spout/Bolt
Mapper/Reducer
Nimbus和Supervisor之间的通信依靠ZooKeeper完成,并且Nimbus进程和Supervisor都是快速失败(fail-fast)和无状态的,所有的状态要么在ZooKeeper里面,要么在本地磁盘上。这也就意味着你可以用kill -9来杀死Nimbus和Supervisor进程,然后再重启它们,它们可以继续工作,就好像什么都没有发生过似的。这个设计使得Storm具有非常高的稳定性。Storm的基本体系架构参见图1-2。
图1-2 Storm基本体系架构
1.1.2 核心概念
在Storm中有一些核心基本概念,包括Topology、Nimbus、Supervisor、Worker、Executor、Task、Spout、Bolt、Tuple、Stream、Stream分组(grouping)等,如表1-2所示。
表1-2 Storm组件基本概念
组 件
概 念
Topology
一个实时计算应用程序逻辑上被封装在Topology对象中,类似Hadoop中的作业。与作业不同的是,Topology会一直运行直到显式地杀死它
Nimbus
负责资源分配和任务调度,类似Hadoop中的JobTracker
Supervisor
负责接受Nimbus分配的任务,启动和停止属于自己管理的Worker进程,类似Hadoop中的TaskTracker
Worker
运行具体处理组件逻辑的进程
Executor
Storm 0.8之后,Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程,一个Executor中只能运行隶属于同一个Spout/Bolt的Task
Task
每一个Spout/Bolt具体要做的工作,也是各个节点之间进行分组的单位
Spout
在Topology中产生源数据流的组件。通常Spout获取数据源的数据(如Kafka、MQ等读取数据),然后调用nextTuple函数,发射数据供Bolt消费,参见图1-3
Bolt
在Topology中接受Spout的数据然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt在接收到消息后会调用execute函数,用户可以在其中执行自己想要的操作,参见图1-4
Tuple
消息传递的基本单元
Stream
源源不断传递的Tuple组成了Stream
Stream分组
............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Storm技术内幕与大数据实践 - (EPUB全文下载)