大数据1 ---Spark 基础解析

Hadoop 历史

 

2003和2004年的Google两篇论文

 

发展历史:

2011年

1.0版本

2012年

稳定版本

2013年

2.x版本, YARN

 

MR的缺点:基于数据集的计算,面向数据,基本运算规则是从存储介质中获取(采集)数据,然后进行计算,将最后的结果存储回介质中,主要用于一次性计算。不适合数据挖掘和机器学习这样的一种迭代计算。MR是基于文件存储介质的计算,所以性能非常的慢;MR和hadoop紧密耦合在一起,不能够进行替换,违背了OCP开发原则

 

Yarn: 是一个资源调度的框架,主要是资源调度使用的。

Container: 容器,相当于一个虚拟机,virtualmachine, 因此一个节点可能有多个container

 

Spark 历史

2013年6月发布,spark出来之后,yarn才出来。

spark基于hadoop1.0 , 采用自己的方式改善hadoop 1.x中的问题。

 

性能方面:计算基于内存,迭代式计算每个任务之间是基于内存的,基于scala语言开发,非常适合迭代式计算;

  • Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。
  • Spark SQL:是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用 SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。
  • Spark Streaming:是Spark提供的对实时数据进行流式计算的组件。提供了用来操作数据流的API,并且与Spark Core中的 RDD API高度对应。
  • Spark MLlib:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。
  • 集群管理器:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度 器,叫作独立调度器。
  •  Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

Spark的特点:

 

Spark的重要角色

3.1. Driver

Spark的驱动器是执行开发程序中的main方法的进程。它负责开发人员编写的用来创建SparkContext、创建RDD,以及进行RDD的转化操作和行动操作代码的执行。如果你是用spark shell,那么当你启动Spark shell的时候,系统后台自启了一个Spark驱动器程序,就是在Spark shell中预加载的一个叫作 sc的SparkContext对象。如果驱动器程序终止,那么Spark应用也就结束了。主要负责:

1)把用户程序转为作业(JOB)

2)跟踪Executor的运行状况

3)为执行器节点调度任务

4)UI展示应用运行状况

 

3.2.  Executor(执行器)

Spark Executor是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。主要负责:

1)负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程;

2)通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

 Spark的应用场合

Loca]模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。它可以过过以下几种方式设置

Master;

 

local:所有算都运行在一个线程当中,没有任何并行计算,过常我们在本机执行一些测试代码,,就用这种模式;

local[K]指定使用k个线程来运行计算,比如local[4]就是运行4个Worker线程。

常我们的cpu,有几个core,就指定几个线程,最大化利用cpu的评算能力,

Local[*]: 这种模式直接帮你按照cpu最core来设置线程数了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值