加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

一篇文章看懂 Spark RDD

发布时间:2019-04-18 14:26:48 所属栏目:教程 来源:大数据进击之路
导读:1 简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。它产生于 UC Berkeley AMP Lab,继承了 MapReduce 的优点,但是不同于 MapReduce 的是,Spark 可以将结果保存在内存中,一直迭代计算下去,除非遇到 shuffle 。因此 Spark 能更好的
副标题[/!--empirenews.page--]

1 简介

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。它产生于 UC Berkeley AMP Lab,继承了 MapReduce 的优点,但是不同于 MapReduce 的是,Spark 可以将结果保存在内存中,一直迭代计算下去,除非遇到 shuffle 。因此 Spark 能更好的适用于数据挖掘与机器学习等要迭代的算法。值得注意的是,官网说的 Spark 是 MR 计算速度的 100 倍。仅仅适用于逻辑回归等这样的迭代计算。

一篇文章看懂 Spark RDD

2 Spark 的运行模式

  • Local 模式:多用于本机编写、测试代码。
  • Standalone 模式:这是 Spark 自带的资源调度框架,它支持完全分布式。
  • Yarn 模式:这是 hadoop 里面的一个资源调度框架,Spark 同样也可以使用。
  • Mesos 模式:为应用程序(如Hadoop、Spark、Kafka、ElasticSearch)提供API的整个数据中心和云环境中的资源管理和调度。

下面分别介绍一下 Standalone 和 Yarn 模式下任务流程。

Standalone-client 提交方式

提交命令如下:以官方给的计算 PI 的代码为例。

  1. ./spark-submit 
  2. --master spark://node1:7077 
  3. --class org.apache.spark.example.SaprkPi 
  4. ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 
  5. 1000 

执行流程图以及原理:​

Standalone-cluster 提交方式

提交命令如下:以官方给的计算 PI 的代码为例。

  1. ./spark-submit 
  2. --master spark://node1:7077 
  3. --deploy-mode cluster 
  4. --class org.apache.spark.example.SaprkPi 
  5. ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 
  6. 1000 

执行流程图以及原理:​

Yarn-cluster 提交方式

提交命令如下:以官方给的计算 PI 的代码为例。

  1. ./spark-submit 
  2. --master yarn 
  3. --deploy-mode client 
  4. --class org.apache.spark.example.SaprkPi 
  5. ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 
  6. 1000 

执行流程图以及原理:​

Yarn-cluster 提交方式

提交命令如下:以官方给的计算 PI 的代码为例。

  1. ​./spark-submit 
  2. --master yarn 
  3. --deploy-mode cluster 
  4. --class org.apache.spark.example.SaprkPi 
  5. ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 
  6. 1000 

执行流程图以及原理:​

3 RDD

Spark core 最核心的就是 Resilient Distributed Dataset (RDD) 了,RDD 比较抽象了。源码中 RDD.scala 中对 RDD 进行了一段描述。最主要的是下面的五个方面;

  1. /** 
  2. * Internally, each RDD is characterized by five main properties: 
  3. * - A list of partitions 
  4. * - A function for computing each split 
  5. * - A list of dependencies on other RDDs 
  6. * - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned) 
  7. * - Optionally, a list of preferred locations to compute each split on (e.g. block locations for 
  8. * an HDFS file) 
  9. * All of the scheduling and execution in Spark is done based on these methods, allowing each RDD 
  10. * to implement its own way of computing itself. Indeed, users can implement custom RDDs (e.g. for 
  11. * reading data from a new storage system) by overriding these functions.  
  12. */ 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读