Spark小课堂Week2 Hello Streaming
Spark小课堂Week2 Hello Streaming
我们是怎么进行数据处理的?
- 批量方式处理
目前最常采用的是批量方式处理,指非工作时间运行,定时或者事件触发。这种方式的好处是逻辑简单,不影响联机业务,但是性能不行。
- 理想方式
对于数据处理的问题,我们的最终理想解,应该是满足业务规则正确的情况下,实时的完成处理。
- 平衡点
理想方式难度比较高,批量方式往往又不给力,我们可以在批量方式和理想方式中间,找到一个平衡点,就是流处理。
流处理
我们的理想情况是当不断有数据进来,就不断的进行处理。
这样处理未必是效率最优,所以我们可以抽象出一个Batch的概念,Batch是指以某种方式切分出了的一块块的数据。
流处理是基于Batch来处理的,而在SparkStreaming中切分Batch的依据是时间。

Batch变大,计算成本会降低,但是延时会提高,所以在流处理中有一个核心问题是需要选择最合适的Batch粒度,目标是整体的处理时间最优。
相比于批量处理,流处理下我们会碰到一些问题:
- 由于持续不断的进行处理,可能会出现瞬时流量过大的情况。
- 涉及到多个环节,环节之间可能会丢失数据。
- 因为工作时间变长,服务程序异常产生的风险也变大。
这些问题都是通过分布式技术来解决的。
所以在实际应用中,流处理一定是分布式的,从批量处理进行改造会分为下面两个步骤:
- 将每个环节的处理分布式。
- 将整块的流处理切分为非常多小块的处理。
问题:
- 我想知道流处理追求快速的代价是什么?
相比于批量处理方式,流处理可靠性会降低,并且对于算法有一定的抽象难度,所以设计和开发复杂度会提高,增加的是智力成本。
- 想知道:spark streaming 是否在计算和流数据接收上都是分布式的?
Streaming实际是包含了两个流式处理,一个是持续不断的接收数据,一个把接收完的数据持续不断的进行处理,其中接收数据采用的是主从模式,不是分布式的,只有处理数据是分布式的。
- spark平台可以处理非结构化数据和结构化数据的时候有什么不同的机制吗?配置平台上需要做什么变动?
Steaming目前在业界也已经被大量使用在非结构化的处理场景下,因为从Streaming中的数据就是对象,本身是数据无关的,对于非结构化数据,只要序列化成对象就可以处理。
关于
小课堂是在公司进行内部交流的一系列主题,偏基础,但是比较零散,持续更新中。
Spark小课堂Week2 Hello Streaming的更多相关文章
- Spark小课堂Week6 启动日志详解
Spark小课堂Week6 启动日志详解 作为分布式系统,Spark程序是非常难以使用传统方法来进行调试的,所以我们主要的武器是日志,今天会对启动日志进行一下详解. 日志详解 今天主要遍历下Strea ...
- Spark小课堂Week5 Scala初探
Spark小课堂Week5 Scala初探 Scala是java威力加强版. 对Java的改进 这里会结合StreamingContext.scala这个代码说明下对Java的改进方面. 方便测试方式 ...
- Spark小课堂Week1 Hello Spark
Spark小课堂Week1 Hello Spark 看到Spark这个词,你的第一印象是什么? 这是一朵"火花",官方的定义是Spark是一个高速的.通用的.分布式计算系统!!! ...
- Spark小课堂Week7 从Spark中一个例子看面向对象设计
Spark小课堂Week7 从Spark中一个例子看面向对象设计 今天我们讨论了个问题,来设计一个Spark中的常用功能. 功能描述:数据源是一切处理的源头,这次要实现下加载数据源的方法load() ...
- Spark小课堂Week4 从控制台看Spark逻辑结构
Spark小课堂Week4 从控制台看Spark逻辑结构 层级关系: 从监控控制台,我们可以看到如下关系: 一个 Job 包含 n Stage 一个 Stage 包含 n Task Job0解决什么问 ...
- Spark小课堂Week3 FirstSparkApp(Dataframe开发)
Spark小课堂Week3 FirstSparkApp(代码优化) RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lamb ...
- Spark小课堂Week3 FirstSparkApp(RDD开发)
Spark小课堂Week3 FirstSparkApp 问题:Java有哪些数据结构 大致有如下几种,其中List与Map是最重要的: List Map Set Array Heap Stack Qu ...
- 小课堂Week12 Clean Code Part1
小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...
- 小课堂Week11 会说话的代码
小课堂Week11 会说话的代码 今天主要讨论下,在编码过程中和"命名"相关的问题.因为命名方法比较自由,如果要提高可读性,我们需要尽量使其符合正规的英文语法习惯. 变量/属性 通 ...
随机推荐
- 小白日记6:kali渗透测试之被动信息收集(五)-Recon-ng
Recon-ng Recon-NG是由python编写的一个开源的Web侦查(信息收集)框架.Recon-ng框架是一个全特性的工具,使用它可以自动的收集信息和网络侦查.其命令格式与Metasploi ...
- UML 之 类图(Class Dragram)
类图的基本目的是显示建模系统的类型,主要包括的类型有:类.接口.数据类型.组件等.UML为这些类型起了个名字叫分类器.通常可以把分类器当做类,但在技术上,分类器是更为普遍的术语.实例如下图: 1.类( ...
- FE—— Code First 初体验 01(转)
EF Code First 初体验 Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项 ...
- C#编程实现DNS Client和Server(转)
我们大多数人使用DNS主要是用于域名解析,近期有个特殊的需求:通过DNS协议传递特殊数据.翻遍互联网,最终找到了一个强大的C# DNS工具库 ARSoft.Tools.Net library ,感谢 ...
- Sqlite和CoreData的区别
使用方便性.实际上,一个成熟的工程中一定是对数据持久化进行了封装的,因此底层使用的到底是core data还是sqlite,不应该被业务逻辑开发者关心.因此,即使习惯写SQL查询的人,也应该避免在业务 ...
- RTC之初始化
RTC为了避免初始化一般有3中方法: 一给MCU的VBAT供电,利用MCU的后备寄存器保存已经设置过时间的标志值,RTC初始化时先查询寄存器值如果是已经设置过则不用初始化设置时间 二 当不给VBUAT ...
- MyBatis(3.2.3) - hello world
1. 创建数据表(MySQL): DROP TABLE IF EXISTS `department`; CREATE TABLE `department` ( `did` ) unsigned NOT ...
- Linux 命令 - rm: 删除文件和目录
命令格式 rm [OPTION]... FILE... 命令参数 -f, --force 强制删除,忽略不存在的文件,不会提示. -i, --interactive 没次删除文件时,提示用户确认. - ...
- SVN对unity3d项目版本进行管理的不方便问题,研究ing
unity3d项目版本控制遇到些问题,找了以下资料做参考,现在mark一下,以后慢慢解决,之后总结. Unity开启meta. meta:版本控制文件,在新加入项时,Unity3D会产生一个同名的.m ...
- android操作通讯录的联系人
界面配置文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and ...