2016-08-11 21:01:05 wyx100 阅读数 2740
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34880 人正在学习 去看看 张长志

大数据Spark企业级实战  PDF完整版
下载地址


大数据Spark企业级实战对应软件和测试数据文件下载地址

http://pan.baidu.com/s/1eQCbT30#path=%252Fblog

2016-08-02 22:25:04 wyx100 阅读数 4581
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34880 人正在学习 去看看 张长志
大数据Spark企业级实战  PDF完整版
下载地址

基本信息

书名:大数据Spark企业级实战

定价:129元

作者:Spark亚太研究院 王家林 编著

出版社:电子工业

出版日期:2015-01-01

ISBN:9787121247446

字数:1136800

页码:812

版次:1

装帧:平装

开本:16开

商品重量:0.3kg

编辑推荐


推荐购买:Java虚拟机精讲Boost程序库完全开发指南——深入C “准”标准库(第3版)让用户体验融入企业基因Spring Batch 批处理框架Cocos2d-x 3.X游戏开发入门精解(含DVD光盘1张)游戏自动化测试实践 Life is short, you need Spark! Spark是当今大数据领域*活跃*热门的高效的大数据通用计算平台。基于RDD,Spark成功地构建起了一体化、多元化的大数据处理体系。 雅虎、Conviva、淘宝、网易、大众点评、优酷土豆、腾讯、华为等公司均在生产环境中部署了大规模的Spark。 本书完全从企业处理大数据业务场景的角度出发,完全基于实战代码来组织内容,从零起步,不需任何基础,完全无痛地掌握Spark大数据处理实战技术,源码解析: Spark集群的动手构建 Spark架构 Spark内核的深入解析 Spark子框架的细致剖析和实战 Tachyon文件系统揭秘 Spark多语言编程 SparkP Spark性能调优和**实践 一站式实现Spark企业级开发实战!

内容提要


Spark是当今大数据领域最活跃、最热门、效的大数据通用计算平台,是Apache软件基金会下所有开源项目中开源项目之一。

在“One Stack to rule them all”理念的指引下,Spark基于RDD成功地构建起了大数据处理的一体化解决方案,将MapReduce、Streaming、SQL、Machine Learning、Graph Processing等大数据计算模型统一到一个技术堆栈中,开发者使用一致的API操作Spark中的所有功能;更为重要的是Spark的Spark SQL、MLLib、GraphX、Spark Streaming等子框架之间可以在内存中完美的无缝集成并可以互相操作彼此的数据,这不仅打造了Spark在当今大数据计算领域其他任何计算框架都无可匹敌的优势,更使得Spark正在加速成为大数据处理中心的和的计算平台。

《大数据Spark企业级实战》详细解析了企业级Spark开发所需的几乎所有技术内容,涵盖Spark的架构设计、Spark的集群搭建、Spark内核的解析、Spark SQL、MLLib、GraphX、Spark Streaming、Tachyon、SparkR、Spark多语言编程、Spark常见问题及调优等,并且结合Spark源码细致的解析了Spark内核和子框架,最后在附录中提供了的Spark的开发语言Scala快速入门实战内容,学习完此书即可胜任绝大多数的企业级Spark开发需要。

《大数据Spark企业级实战》从零起步,完全从企业处理大数据业务场景的角度出发,基于实战代码来组织内容,对于一名大数据爱好者来说,《大数据Spark企业级实战》内容可以帮助您一站式地完成从零起步到进行Spark企业级开发所需要的全部核心内容和实战需要。

目录


第1章 Spark编程模型 1

1.1 Spark:一体化、多元化的高速

大数据通用计算平台和库 1

1.1.1 为什么需要使用Spark 5

1.1.2 Spark技术生态系统简介 9

1.2 Spark大数据处理框架 20

1.2.1 Spark速度为何如此之快 20

1.2.2 RDD:分布式函数式编程 24

1.3 Spark子框架解析 28

1.3.1 图计算框架Spark GraphX 28

1.3.2 实时流处理框架(Spark Streaming) 41

1.3.3 交互式SQL处理框架Spark SQL 46

1.3.4 机器学习框架(Spark MLlib) 49

第2章 构建Spark分布式集群 55

2.1 搭建Hadoop单机版本和伪分布式开发环境 55

2.1.1 开发Hadoop需要的基本软件 56

2.1.2 安装每个软件 58

2.1.3 配置Hadoop单机模式并运行Wordcount示例 76

2.1.3 配置Hadoop伪分布模式并运行Wordcount示例 84

2. 2 搭建 Hadoop分布式集群的 92

2.2.1 在VMWare 中准备第二、第三台运行Ubuntu系统的机器 92

2.2.2 按照配置伪分布式模式的方式配置新创建运行Ubuntu系统的机器 93

2.2.3 配置Hadoop分布式集群环境 94

2.2.4 测试Hadoop分布式集群环境 105

2.3 Spark集群的动手搭建 108

2.3.1 Spark集群需要的软件 108

2.3.2 安装每个软件 110

2.3.3 启动并查看集群的状况 116

2.4 构建Hadoop单机版本和伪分布式环境 120

2.4.1 通过Spark的shell测试Spark的工作 121

2.4.2 使用Spark的cache机制观察一下效率的提升 125

第3章 Spark开发环境及其测试 129

3.1 搭建和设置IDEA开发环境 129

3.1.1 构建Spark的IDE开发环境 129

3.1.2 配置Spark的IDE开发环境 132

3.2 测试IDEA环境 146

3.3 实战:在IDEA中开发代码,并运行在Spark集群中 148

第4章 Spark RDD与编程API实战 159

4.1 深度解析Spark RDD 159

4.2 Transformation Operations动手实战 165

4.3 Action Operations动手实战 175

4.4 Spark API综合实战 179

第5章 Spark运行模式深入解析 191

5.1 Spark运行模式概述 192

5.1.1 Spark的运行模式列表 196

5.1.2 Spark的基本工作流程 197

5.2 Standalone模式 201

5.2.1 部署及程序运行 202

5.2.2 内部实现原理 206

5.3 Yarn-Cluster模式 234

5.3.1 部署及程序运行 235

5.3.2 内部实现原理 237

5.4 Yarn-Client模式 243

5.4.1 部署及运行程序 243

5.4.2 内部实现原理 244

第6章 Spark内核解析 247

6.1 Spark内核初探 247

6.1.1 Spark内核核心术语解析 247

6.1.2 Spark集群概览 250

6.1.3 Spark核心组件 251

6.1.4 Spark任务调度系统初见 252

6.2 Spark内核核心源码解读 256

6.2.1 SparkContext核心源码解析初体验 256

6.2.2 TaskSceduler启动源码解析初体验 260

6.2.3 DAGScheduler源码解读初体验 261

6.2.4 Spark的Web监控页面 262

6.3 以RDD的count操作为例触发Job全生命周期源码研究 263

6.4 Akka驱动下的Driver、Master、Worker 276

6.4.1 Driver中的AppClient源码解析 276

6.4.2 AppClient注册Master 279

6.4.3 Worker中Executor启动过程源代码解析 282

第7章 GraphX大规模图计算与图挖掘实战 287

7.1 Spark GraphX概览 288

7.2 Spark GraphX设计实现的核心原理 291

7.3 Table operator和Graph Operator 295

7.4 Vertices、edges、triplets 296

7.5 以最原始的方式构建graph 299

7.6 动手编写个Graph代码实例并进行Vertices、edges、triplets操作 299

7.7 在Spark集群上使用文件中的数据加载成为graph并进行操作 310

Spark亚太研究院首席专家,中国移动互联网和云计算大数据集大成者。在Spark、Hadoop、Android等方面有丰富的源码、实务和性能优化经验。彻底研究了Spark从0.5.0到0.9.1共13个版本的Spark源码,并已完成2014年5月31日发布的Spark1.0源码研究。

Hadoop源码级专家,曾负责某知名公司的类Hadoop框架开发工作,专注于Hadoop一站式解决方案的提供,同时也是云计算分布式大数据处理的最早实践者之一。

Android架构师、高级工程师、咨询顾问、培训专家。

通晓Spark、Hadoop、Android、HTML5,迷恋英语播音和健美。

2019-12-06 17:58:21 BAO7988 阅读数 7
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34880 人正在学习 去看看 张长志

初识Spark

Spark是基于内存计算的大数据并行计算框架,因为它基于内存计算,所以提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。

第1章 Spark简介

  1. 初识Spark
  2. Spark生态系统BDA
  3. Spark架构与运行逻辑
  4. 弹性分布式数据集
  5. RDD简介
  6. RDD算子分类

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

由于文档内容过多,只截取了部分知识点,每个知识点都有更细化的内容!!

文档资料免费获取方式:关注我 + 转发文章,后台私信【资料】即可免费获取

第2章Spark开发与环境配置

  1. Spark 应用开发环境配置
  2. 使用 Inelij开发Spark
  3. 使用SparkShell进行交互式
  4. 远程调试Spark程序
  5. Spark 编译
  6. 配置Spark源码阅读环境

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

第3章 BDAS 简介

  1. SQL on Spark
  2. 为什么使用 Spark
  3. Spark SQL架构分析
  4. Spark Streaming
  5. Spark Streaming简介
  6. Spark Streaming架构
  7. Spark Streaming原理剖析
  8. GraphX
  9. GrnphX 简介
  10. GrnphX 的使用简介
  11. GraphX 体系结构
  12. MLlib
  13. MLib 简介
  14. MLlib 中的聚类和分类

 

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

 

第4章 Lamda架构日志分析

  1. 日志分析概述
  2. 日 志分析指标
  3. Lamda架构
  4. 构建日志分析数据流水线
  5. 用Flume进行日志采集
  6. 用Kafka将日志汇总
  7. 用Spark Streaming进行实时
  8. 日志分
  9. Spark SQL离线日志分析
  10. 用Flask 将日志KPI
  11. 可视化

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

第5章基于云平台和用户日志的推荐系统

第6章Twitter 情感分析

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

第7章热点新闻分析系统

  1. 新闻数据分析
  2. 系统架构
  3. 爬 虫抓取网络信息
  4. Scrapy 简介
  5. 创建基于 Scrapy的新闻
  6. 爬虫
  7. 爬虫分 布式化
  8. 新闻文本 数据预处理
  9. 新闻聚类
  10. 数据转换为向量 (向量
  11. 空间模型VSM)
  12. 新闻聚类
  13. 词向量同 义词查询
  14. 实时热点新闻分析
  15. Spark Elastic Search构建
  16. 全文检索引擎
  17. 部署 Elastic Search
  18. 用Elastic Search索引
  19. MongoDB数据:
  20. 通过Elastic Search检索
  21. 数据

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

 

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

 

第8章 构建分布式的协同过滤推荐系统

  1. 协同过滤介绍
  2. 基于用户的协同过滤算法
  3. 基于项目的协同过滤算法
  4. 基于模型的协同过滤推荐
  5. 基于 Spark的矩阵运算实现
  6. 协同过滤算法
  7. Spark 中的矩阵类型
  8. Spark 中的矩阵运算
  9. 实现User-based协同过滤的
  10. 实现ltem-based协同过滤的
  11. 基于奇异值分解实现
  12. based协同过滤的示例
  13. 基于Spark的MLlib实现
  14. 协同过滤算法
  15. MLIib 的推荐算法工具
  16. MLib 协同过滤推荐示例..
  17. 案例: 使用MLlib协同过滤
  18. 实现电影推荐
  19. MovieLens 数据集
  20. 确定最佳的协同过滤模型

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

 

第9章基于Spark的社交网络分析

第10章基于Spark的大规模新闻主题分析

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

 

第11章构建分布式的搜索引擎

  1. 引擎简介
  2. 搜索排序概述
  3. 查询无关模型PageRank ....
  4. 基于Spark的分布式PageRank
  5. PageRank 的MapReduce
  6. Spark 的分布式图模型
  7. 基于GraphX的PagcRank
  8. 案例: GoogleWeb Graph的
  9. PageRank计算
  10. 查询相关模型
  11. Ranking SVM
  12. Spark中支持向量机的
  13. Spark 中的支持向量机
  14. 使用Spark测试数据演示
  15. 支持向量机的训练
  16. 案例:基于MSLR数据集的
  17. 查询排序
  18.  
  19. 数据集介绍
  20. 基于 Spurk的Ranking
  21. SVM实现

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

 

最后

由于文档内容过多,只截取了部分知识点,每个知识点都有更细化的内容!!

小编可以把这份“Spark大数据分析实战文档”免费分享给大家。

文档资料免费获取方式:关注我 + 转发文章,后台私信【资料】即可免费获取

 

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

 

一份阿里、百度等一线互联网大厂都用的Spark大数据分析实战文档

2019-12-11 11:45:36 BAO7988 阅读数 16
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34880 人正在学习 去看看 张长志

大数据基本概念

1.大数据概述

相信大家经常会在各种场合听到“大数据"这个词,被誉为数据仓库之父的BillInmon早在20世纪90年代就将大数据挂在嘴边了。那么到底什么是大数据呢?这是我们在本章要了解的。

我们现在生活的时代是一一个数据时代,近年来随着互联网的高速发展,每分每秒都在产生数据,那么产生的这些数据如何进行存储和相应的分析处理呢?各大公司纷纷研发和采用一批新技术来应对8益庞大的数据处理需求,主要包括分布式文件系统、分布式计算框架等,这些都是我们需要学习和掌握的。

《互联网周刊》对大数据的定义为:“大数据 ”的概念远不止大量的数据(TB)和处理大量数据的技术,或者所谓的“4个V"之类的简单概念,而是涵盖了人们在大规模数据的基础上可以做的事情,这些事情在小规模数据的基础上是无法实现的。换句话说,大数据让我们以一种前所未 有的方式,通过对海量数据进行分析,来获得有巨大价值的产品和服务,或深刻的洞见,最终形成变革之力。

2.大数据特征

(1)数据量大(Volume)

随着网络技术的发展和普及。每时每刻都会产生大量的数据。在我们的日常生活中,比如说在电商网站购物、在直播平台看直播、在线阅读新闻等,都会产生很多的日志,汇在一起每分每秒产生的数据量将是非常巨大的。

(2)类型繁多(Variety)

大数据中最常见的类型是日志,除了日志之外常见的还有音频、视频、图片等。由于不同类型的数据没有明显的模式,呈现出多样性的特点,这对于数据的处理要求也会更高。

(3)价值密度低(Value)

现阶段每时每刻产生的数据量已经很大了,如何从大量的日志中提取出我们需要的、对我们有价值的信息才是最重要的。数据量越来越大,里面必然会存在着大量与我们所需不相干的信息,如何更迅速地完成数据的价值提炼,是大数据时代有待解决的问题。

(4)处理速度快(Velocity)

传统的离线处理的时效性不高,换句话说时延是非常高的。随着时代的发展,对时效性的要求越来越高,需要实时对产生的数据进行分析处理,而不是采用原来的批处理方式。

大数据带来的挑战

1,对现有数据库的挑战.

随着互联网时代的到来,现在产生的数据如果想存储在传统数据库里是不太现实的,即便传统的数据库有集群的概念,仍然不能处理TB量级的数据。而且现阶段产生的数据类型很多,有些类型的数据是没办法使用结构化数据查询语言(SQL) 来处理的。

2.实时性的技术挑战

我们知道数据产生的价值会随着时间的流逝而大大降低,所以当数据产生后我们要尽可能快地进行处理。最典型的就是电商网站的推荐系统,早些年的推荐系统都是基于批处理来进行的,比如每隔半天或者一天进行计算然后再进行推荐,这样就会有很大的延时,对于订单的转换而言虽然有效果但不是很好。如果能做到实时推荐,那么肯定能大大提高公司的营业收入。

传统的离线批处理对处理时间的要求并不高。而实时处理的要求是区别大数据应用和传统数据库技术或者离线技术的关键差别之一- 。

3.对数据中心、运維团队的挑战,

如今每天产生的数据量正呈燦炸式增长那么如此多的数据该怎样进行高效的收集、存储,计算都是数据中心要面临的一-个非常棘手的问题。而处理快速增长的数据最所需要的机器也日益增多。那么对于运维团队来说压力也会增加。

要想把大数据读懂,基于Hadoop与Spark的大数据开发实战pdf,足矣

 

大致有个了解了吧?接下来就给大家分享基于Hadoop与Spark的大数据开发实战pdf喽,希望大家能够喜欢!

2019-05-30 19:29:33 hixiaoxiaoniao 阅读数 146
  • 大数据Spark实战视频教程

    大数据Spark实战视频培训教程:本课程内容涉及,Spark虚拟机安装、Spark表配置、平台搭建、快学Scala入门、Spark集群通信、任务调度、持久化等实战内容。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

    34880 人正在学习 去看看 张长志

 

为什么需要Spark

MapReduce的缺点
1.抽象层次太低,大量底层逻辑需要开发者手工完成
2.只有map和reduce两个操作
3.每一个job的计算结果都会存储在HDFS中,所以每一步计算成本很高
4.只支持批处理,却反对流数据处理的支持

Spark支持各种丰富的操作,而且速度远超MapReduce
下图是Spark和Hadoop上运行逻辑回归算法的运行时间对比

在任务(task)级别上,Spark是多线程模型,MapReduce是多进程模型
Spark并不是完全替代Hadoop,因为Hadoop还包含了很多组件:
数据存储层:分布式文件存储系统HDFS,分布式数据库存储HBase
数据处理层:进行数据处理的MapReduce,负责集群和资源管理的YARN
数据访问层:Hive,Pig,Mahout

Spark生态圈如下

Spark有5个主要扩展库
1.支持结构化数据的Spark SQL
2.处理实时数据的Spark Streaming
3.用于机器学习的MLlib
4.用于图计算的GraphX
5.用于统计分析的SparkR

 

RDD

弹性分布式数据集Reilient Distributed Dataset
RDD是逻辑上的一个大数组,数组中的每个元素代表一个分区Partition,可以被存储在内存或者磁盘中
这些分区是独立的,可以被放在不同节点上

RDD中的每个分区存有在该RDD中的index,通过RDD的ID和分区的index可以唯一确定对应的数据块的编号,从而通过底层存储层的接口提取到数据进行处理
RDD具有不可变性,只能对现有的RDD进行转换Transformation操作,得到新的RDD
RDD的分区和不可变性使得它支持并行操作

RDD的结构

  • SparkConf提供了一些参数配置信息
  • SparkContext是所有Spark功能的入口,它代表了与Spark节点的连接,可以用来创建RDD对象以及在节点中的广播变量等
  • Partitions代表RDD中的数据逻辑结构,每个Partition会映射到某个节点内存或者硬盘的一个数据块,目前两个主流的分区方式Hahs分区和Range分区
  • Dependencis是依赖关系,包括宽依赖 或者窄依赖
  • Checkpoint,跟关系型数据库类似,某个RDD的依赖关系复杂计算时间长,加入检查点后,就删除之前的依赖关系加速恢复过程
  • 存储级别Storage Level用来记录RDD持久化的存储级别
  • 迭代函数Iterator和计算函数Compute是用来标示RDD怎样通过父RDD计算得到的
  • 迭代函数首先会判断缓存中是否有要计算的RDD,如果有就直接读取,没有就查找想要计算的RDD是否被检查点处理过,如果有就读取没有就调用计算函数向上递归查找父RDD进行计算


RDD的转换操作
操作分为两种,转换Transformation ,动作Action
转换是把一个RDD转换成另一个RDD,动作是通过计算返回一个结果
转换的操作包括:
map,filter,mapPartitions,groupByKey
动作的操作包括:
collect,reduce,count,countByKey

RDD的持久化
Spark的persist(),cache()函数支持将RDD的数据缓存到内存或者磁盘上
当下一次对同一个RDD进行Action操作时,可以直接读取RDD的结果

存储级别
MEMORY_ONLY:只缓存在内存中,如果内存空间不够则不缓存多出来的部分,这是RDD的默认存储级别
MEMORY_AND_DISK:存储在内存中,如果空间不够则缓存在硬盘中
DISK_ONLY:只缓存在硬盘中
MEMORY_ONLY_2和MEMORY_AND_DISK_2,和上面的级别功能相同,只不过每个分区再集群中的两个几点上建立副本
 

依赖关系
包括宽依赖Wide Dependency,窄依赖 Narrow Dependency
窄依赖是父RDD的分区可以一一对应到子RDD的分区

宽依赖是父RDD的每个分区可以被多个子RDD的分区使用


窄依赖允许子RDD的每个分区可以被并行处理产生,而宽依赖必须等待父RDD的所有分区都被计算好之后才能开始处理
map,filter会产生窄依赖关系
join,groupBy会产生宽依赖关系

Spark之所以有宽窄依赖是出于以下两点考虑

  • 窄依赖可以支持在同一个节点上链式执行多条命令,如在执行了map后,紧接着执行filter,反之宽依赖需要所有父分区都是可用的,可能还需要调用类似MapReduce之类的操作进行跨节点传递
  • 从失败恢复的角度考虑,窄依赖的失败恢复更有效,因为它只需要重新计算丢失的父分区即可,而宽依赖牵扯到RDD各级的多个分区
     

 

Spark SQL

最早是在Hive基础之上搞了一个Shark,用来支持SQL查询
本质就是修改Hive做了优化,速度是Hive的10-100倍,但因为依赖Hive,后来Spark团队就把这个项目交给Hive管理了
之后开始开发SparkSQL

SparkSQL摒弃了Shark的引擎,换成自己团队的引擎
支持Hive,RDD,JSON文件,CSV文件等,也加快了Spark生态圈的发展

SparkSQL的架构

提供了SQL查询操作,允许数据仓库应用程序直接获取数据,允许使用者通过命令行操作来交互查询数据
提供了两个API,DataFrame API,DataSet API
上层应用通过这两个API来操作RDD,当然应用程序也可以直接操作RDD
使用SparkSQL会让开发者好像是在操作关系型数据库一样,而不是在操作RDD
Spark底层对SQL进行优化

DataSet
也就是数据集的意思,是1.6引入的新接口
和RDD类似,也是不可变的,支持map,filter等操作,也是惰性计算的
DataSet锁描述的数据都被组织到有名字的列中,就像关系型数据库的表一样

SparkSQL可以清楚的知道数据集中包含哪些列,也可以依靠优化器把需要的列取出来

DataFrame
可以看做是一种特殊的DataSet,它的每一行是固定的Row,可以被当做DataSet[Row]来处理,必须要通过解析才能获取各个列的值
对于DataSet可以用类似people.name来访问一个人的名字,对于DataFrame用类似people.get AS[String]("name")来访问

RDD,DataFrame,DataSet对比

从发展历史看,RDD API在第一代Spark中就存在,是整个Spark框架的基石
为了方便熟悉关系型数据库和SQL开发人员使用,在RDD基础上,Spark创建了DataFrame API,方便对列进行操作
DataSet在DataFrame基础上添加了对数据的每一列类型的限制
DataSet和DataFrame都是不变的,可以通过简单的API让他们在RDD之间无缝切换
优化器会对DataSet,DataFrame进行优化,比RDD性能更好
RDD API对非结构化的数据处理有独特的优势,比如文件流数据,而且更方便我们做底层的操作,在开发中要根据实际情况选择具体API

RDD和DataSet都是类型安全的,DataFrame不是,因为他不存储每一列的信息

 

 

Spark Straming

无论是DataSet,还是DataFrame都是基于批处理模式对静态数据进行处理的,比如某个特定时间对一天的日志进行处理
Spark的流处理组件Streaming可以对流数据进行处理
流处理的核心思想跟微积分类似,把一个矩阵分成无限细分的小矩形

Spark Straming提供了一个对于流数据的抽象DataStream,DataStream可以由来自Kafka,Flume,HDFS的流数据生成,也可以由别的DSStream经过各种转换操作得来
底层DStream也是由很多个序列化的RDD构成,按照时间片比如一秒,切分成的每个数据单位都是一个RDD,然后Spark核心引擎将对DStream的转换操作变为针对Spark中对RDD的转换操作,将RDD经过操作变成中间结果保存在内存中
无论是DataFrame,DStream都具有RDD不变形,分区性,容错性等特质
Spark是一个高度统一的平台,所有的高级API都有相同的性质,它们之间可以很容易的相互转换,Spark的野心就是用一这套工具统一所有数据处理的场景
Spark Streaming将底层细节都封装起来了,对于开发者只需要操作DStream就可以了

DStream
下图是DStream的内部形式,即一个连续的RDD序列,每一个RDD代表一个时间窗口的输入数据流

对DStream的转换操作,意味着对它包含的每一个RDD进行同样的转换操作

sc = SparkContext(master, appName)
ssc = StreamingContext(sc, 1)
lines = sc.socketTextStream("localhost", 9999)
words = lines.flatMap(lambda line: line.split(" "))

如下图所示


本质上对一个DStream进行flatMap操作,就是对它里面的每个RDD进行flatMap操作,生成一系列新的RDD,构成了一个新的代表赐予的DStream

滑动窗口操作
任何Spark Streaming的程序都要先创建一个StreamingContext的对象,它是所有Streaming操作的入口
比如,可以通过StreamingContext来创建DStream,它最终的参数是批处理的时间间隔,即把流数据细分成数据块的粒度
这个时间间隔决定了流处理的延迟性,上面的例子中每一秒会生成一个RDD进行运算
有些场景汇总,我们需要每隔一段时间,去统计过去某个时间段内的数据,比如对热点搜索词语进行统计
每隔10秒钟输出过去60秒内排名前10的热点词,这是流处理的一个基本应用场景,很多流处理框架如Flink都有原生的支持
Spark也支持滑动窗口操作
从热点词看,滑动窗口有两个基本操作

  • 窗口长度,每次统计的数据的时间跨度,如60秒
  • 滑动时间,每次统计的时间间隔,如10秒
     

Spark Straming的优缺点
它是基于RDD实现的,所有RDD的优良特点Spark Streaming都支持,比如容错性等
运行速度,也支持persist()优化
它是Spark生态的一部分,可以和Spark的核心引起,SparkSQL,MLlib等无缝衔接,对实时处理出来的中间数据,可以立即在程序中无缝进行批处理,交互查询等操作,使得基于Spark Streaming的应用程序很容易扩展
缺点是实时计算延迟较高,一般在秒级,这是由于Spark Streaming不支持爱笑的批处理的时间间隔
而Storm就可以做到毫秒级

 

 

Structured Streaming

DataFream是高级API,可以用SQL的方式去开发,SparkSQL执行引起会自动优化DataFream程序

Structured Streaming模型
流处理最基本的问题就是如何对不断更新的无边界数据建模
Spark Streaming就是把流数据按一定的时间间隔分割成许多个小的数据块进行批处理,在Structured模型中,要把数据看成一个无边界的关系型数据表,每一个数据都是表中的一行,不断会有新的数据行被添加到表里来,我们可以对这个表做任何类似批处理的查询,Spark会帮我们不断对新的数据进行处理,并更新计算结果

 

 

 

 

参考

Spark Tutorial

Spark blog

Cloudera Spark blog

 

 

没有更多推荐了,返回首页