阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Spark Streaming与Storm 初步认识

210次阅读
没有评论

共计 2505 个字符,预计需要花费 7 分钟才能阅读完成。

Spark Streaming 与 Storm

Spark Streaming 与 Storm 初步认识

Spark Streaming 处于 Spark 生态技术栈中,可以和 Spark Core 和 Spark SQL 无缝整合;而 Storm 相对来说比较单一;

(一)概述

  • Spark Streaming

Spark Streaming 是 Spark 的核心 API 的一个扩展,可以实现高吞吐量、具有容错机制的实时流数据的处理。支持从多种数据源获取数据,包括 kafka、Flume、Twitter、ZeroMQ 以及 TCP 等,从数据获取之后,可以使用诸如 map、reduce、join、window 等高级函数进行复杂算法处理。最后还可以将处理结果存储到文件系统,数据库;还可以使用 Spark 的其他子框架,如图计算等,对流数据进行处理。

Spark Streaming 在内部的处理机制是,就收实时流的数据,并根据一定的时间间隔拆分成一批批的数据,然后处理这些批数据,最终得到处理后的一批结果数据。对应的批数据(batch data),在 Spark 内核对应一个 RDD 实例,因此,对流数据 DStream 可以看成是一组 RDDs。

执行流程(Receiver 模式):

Spark Streaming 与 Storm 初步认识

提高并行度:receiver task 会每隔 200ms block.interval 将接受来的数据分装到 block 中,调整 block.interval 的值;

启用多个 receiver 进程来并行接受数据;

对于 Direct 模式提高并行度的方式只需增加 kafka partition 的数量;Director 模式,消费者偏移量由 spark 自己管理,存在 checkpoint 目录中

  •  Storm

Spark Streaming 与 Storm 初步认识

storm 采用 Master/Slave 体系结构

nimbus:该进程运行在集群的主节点上,负责任务的指派和分发

supervisor:运行在集群的从节点上,负责执行任务的具体部分

zookeeper:帮助主从做到解耦,存储集群资源元数据,当 storm 把元数据信息都存到 zk 中后,那 storm 自己就做到了无状态,提交 Topology 应用的时候才会用到 nimbus;

worker:运行处理具体组件逻辑进程,worker 之间通过 netty 传送数据

task:worker 中每个 spout/bolt 的线程称为一个 task,同一个 spout/bolt 的 task 可能会共享一个物理进程,该线程为 executor

Spark Streaming 与 Storm 初步认识

以上由 spout 和 bolt 组成的图叫做 topologies,上层的 spout 或者 bolt 向下层的 Bolt 来发射数据的时候,默认情况下都是 default stream

    storm 常用的分发策略一共有 5 种,最常用的是 Shuffle grouping 和 Fields grouping

storm 中的 ack 机制:说白了就是 storm 通过 Acker 组件去数数,数 Tuple tree 里面的 Tuple 是否都已经确认过,每个 Tuple Tree 对应一个 msgId

  提高并行度:

增加 worker 数量;增加 Executor 数量;设置 task 数量,默认一个线程里面跑一个 task

Storm 实现可靠的消息保障机制:

Spark Streaming 与 Storm 初步认识

Tuple 的完全处理需要 Spout、Bolt 以及 Acker(Storm 中用来记录某棵 Tuple 树是否被完全处理的节点)协同完成,如上图所示。从 Spout 发送 Tuple 到下游,并把相应信息通知给 Acker,整棵 Tuple 树中某个 Tuple 被成功处理了都会通知 Acker,待整棵 Tuple 树都被处理完成之后,Acker 将成功处理信息返回给 Spout;如果某个 Tuple 处理失败,或者超时,Acker 将会给 Spout 发送一个处理失败的消息,Spout 根据 Acker 的返回信息以及用户对消息保证机制的选择判断是否需要进行消息重传。

更多 Spark 相关教程见以下内容

CentOS 7.0 下安装并配置 Spark  http://www.linuxidc.com/Linux/2015-08/122284.htm

Ubuntu 系统搭建单机 Spark 注意事项  http://www.linuxidc.com/Linux/2017-10/147220.htm

Spark1.0.0 部署指南 http://www.linuxidc.com/Linux/2014-07/104304.htm

Spark2.0 安装配置文档  http://www.linuxidc.com/Linux/2016-09/135352.htm

Spark 1.5、Hadoop 2.7 集群环境搭建  http://www.linuxidc.com/Linux/2016-09/135067.htm

Spark 官方文档 – 中文翻译  http://www.linuxidc.com/Linux/2016-04/130621.htm

在 Ubuntu 17.10 上安装 Apache Spark  http://www.linuxidc.com/Linux/2017-12/149853.htm

CentOS 6.2(64 位)下安装 Spark0.8.0 详细记录 http://www.linuxidc.com/Linux/2014-06/102583.htm

Spark-2.2.0 安装和部署详解  http://www.linuxidc.com/Linux/2017-08/146215.htm

Spark2.0.2 Hadoop2.6.4 全分布式配置详解 http://www.linuxidc.com/Linux/2016-11/137367.htm

Ubuntu 14.04 LTS 安装 Spark 1.6.0(伪分布式)http://www.linuxidc.com/Linux/2016-03/129068.htm

Spark 的详细介绍:请点这里
Spark 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2018-02/150887.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2505字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中