大数据: Week 4 处理大型数据流

数据流的用例

什么是流(Streaming)
•到目前为止,我们真的只是在谈论处理历史的,现有的大数据
•在HDFS上
•在数据库中

•但是新数据如何进入您的集群? 尤其是如果它是“大数据”?
•流使您可以将这些数据实时发布到您的群集中
•您甚至可以实时处理传入的数据
特点:
•数据流:
分布式,
连续,
无界,
快速,
时变,
嘈杂。 。 。

用例
•数据流管理:各种现代应用程序
•网络监控和流量工程
•传感器网络
•电信呼叫详细记录
•网络安全
•金融应用程序
•制造过程
•Web日志和点击流
•其他海量数据集…

海量数据流

•数据的增长速度远远超过我们存储或索引数据的能力
•每天在美国有30亿个电话,每天300亿封电子邮件,10亿条SMS和IM
•科学数据:NASA的观测卫星每天产生数十亿个读数
• IP网络流量:每个路由器每小时最多10亿个数据包。 每个ISP都有许多(数百个)路由器!
•现在可以使用许多物种的全基因组序列:每个兆字节到千兆字节

海量数据流分析

•科学研究(监控环境,种类)
•系统管理(现场故障,掉落,故障)
•商业智能(营销规则,新优惠)
•用于收入保护(电话欺诈,服务滥用)

传感器网络

•无线传感器网络在环境监测,军事应用中变得无处不在…
•散布在地形上的许多(100s,103、106?)传感器
•传感器观察并处理本地读数流:
-测量光,温度,压力。 。
-检测信号,运动,辐射…
-记录音频,图像,运动…

传感器网络查询应用

•通过(远程)基站查询传感器网络

•传感器节点存在严重的资源限制

•电池电量,内存,处理器,无线电范围有限…

•通信是电池消耗的主要来源

•“传输单个数据相当于800条指令”[Madden et al.’02]

应用需求

•大量数据•实时处理•连续•触发动作和信息

Apache Storm——通过计算节点的数据流

大数据: Week 4 处理大型数据流_第1张图片
•分布式和容错的实时计算系统,用于处理无限的流数据
•内置于Twitter
•实时分析
•不像Hadoop那样进行批处理
•定义拓扑:计算图
•消耗数据流并处理这些流 任意复杂的方式,根据需要重新分配流

Storm vs Hadoop

大数据: Week 4 处理大型数据流_第2张图片
•两种节点:Spout和Bolt
•Spout:数据流源
•Bolt:处理输入流并输出新流
•节点并行执行

喷口(Spout)
•数据源,例如Twitter Streaming API
•Kafka队列(请参阅下文)
•从数据源读取
螺栓(Bolt)
•过滤,聚合,联接操作
•与其他数据源(例如数据库)进行交互
拓扑结构(Topology)
•有向图是顶点,计算是边 数据流
•始终分布在多个工作节点上并等待作业进行处理
•多个节点可以执行一个螺栓并共享一部分数据•拓扑由主节点(称为Nimbus)运行,将任务分配给节点

Apache Kafka

•由LinkedIn最初构建(2011年开源)
•Kafka是一种通用的发布/订阅消息传递系统
•Kafka服务器存储来自发布者的所有传入消息一段时间,并将它们发布到称为主题的数据流中。 Kafka使用者订阅一个或多个主题,并在发布时接收数据
•一个流/主题可以有许多不同的使用者,所有这些使用者在流中的位置都得到维护
•不仅限于Hadoop。

发布/订阅模式

•将数据广播到多个进程
•生产者:发布数据流
•消费者:订阅流
•流处理器:消费并产生新的流

处理
•生产者写入连续记录的序列
•序列在集群中进行分区和分布以按比例缩放
•复制分区以实现容错性
•仅在分区内维护订单!
•Kafka集群在预定的保留期内保留所有已发布的记录 (例如2天)
•消费者使用偏移信息阅读内容

SparkStreaming

•扩展了核心Spark(自2013年起)
•处理来自不同数据源的实时数据
•数据流被分成小批(离散流– DStream)
•基于RDDs
•可以与其他Spark组件无缝集成
•可扩展,高性能 吞吐量,实时数据流的容错流处理

Spark Streaming -数据源

•Kafka
•最受欢迎(或更旧)
•高吞吐量(20k msg / sec)

•Apache Flume
•从网络服务器流式传输事件日志数据(网页访问,点击)
•分布式/高可用性

•Kinesis
Amazon AWS解决方案(自 2013)

流表示为一系列RDD

Spark Streaming -流处理
•以较小的时间间隔(流上的窗口)进行一系列批处理计算
•Spark Streaming接收实时输入数据流
•将数据划分为批处理
•Spark引擎处理批处理

大数据: Week 4 处理大型数据流_第3张图片
离散流Discretized Streams (DStreams)

•连续的数据流

•来自源
•转换输入文件

•DStream由一系列连续的RDD表示

•每个RDD都具有一定间隔的数据

•弹性分布式数据集(RDD)

•保留数据在内存中
•无需复制即可恢复( 跟踪用于构建它的操作的沿袭图)

你可能感兴趣的:(大数据)