大数据-Hadoop-基础篇-第十章-Spark

目录

参考

经典大数据开发实战(Hadoop &HDFS&Hive&Hbase&Kafka&Flume&Storm&Elasticsearch&Spark)

Spark简介:

Spark是一种通用的大数据计算框架,是基于RDD(弹性分布式数据集)的一种计算模型。那到底是什么呢?可能很多人还不是太理解,通俗讲就是可以分布式处理大量集数据的,将大量集数据先拆分,分别进行计算,然后再将计算后的结果进行合并。

主要组件

Spark是由多个组件构成的软件栈,Spark的核心(SparkCore)是一个对由很多计算任务组成的、运行在多个工作机器或者一个计算集群上的应用进行调度、分发以及监控的计算引擎。

为什么使用Spark

Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是------Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,而且比MapReduce平均快10倍以上的计算速度;因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

Spark优势

速度快

■基于内存数据处理, 比MR快100个数量级以上(逻辑回归算法测试)

■基于硬盘数据处理,比MR快10个数量级以上

易用性

■支持Java、 Scala、 Python、 R语言

■交互式shell方便开发测试

通用性

■一栈式解决方案:批处理、交互式查询、实时流处理、图计算及机器学习

■多种运行模式

■YARN、 Mesos、 EC2、 Kubernetes、 Standalone(独立模式)、 Local(本地模式)

架构

Standalone架构

Spark Standalone模式为经典的Master/Slave架构,资源调度是Spark自己实现的。在Standalone模式中,根据应用程序提交的方式不同,Driver(主控进程)在集群中的位置也有所不同。应用程序的提交方式主要有两种:clien如和cluster,默认是client.当提交方式为client时,运行架构:

Cluster集群

Saprk On YARN架构

Spark On YARN模式,遵循YARN的官方规范,YARN只负责资源的管理和调度,运行哪种应用程序由用户自己实现,因此可能在YARN上同时运行MapReduce程序和Spark程序,YARN很好的对每一个程序实现了资源的隔离这使得Spark与MapReduce可以运行于同一个集群中,共享集群存储资源与计算资源。Spark On YARN模式与Standalone模式一样,也分为client和cluster两种提交方式。client提交方式架构:

安装

启动界面

8080端口

RDD

概念

Spark提供了一种对数据的核心推象,称为弹性分布式数据集(Resilient Distributed Dataset,简称RDD)中,这个数据集的全部或部分可以缓存在内存并且可以在多次计算时重用。RDD其实就是一个分布在多个节点上的数据集合。

RDD的弹性主要是指:当内存不的多时,数据可以持久化到磁盘,并且RDD有高效的容错能力。分布式数据集是指:一个数据集存储在不同的节点上。每个节点存储数据集的一部分。

例如,将数据集(hello,world,scaa,spark,love,spark,happy)存储在三个节点上,节点一存储(hello,world),节点二存储(scala,spark,love),节点三存储(spark,happy),这样对三个节点的数据可以并行计算,并且三个节点的数据共同组成了一个RDD。

RDD是分散在多个服务器上

map算子

前面两行只是计划,最后执行collect的时候程序才会执行

flatMap(func)

reduceByKey()

案例

Spark单词计数

流程

代码

SparkSQL 概述

SparkSQL

1.1 SparkSQL 是什么

Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。

1.2 Hive and SparkSQL

SparkSQL 的前身是 Shark,给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供快速上手的工具。

Hive 是早期唯一运行在 Hadoop 上的 SQL-on-Hadoop 工具。但是 MapReduce 计算过程中大量的中间磁盘落地过程消耗了大量的 I/O,降低的运行效率,为了提高 SQL-on-Hadoop的效率,大量的 SQL-on-Hadoop 工具开始产生,其中表现较为突出的是:

⚫ Drill

⚫ Impala

⚫ Shark

其中 Shark 是伯克利实验室 Spark 生态环境的组件之一,是基于 Hive 所开发的工具,它修改了下图所示的右下角的内存管理、物理计划、执行三个模块,并使之能运行在 Spark 引擎上。

DataFrame 和Dataset

DataFrame是SparkSQL提供的一个编程抽象,与RDD类似,也是一个分布式的数据集合。但与RDD不同的是,DataFrame的数据都被组织到有名字的列中,就像关系型数据库中的表一样。此外,多种数据都可以转化为DataFrame,例如:Spark计算过程中生成的RDD、结构化数据文件、Hive中的表、外部

数据库等。DataFrame在RDD的基础上添加了数据描述信息(Schema,即元信息),因此看起来更像是一张数据库表。

读取数据

拆分3列

bash 复制代码
## 定义类
scala> case class Person(id:Int,name:String,age:Int)
defined class Person

## 导入数据
scala> import spark.implicits
import spark.implicits._
scala> val personDataset = dl.map(line=>{ 
	val fields=line.split(',')
	val id=fields(0).toInt
	val name=fields(1)
	val age=fields(2).toInt
	Person(id,name,age)
})

展示

转换DataFrame后可以执行SparkSql

相关推荐
我爱刮刮乐22 分钟前
关于flink两阶段提交高并发下程序卡住问题
大数据·flink·linq
哈哈~15627 分钟前
Spark RDD行动算子与共享变量实战:从数据聚合到分布式通信
spark
A达峰绮29 分钟前
设计一个新能源汽车控制系统开发框架,并提供一个符合ISO 26262标准的模块化设计方案。
大数据·开发语言·经验分享·新能源汽车
youka1501 小时前
大数据学习栈记——Hive4.0.1安装
大数据·hive·学习
APItesterCris4 小时前
Flutter 移动端开发:集成淘宝 API 实现商品数据实时展示 APP
大数据·数据库·flutter
凉白开3384 小时前
Spark-Streaming核心编程
大数据·分布式·spark
lilye666 小时前
精益数据分析(17/126):精益画布与创业方向抉择
大数据·数据挖掘·数据分析
不要天天开心7 小时前
大数据利器:Kafka与Spark的深度探索
spark·scala
思通数科AI全行业智能NLP系统9 小时前
AI视频技术赋能幼儿园安全——教师离岗报警系统的智慧守护
大数据·人工智能·安全·目标检测·目标跟踪·自然语言处理·ocr
A-Kamen11 小时前
MySQL 存储引擎对比:InnoDB vs MyISAM vs Memory
数据库·mysql·spark