首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spark简史:从AMP lab到大数据王者

各位朋友大家好,欢迎来到Tonii老师精益讲堂,接下来Tonii老师将带领大家进入,“每天5分钟,精益伴你行”系列课程。

今天我们来学习Spark的相关内容。

近几年随着网络通信技术和互联网软件服务的快速发展,人们获得和处理的数据量都越来越大,市场上大数据人才稀缺。与大数据相关的职位主要有数据开发、数据挖掘、数据分析等,这些职位都要求掌握分布式计算例如Hadoop、Spark等等。

如下图所示,数据挖掘、数据开发等岗位都要求候选人掌握一定分布式计算平台的知识,接下来就简要介绍一下当今最火热、应用场景广泛的大数据架构Spark

1.Spark的前世今生

Spark计算机集群是2009年由UC Berkeley AMP lab开发的一个集群计算的框架,目的是让数据分析更加快速。在大数据的场景下,数据处理的流程变慢,针对这种情况通常有两种解决办法,一个是设计出更先进的计算机,快速处理数据,另一个是利用多台计算机,协同处理数据,Spark就是采用后一种方法来提高计算速度。

Spark作为一个计算引擎,本身并不储存和计算。对于一组计算机,每个计算机节点作为独立的计算资源,而Spark计算引擎确定了各个机器之间应该如何合作处理数据。

2.Spark核心组件

Spark使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集。Spark接受的语法有SQL, Python, Scala, Java, R,读入的数据格式可以是JSON、CSV、HDFS(Hadoop分布式文件)、MySQL数据表等等。Spark引擎主要由下述的五个部分组成。

Spark Streaming:支持高吞吐量、支持容错的实时流数据处理

Spark SQL: 结构化数据查询

MLLib:Spark 生态系统里用来解决大数据机器学习问题的模块

GraphX:构建于Spark上的图计算模型

SparkR:一个R语言包,它提供了轻量级的方式使得可以在R语言中使用 Spark

3.Spark作业方式

我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core。

而Driver进程要做的第一件事情,就是向集群管理器Cluster Manager(可以是Spark Standalone集群,也可以是其他的资源管理集群,常用的集群管理器还有Yarn Mesos等等)申请运行Spark作业需要使用的资源,这里的资源指的就是Executor进程。

YARN集群管理器会根据我们为Spark作业设置的资源参数,在各个工作节点上,启动一定数量的Executor进程,每个Executor进程都占有一定数量的内存和CPU core。

4.Spark数据结构

在Spark中,数据以RDD或者DataFrame的格式储存。

Resilient Distributed Datasets(RDD):意为容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。

DataFrame:DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。在Spark1.3版本开始使用。DataFrame带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。

这使得Spark得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标。

5.Spark作业过程

下面我们简单总结一下Spark的作业过程

用户提交spark作业,Driver构建DAG图并分解成Stage

Driver向Cluster Manager申请资源(Executor)

Cluster Manager向某些Work Node发送征召信号

被征召的Work Node启动Executor进程响应征召,并向Driver申请任务

Driver分配Task给Work Node

Executor以Stage为单位执行Task,其间Driver进行监控

Driver收到Executor任务完成的信号后向Cluster Manager发送注销信号

Cluster Manager向Work Node发送释放资源信号

Work Node对应Executor停止运行

返回运行结果

6.总结

Spark是一种针对大数据集处理的计算机集群,由Scala语言构建。用户可以通过Python, R, Scala, SQL语言对数据集进行操作。用户提交指令到Spark集群后,Spark分析指令,并构建有向无环图处理方法,接下来通过Cluster Manager和Worker的配合完成并行化的数据处理,最终输出结果,相比于普通的数据库,Spark对于大批量数据和实时数据处理具有明显优势。

今天的课程就到这里,谢谢大家!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O3l-BLI6_U09E0pMsRNh8dww0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券