Spark应用开发

要求:

  1. 了解Spark基本原理
  2. 搭建Spark开发环境
  3. 开发Spark应用程序
  4. 调试运行Spark应用程序

YARN资源调度,可以和Hadoop集群无缝对接

Spark适用场景
大多数现有集群计算框架如MapReduce等基于从稳定存储(文件系统)到稳定存储的非循环数据流,数据重用都是基于磁盘的,执行效率比较低。
与传统的MapReduce任务频繁读写磁盘数据相比,基于内存计算的Spark则更适合应用在迭代计算,交互式分析等场景。

Spark应用运行流程--关键角色

  • Client:需求提出方,负责提交需求(应用)。
  • Driver:负责应用的业务逻辑和运行规划(DAG)。
  • ApplicationMaster:负责应用的资源管理,根据应用的需求,向资源管理部门(ResourceManager)申请资源。
  • ResourceManager:资源管理部门,负责整个集群的资源统一调度和分配
  • Executor:负责实际计算工作,一个应用会分拆给多个Executor来进行计算。

Spark核心概念--RDD
RDD(Resilient Distributed Datasets)即弹性分布式数据集,指的是一个只读的,可分区的分布式数据集。这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。
RDD的生成

  1. 从Hadoop文件系统(或与Hadoop兼容的其它存储系统)输入创建(如HDFS)
  2. 从集群创建(如sc.Parallelize)。
  3. 从夫RDD转换得到新的RDD。

RDD的存储和分区

  1. 用户可以选择不同的存储级别存储RDD以便重用(11种)
  2. 当前RDD默认存储于内存,但当内存不足时,RDD会溢出到磁盘中。
  3. RDD在需要进行分区时会根据每条记录Key进行分区,以此保证两个数据集能高效进行Join操作。

RDD的优点

  1. RDD是只读的,可提供更高的容错能力
  2. RDD的不可变性,可以实现Hadoop MapReduce的推测式执行
  3. RDD的数据分区特性可以通过数据的本地性来提高性能。
  4. RDD都是可序列化的,在内存不足时可自动降级为磁盘存储。

RDD的特点

  1. 在集群节点上时不可变的,是已分区的集合对象。
  2. 失败后自动重连
  3. 可以控制存储级别(内存、磁盘等)来进行重用。
  4. 必须是可序列化的
  5. 是静态类型。

RDD的创建
Spark所有操作都围绕弹性分布式数据集(RDD)进行,这是一个有容错机制并可以被并行操作的元素集合,具有只读,分区,容错,高效,无需物化,可以缓存,RDD依赖等特征。
目前有两种类型的基础RDD:

  1. 并行集合:接受一个已经存在的Scala集合,然后进行并行计算
  2. 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保留一份。

编写代码

  1. 登陆
  2. 创建连接
  3. 执行SQL
  4. 获取结果

DataFrame介绍
DataFrame:已RDD为基础,带有Schema信息,类似传统数据库的二维表。

编写代码

    1. 登陆
    2. 注册Table
    3. 执行SQL
    4. 过滤

FusionInsight大数据开发---Spark应用开发的更多相关文章

  1. FusionInsight大数据开发学习总结(1)

    FusionInsight大数据开发 FusionInsight HD是一个大数据全栈商用平台,支持各种通用大数据应用场景. 技能需求 扎实的编程基础 Java/Scala/python/SQL/sh ...

  2. 大数据全栈式开发语言 – Python

    前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB) ...

  3. 为什么说Python 是大数据全栈式开发语言

    欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...

  4. 大数据之 Spark

    1 渊源 于2009由Matei Zaharia创立了spark大数据处理和计算框架,基于内存,用scala编写. 2 部署 2.1 需要软件包 下载路径见已有博文 Jdk ——因为运行环境为jvm ...

  5. 【互动问答分享】第15期决胜云计算大数据时代Spark亚太研究院公益大讲堂

    "决胜云计算大数据时代" Spark亚太研究院100期公益大讲堂 [第15期互动问答分享] Q1:AppClient和worker.master之间的关系是什么? AppClien ...

  6. 【互动问答分享】第13期决胜云计算大数据时代Spark亚太研究院公益大讲堂

    “决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第13期互动问答分享] Q1:tachyon+spark框架现在有很多大公司在使用吧? Yahoo!已经在长期大规模使用: 国内也有 ...

  7. 【互动问答分享】第10期决胜云计算大数据时代Spark亚太研究院公益大讲堂

    “决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第10期互动问答分享] Q1:Spark on Yarn的运行方式是什么? Spark on Yarn的运行方式有两种:Client ...

  8. 【互动问答分享】第8期决胜云计算大数据时代Spark亚太研究院公益大讲堂

    “决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第8期互动问答分享] Q1:spark线上用什么版本好? 建议从最低使用的Spark 1.0.0版本,Spark在1.0.0开始核心 ...

  9. 【互动问答分享】第7期决胜云计算大数据时代Spark亚太研究院公益大讲堂

    “决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第7期互动问答分享] Q1:Spark中的RDD到底是什么? RDD是Spark的核心抽象,可以把RDD看做“分布式函数编程语言”. ...

  10. 【互动问答分享】第6期决胜云计算大数据时代Spark亚太研究院公益大讲堂

    “决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第6期互动问答分享] Q1:spark streaming 可以不同数据流 join吗? Spark Streaming不同的数据流 ...

随机推荐

  1. 类型转换 String——》Char OR Char ——》String

    String转换为char 在Java中将String转换为char是非常简单的.1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char.2 ...

  2. 206--Reverse A Singly Linked List

    package LinedList; public class ReverseASinglyLinkedList { //解法一:迭代. public ListNode reverseList(Lis ...

  3. MySQL 重要参数 innodb_flush_log_at_trx_commit 和 sync_binlog

    innodb_flush_log_at_trx_commit 主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0.1.2三个.该参数控制重做日志写入 ...

  4. MySQL数据逻辑备份

    逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低. mysqldump mydumper使用mysqldump实现逻辑备份 语法: # mysqldump ...

  5. Apache源码编译安装脚本

      Apache是开源的的.最流行的Web服务器软件之一,它快速.可靠并且可通过简单的API扩充,将Perl/Python/PHP等解释器编译到服务器中.Apache的模块超多,以及具有运行稳定,强大 ...

  6. 大数据技术原理与应用【第五讲】NoSQL数据库:5.4 NoSQL的三大基石

    NoSQL的三大基石:cap,Base,最终一致性   5.4.1 cap理论(帽子理论):   consistency:一致性availability:可用性partition tolerance: ...

  7. 使用async进行结构化并发程序开发

    异步风格的函数: 继续来学习async相关的东东,对于它其实可以用到函数上,也就是用它可以定义一个异步风格的函数,然后在该函数中再来调用普通的函数,下面来瞅一下: 其实“GlobalScope.asy ...

  8. docker学习11-上传本地镜像到镜像仓库

    前言 在本地自己制作用过镜像后,上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境. 如果公开的话,别人也可以用你的镜像快速搭建环境,类似于 GitHub 本地代码上传到代码仓库,再从仓库拉取代 ...

  9. 网络协议 11 - Socket 编程(下)

    之前我们基本了解了网络通信里的大部分协议,一直都是在“听”的过程.很多人都会觉得,好像看懂了,但关了页面回忆起来,好像又什么都没懂.这次咱们就“真枪实弹”的码起来,再用一个“神器”-网络分析系统详细跟 ...

  10. 第02组 Alpha冲刺(3/6)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 摸鱼 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的进度 学习如何评估代码质量 准备Al ...