大数据处理与分析

Spark

Spark官网链接https://spark.apache.org/

什么是spark?

Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。

spark特点

1.快速:

与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流。计算的中间结果是存在于内存中

2.易用

Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的Shell,可以非常方便地在这些Shell中使用Spark集群来验证解决问题的方法

3.通用

Spark提供了统一的解决方案。Spark可以用于,交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。减少了开发和维护的人力成本和部署平台的物力成本

4.随处运行

用户可以使用Spark的独立集群模式运行S park,也可以在亚马逊弹性计算云(Amazon Elastic Compute Cloud,Amazon EC2)、Hadoop YARN 资源管理器或Apache Mesos上运行 Spark。Spark作为一个分布式计算框架,本身并并没有存储功能,但是Spark 可以从 HDFS、 Cassandra、HBase、Hive、Alluxio (Tachyon)等数据源中读取数据。

5.代码简洁

Spark 支持使用 Scala、Python 等语言编写代码。Scala和 Python的代码相对Java 的代码而言比较简洁,因此,在Spark中一般都使月用Scala 或Python编写应用程序,这也比在MapReduce 中编写应用程序简单方便。

Scala

Scala官网链接https://www.scala-lang.org/

Scala是一门现代的多范式编程语言 ,运行于IAVA平台(JVM,JAVA虚拟机)并兼容现有的JAVA程序

Scala的特点

  1. Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统。
  2. Scala语法简洁,能提供优雅的API。
  3. Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中。

Spark VS Hadoop

尽管 Spark 相对于 Hadoop 而言具有较大优势,但 Spark 并不能完全替代 Hadoop,Spark 主要用于替代Hadoop中的 MapReduce 计算模型。存储依然可以使用 HDFS,但是中间结果可以存放在内存中;调度可以使用 Spark 内置的,也可以使用更成熟的调度系统 YARN 等。

实际上,Spark 已经很好地融入了 Hadoop 生态圈,并成为其中的重要一员,它可以借助于 YARN 实现资源调度管理,借助于 HDFS 实现分布式存储。

此外,Hadoop 可以使用廉价的、异构的机器来做分布式存储与计算,但是,Spark 对硬件的要求稍高一些,对内存与 CPU 有一定的要求

Spark的运行架构

Spark运行架构特点

1.每个application都有自己专属的Executor进程,并且该进程在application运行期间一直驻留,executor进程以多线程的方式运行Task

2.Spark运行过程与资源管理无关,子要能够获取Executor进程并保持通信即可

核心-RDD

概念:

1.一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,不同节点上进行并行计算

2.RDD提供了一种高度受限的共享内存模型,RDD是只读的记录分区集合,不能直接修改,只能通过在转换的过程中改

RDD特性

1.高效的容错性

现有容错机制:数据复制或者记录日志RDD具有天生的容错性:血缘关系,重新计算丢失分区,无需回滚系统,重算过程在不同节点之间并行,只记录粗粒度的操作

2.中间结果持久化到内存,数据在内存中的多个RDD操作直接按进行传递,避免了不必要的读写磁盘开销

3.存放的数据可以是JAVA对象,避免了不必要的对象序列化和反序列化

RDD之间的依赖关系

RDD运行过程

(1)创建RDD对象;

(2)SparkContext负责计算RDD之间的依赖关系,构建DAG;

(3)DAGScheduler负责把DAG图分解成多个Stage,每个Stage中包含了多个Task,每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行。

搭建Spark集群

软件环境

搭建单机版集群

1.下载Spark安装包到Windows本地。

2.将Spark安装包上传到Linux的/opt目录下。

3.将Spark安装包解压到/usr/local目录下。

4.进入到Spark安装包的bin目录下,使用SparkPi来计算Pi的值,其中参数2是指两个并行度,运行结果如下。

搭建单机伪分布式集群

搭建完全分布式集群

安装scala

在Windows系统上安装Scala

1.从Scala官网下载Scala安装包,安装包名称为“scala.msi”。

2.双击scala.msi安装包,开始安装软件。

3.进入欢迎界面,单击右下角的“Next”按钮后出现许可协议选择提示框,选择接受许可协议中的条款并单击右下角的“Next”按钮。

4.选择安装路径,本文Scala的安装路径选择在非系统盘的“D:\Program Files (x86)\spark\scala\” ,单击“OK”按钮进入安装界面。

5.在安装界面中单击右下角的“Install”按钮进行安装,安装完成时单击“Finish”按钮完成安装。

6.右键单击“此电脑”图标,选择“属性”选项,在弹出的窗口中选择“高级系统设置”选项。在弹出的对话框中选择“高级”选项卡,并单击“环境变量”按钮,在环境变量对话框中,选择“Path”变量并单击“编辑”按钮,在Path变量中添加Scala安装目录的bin文件夹所在路径,如“D:\Program Files (x86)\spark\scala\bin”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值