Spark基本介绍

一.Spark简介
Spark使用scala语言实现的,它是一种面向对象,函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集,它具有运行速度快、易用性好、通用性强和随处运行等特点。

1.Spark与Hadoop差异
Spark把中间数据放到内存中,迭代运算效率高。MapReduce中计算结果需要落地,保存到磁盘上,这样势必会影响整体速度,而Spark支持DAG图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。
Spark引进了弹性分布式数据集RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据数据衍生过程对它们进行重建。另外在RDD计算时可以通过CheckPoint来实现容错,而CheckPoint有两种方式:CheckPoint Data,和Logging The Updates,用户可以控制采用哪种方式来实现容错。
Spark更加通用。不像Hadoop只提供了Map和Reduce两种操作,Spark提供的数据集操作类型有很多种,大致分为:Transformations和Actions两大类。Transformations包括Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort和PartionBy等多种操作类型,同时还提供Count; Actions包括Collect、Reduce、Lookup和Save等操作。另外各个处理节点之间的通信模型不再像Hadoop只有Shuffle一种模式,用户可以命名、物化,控制中间结果的存储、分区等。
2.Spark适用场景
目前大数据处理场景有以下几个类型:

(1) 复杂的批量处理(Batch Data Processing):偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时

(2) 基于历史数据的交互式查询(Interactive Query):通常的时间在数十秒到数十分钟之间

(3) 基于实时数据流的数据处理(Streaming Data Processing):通常在数百毫秒到数秒之间

目前针对以上三种场景都有比较程数的处理框架,第一种可以Hadoop MapReduce,第二种可用Impala,第三种可用Storm分布式框架。但三者是独立的,各自一套维护成本比较高,而Spark的出现能够一站式平台满意以上需求。

Spark适用场景如下:

  1. Spark基于内存计算,适用与需要多次操作特定数据集的场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大。

  2. 由于RDD的特性,Spark不适用增量修改的应用模型

  3. 数据量不是特别大,但是实时性要求高

3.Spark术语
3.1 Spark运行模式
Local 本地模式 常用于本地开发测试,本地还分为local单线程和local-cluster多线程;
Standalone 集群模式 典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持 ZooKeeper来实现HA
On yarn 集群模式 运行在yarn资源管理器框架之上,由yarn负责资源管理,Spark负责任务调度和计算
On mesos 集群模式 运行在mesos资源管理器框架之上,由mesos负责资源管理,Spark负责任务调度和计算
On cloud 集群模式 比如AWS的EC2,使用这个模式能很方便的访问Amazon的S3;Spark支持多种分布式存储系统:HDFS和S3

二.Spark核心组成
1.Spark Core

2.Spark Streaming

3.Spark Sql

4.Spark Mlib

5.Spark GraphX

6.Spark R

三.Spark环境搭建
此处Hadoop和Spark集群搭建采用的是Ambari。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark是一款快速、通用、可扩展的大数据处理引擎,有着丰富的API和数据处理组件。以下是Spark基本语句介绍: 1. 创建RDD:使用SparkContext对象的parallelize()方法可以将一个集合转化为RDD。例如,下面的代码创建了一个包含1到10整数的RDD。 ``` val rdd = sc.parallelize(1 to 10) ``` 2. 转化操作:Spark支持多种转化操作,如map、filter、flatMap、union等。例如,下面的代码将rdd中的每个元素都加1。 ``` val rdd2 = rdd.map(x => x + 1) ``` 3. 行动操作:行动操作会触发Spark计算并返回结果。例如,下面的代码使用reduce()方法将rdd2中的元素相加。 ``` val sum = rdd2.reduce((x, y) => x + y) ``` 4. 键值对RDD操作:Spark还支持基于键值对的操作,如reduceByKey、groupByKey、sortByKey等。例如,下面的代码将rdd2转化为键值对RDD,并根据键进行求和。 ``` val kvRdd = rdd2.map(x => (x % 2, x)) val sumByKey = kvRdd.reduceByKey((x, y) => x + y) ``` 5. Spark SQL:Spark SQL是Spark的另一个组件,用于处理结构化数据。可以使用SparkSession对象来创建DataFrame或Dataset,并执行SQL查询。例如,下面的代码从一个json文件中创建DataFrame,并执行查询。 ``` val df = spark.read.json("file.json") df.createOrReplaceTempView("people") val result = spark.sql("SELECT * FROM people WHERE age > 18") ``` 这些是Spark基本语句,可以帮助你开始使用Spark进行数据处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值