美文网首页我爱编程
2. 第一章 Spark导论

2. 第一章 Spark导论

作者: 泊牧 | 来源:发表于2018-03-21 16:35 被阅读15次

1. Spark 简介

Spark是一个用来实现快速而通用的集群计算的平台。
Spark 不仅可以将任何Hadoop 分布式文件系统(HDFS)上的文件读取为分布式数据集,也可以支持其他支持Hadoop 接口的系统,比如本地文件、亚马逊S3、Cassandra、Hive、HBase 等。

Spark软件栈
1.1 Spark Core

Spark Core 实现了Spark 的基本功能:
1.任务调度
2.内存管理
3.错误恢复
4.与存储系统交互等模块
Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的API 定义。RDD 表示分布在多个计算节点上可以并行操作的元素集合,是Spark 主要的编程抽象。Spark Core 提供了创建和操作这些集合的多个API。

1.2 Spark SQL

Spark SQL 是Spark用来操作结构化数据的程序包。

  1. 通过Spark SQL,我们可以使用SQL或者Apache Hive 版本的SQL 方言(HQL)来查询数据。

2.Spark SQL 支持多种数据源,比如Hive 表、Parquet 以及JSON 等。

3.除了为Spark 提供了一个SQL 接口,Spark SQL 还支持开发者将SQL和传统的RDD 编程的数据操作方式相结合,不论是使用Python、Java 还是Scala,开发者都可以在单个的应用中同时使用SQL 和复杂的数据分析。

1.3 Spark Streaming

Spark Streaming 是Spark 提供的对实时数据进行流式计算的组件。

数据流:比如生产环境中的网页服务器日志,或是网络服务中用户提交的状态更新组成的消息队列,都是数据流。

Spark Streaming 提供了用来操作数据流的API,并且与Spark Core 中的RDD API 高度对应。这样一来,程序员编写应用时的学习门槛就得以降低,不论是操作内存或硬盘中的数据,还是操作实时数据流,程序员都更能应对自如。从底层设计来看,Spark Streaming 支持与Spark Core 同级别的容错性、吞吐量以及可伸缩性。

1.5 Spark MLlib

Spark 中还包含一个提供常见的机器学习(ML)功能的程序库,叫作MLlib。
MLlib 提供了很多种机器学习算法,包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。MLlib 还提供了一些更底层的机器学习原语,包括一个通用的梯度下降优化算法。所有这些方法都被设计为可以在集群上轻松伸缩的架构。

1.6 GraphX

GraphX 是用来操作图(比如社交网络的朋友关系图)的程序库,可以进行并行的图计算。
与Spark Streaming 和Spark SQL 类似,GraphX 也扩展了Spark 的RDD API,能用来创建一个顶点和边都包含任意属性的有向图。GraphX 还支持针对图的各种操作(比如进行图分割的subgraph 和操作所有顶点的mapVertices),以及一些常用图算法(比如PageRank和三角计数)。

1.7 集群管理器

就底层而言,Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(cluster manager)上运行,包括Hadoop YARNApache Mesos,以及Spark 自带的一个简易调度器,叫作独立调度器(Standalone)

1.8 Spark Shell启动

如果你有一个Hadoop 集群, 并且Hadoop 版本支持YARN, 通过为Spark master 设定
yarn-client 参数值,就可以在集群上启动Spark 作业:

$ spark-shell --master yarn-client
$ spark-shell --master yarn --deploy-mode client

如果你是在自己的计算机上运行示例,可以通过设定local[N] 参数来启动本地Spark 集
群,其中N 代表运行的线程数,或者用* 表示使用机器上所有可用的核数。比如,要在一
个8 核的机器上用8 个线程启动一个本地集群,可以输入以下命令:

$ spark-shell --master local[*]

相关文章

网友评论

    本文标题:2. 第一章 Spark导论

    本文链接:https://www.haomeiwen.com/subject/vjuwqftx.html