首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大数据系列之Strom分布式的大数据实时计算系统

大数据系列之Strom分布式的大数据实时计算系统

Storm是一个分布式的大数据实时计算系统,是开源的。

优点

分布式 可扩展性

高可靠性 容错性

快速 系统的设计保证了消息能得到快速的处理,zeroMQ作为其底层消息队列

高效实时

编程模型简单

可靠的消息处理

支持多种编程语言

Strom中常用的核心概念及架构

在Storm中有一些核心基本概念,包括Topology、Nimbus、Supervisor、Worker、Executor、Task、Spout、Bolt、Tuple、Stream、Stream分组(grouping)等。

Topology 一个实时计算应用程序逻辑上被封装在Topology对象中,类似Hadoop中的作业。与作业不同的是,Topology会一直运行直到显式地杀死它。

Nimbus 负责资源分配和任务调度

Supervisor 负责接受Nimbus分配的任务,启动和停止属于自己管理的Worker进程

Worker 运行具体处理组件逻辑的进程

Executor Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程, 一个Executor中只能运行隶属于同一个Spout/Bolt的Task

Task 每一个Spout/Bolt具体要做的工作,也是各个节点之间进行分组的单位

Spout Spout获取数据源的数据,然后调用nextTuple函数,发射数据供Bolt消费

Bolt 接受Spout的数据然后执行处理的组件,Bolt可以执行过滤,函数操作,合并,写数据库等任何操作。 Bolt在接收到消息后会调用execute函数,用户可在其中执行自己想要的操作

Tuple 消息传递的基本单元

Stream 源源不断传递的Tuple组成了Stream。

Stream分组:即消息的分区(partition)方法。Storm中提供若干种实用的分组方式。包括Shuffle、Fields、All、Global、None、Direct、Local or shuffle等。

Shuffle Grouping:随机分组,随机派发stream里面的tuple,保证每个bolt接收到的tuple数目相同。

Fields Grouping:按字段分组,比如按userid来分组,具有同样userid的tuple会被分到相同的Bolts,而不同的userid则会被分配到不同的Bolts。

All Grouping:广播发送,对于每一个tuple,所有的Bolts都会收到。

Global Grouping: 全局分组,这个tuple被分配到storm中的一个bolt的其中一个task。再具体一点就是分配给id值最低的那个task。

Non Grouping:不分组,这个分组的意思是说stream不关心到底谁会收到它的tuple。目前这种分组和Shuffle grouping是一样的效果,有一点不同的是storm会把这个bolt放到这个bolt的订阅者同一个线程里面去执行。

Direct Grouping:直接分组, 这是一种比较特别的分组方法,用这种分组意味着消息的发送者指定由消息接收者的哪个task处理这个消息。只有被声明为Direct Stream的消息流可以声明这种分组方法。而且这种消息tuple必须使用emitDirect方法来发射。消息处理者可以通过TopologyContext来获取处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)

使用场景

数据的实时,持续计算,分布式RPC等

喜欢就关注小编,小编天天写,你也可以进步一点点

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180208A0IPNA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券