FusionInsight大数据开发---Spark应用开发
Spark应用开发
要求:
- 了解Spark基本原理
- 搭建Spark开发环境
- 开发Spark应用程序
- 调试运行Spark应用程序
YARN资源调度,可以和Hadoop集群无缝对接
Spark适用场景
大多数现有集群计算框架如MapReduce等基于从稳定存储(文件系统)到稳定存储的非循环数据流,数据重用都是基于磁盘的,执行效率比较低。
与传统的MapReduce任务频繁读写磁盘数据相比,基于内存计算的Spark则更适合应用在迭代计算,交互式分析等场景。
Spark应用运行流程--关键角色
- Client:需求提出方,负责提交需求(应用)。
- Driver:负责应用的业务逻辑和运行规划(DAG)。
- ApplicationMaster:负责应用的资源管理,根据应用的需求,向资源管理部门(ResourceManager)申请资源。
- ResourceManager:资源管理部门,负责整个集群的资源统一调度和分配
- Executor:负责实际计算工作,一个应用会分拆给多个Executor来进行计算。
Spark核心概念--RDD
RDD(Resilient Distributed Datasets)即弹性分布式数据集,指的是一个只读的,可分区的分布式数据集。这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。
RDD的生成
- 从Hadoop文件系统(或与Hadoop兼容的其它存储系统)输入创建(如HDFS)
- 从集群创建(如sc.Parallelize)。
- 从夫RDD转换得到新的RDD。
RDD的存储和分区
- 用户可以选择不同的存储级别存储RDD以便重用(11种)
- 当前RDD默认存储于内存,但当内存不足时,RDD会溢出到磁盘中。
- RDD在需要进行分区时会根据每条记录Key进行分区,以此保证两个数据集能高效进行Join操作。
RDD的优点
- RDD是只读的,可提供更高的容错能力
- RDD的不可变性,可以实现Hadoop MapReduce的推测式执行
- RDD的数据分区特性可以通过数据的本地性来提高性能。
- RDD都是可序列化的,在内存不足时可自动降级为磁盘存储。
RDD的特点
- 在集群节点上时不可变的,是已分区的集合对象。
- 失败后自动重连
- 可以控制存储级别(内存、磁盘等)来进行重用。
- 必须是可序列化的
- 是静态类型。
RDD的创建
Spark所有操作都围绕弹性分布式数据集(RDD)进行,这是一个有容错机制并可以被并行操作的元素集合,具有只读,分区,容错,高效,无需物化,可以缓存,RDD依赖等特征。
目前有两种类型的基础RDD:
- 并行集合:接受一个已经存在的Scala集合,然后进行并行计算
- Hadoop数据集:在一个文件的每条记录上运行函数。
RDD的创建--并行集合
并行集合是通过调用SparkContext的parallelize方法,在一个已经存在的Scala集合(一个Seq对象)上创建的。
集合的对象将会被拷贝,创建出一个可以被并行操作的分布式数据集。
RDD依赖:宽依赖和窄依赖
RDD父子依赖关系
- 窄依赖:(Narrow)指父RDD的每一个分区最多被一个子RDD的分区所用。
- 宽依赖:(Wide)指子RDD的分区依赖于父RDD的所有分区,是Stage划分的依据。
- RDD常用Transformation算子
- RDD常用Action算子
Spark任务参数配置
- Spark优先级是:配置文件<动态参数<代码配置
相同的数据,只创建一个RDD
算法调优--RDD缓存
- Spark可以使用persist和cache方法将任意RDD缓存到内存、磁盘文件系统中。
算法调优--避免使用Shuffle
- Shuffle过程会有整个RDD数据的写和读的操作,成本非常高。
算法调优--使用广播变量
外部变量:
- 每个task都有一个变量副本。
广播变量:
- 每个Executor保留一份。
编写代码
- 登陆
- 创建连接
- 执行SQL
- 获取结果
DataFrame介绍
DataFrame:已RDD为基础,带有Schema信息,类似传统数据库的二维表。
编写代码
- 登陆
- 注册Table
- 执行SQL
- 过滤
FusionInsight大数据开发---Spark应用开发的更多相关文章
- FusionInsight大数据开发学习总结(1)
FusionInsight大数据开发 FusionInsight HD是一个大数据全栈商用平台,支持各种通用大数据应用场景. 技能需求 扎实的编程基础 Java/Scala/python/SQL/sh ...
- 大数据全栈式开发语言 – Python
前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB) ...
- 为什么说Python 是大数据全栈式开发语言
欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...
- 大数据之 Spark
1 渊源 于2009由Matei Zaharia创立了spark大数据处理和计算框架,基于内存,用scala编写. 2 部署 2.1 需要软件包 下载路径见已有博文 Jdk ——因为运行环境为jvm ...
- 【互动问答分享】第15期决胜云计算大数据时代Spark亚太研究院公益大讲堂
"决胜云计算大数据时代" Spark亚太研究院100期公益大讲堂 [第15期互动问答分享] Q1:AppClient和worker.master之间的关系是什么? AppClien ...
- 【互动问答分享】第13期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第13期互动问答分享] Q1:tachyon+spark框架现在有很多大公司在使用吧? Yahoo!已经在长期大规模使用: 国内也有 ...
- 【互动问答分享】第10期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第10期互动问答分享] Q1:Spark on Yarn的运行方式是什么? Spark on Yarn的运行方式有两种:Client ...
- 【互动问答分享】第8期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第8期互动问答分享] Q1:spark线上用什么版本好? 建议从最低使用的Spark 1.0.0版本,Spark在1.0.0开始核心 ...
- 【互动问答分享】第7期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第7期互动问答分享] Q1:Spark中的RDD到底是什么? RDD是Spark的核心抽象,可以把RDD看做“分布式函数编程语言”. ...
- 【互动问答分享】第6期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第6期互动问答分享] Q1:spark streaming 可以不同数据流 join吗? Spark Streaming不同的数据流 ...
随机推荐
- HTTP协议那些事儿
HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数据通信的基础. ...
- vue2.0 实现导航守卫(路由守卫)---登录验证
路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards). 导航守卫 ...
- css ie bug 双边距
- 20180610模拟赛T1——脱离地牢
Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...
- Linux——查找占用磁盘体积最大的前10个文件
前言 服务器上传文件失败了,才开始没考虑到磁盘原因还以为是自己的scrt的问题,还好df -h看了下,最后发现磁盘满了,真是.... 查找 find / -type f -print0 | xargs ...
- 10-赵志勇机器学习-meanshift
(草稿) meanshift 也是一种聚类方法. 优点在于:不需要提前指定类型数. 缺点就是计算量大 过程:(最一般的做法,没有使用核函数) 1. 逐点迭代,设置为位置中心 2. 计算所有点到位置中心 ...
- 01-linux-基本语法-sh文件
在一些开源库中,往往有一个 xxx.sh 的安装文件.命令“./ xxx.sh” 就可运行之. 其实内部是一些 linux 的语句.整合起来,方便使用而已. 介绍一下常用的一些Linux语句 cd b ...
- 5分钟使用docker搭建一个WordPress
环境为已安装Docker Destop的Windows系统. 过程 使用Docker拉去官方WordPress镜像再进行简单配置是可行的, 但是这里我们使用docker-compose,它会自动根据你 ...
- 无旋treap大法好
无旋Treap大法好 原理? 是一棵二叉查找树: 一个节点左子树权值都比他小,右子树权值都比他大 所以可以维护序列(以位置为权值),或数值(以数值为权值) 是一个堆: 每个节点除了上述提到的权值外,还 ...
- 常见的概率分布类型(二)(Probability Distribution II)
以下是几种常见的离散型概率分布和连续型概率分布类型: 伯努利分布(Bernoulli Distribution):常称为0-1分布,即它的随机变量只取值0或者1. 伯努利试验是单次随机试验,只有&qu ...