剖析spark-shell

通过word count在spark-shell中执行的过程,我们想看看spark-shell做了什么?spark-shell中有以下一段脚本,见代码清单1-1。

代码清单1-1     spark-shell


1

2

3

4

5

6

7

8

9

10

11

function main() {

  if $cygwin; then

stty -icanonmin 1 -echo /dev/null 2>&1

    export SPARK_SUBMIT_OPTS="$SPARK_SUBMIT_OPTS -Djline.terminal=unix"

    "$FWDIR"/bin/spark-submit --class org.apache.spark.repl.Main "${SUBMISSION_OPTS[@]}" spark-shell "${APPLICATION_OPTS[@]}"

sttyicanon echo /dev/null 2>&1

  else

    export SPARK_SUBMIT_OPTS

    "$FWDIR"/bin/spark-submit --class org.apache.spark.repl.Main "${SUBMISSION_OPTS[@]}" spark-shell "${APPLICATION_OPTS[@]}"

fi

}

我们看到脚本spark-shell里执行了spark-submit脚本,那么打开spark-submit脚本,发现其中包含以下脚本。


1

exec "$SPARK_HOME"/bin/spark-class org.apache.spark.deploy.SparkSubmit "${ORIG_ARGS[@]}"

脚本spark-submit在执行spark-class脚本时,给它增加了参数SparkSubmit 。打开spark-class脚本,其中包含以下脚本,见代码清单1-2。

代码清单1-2     spark-class


1

2

3

4

5

6

7

8

9

10

11

12

if [ -n "${JAVA_HOME}" ]; then

  RUNNER="${JAVA_HOME}/bin/java"

else

  if [ `command -v java` ]; then

    RUNNER="java"

  else

    echo "JAVA_HOME is not set" >&2

    exit 1

  fi

fi

exec "$RUNNER" -cp "$CLASSPATH" $JAVA_OPTS "[email protected]"

读到这,应该知道Spark启动了以SparkSubmit为主类的jvm进程。

注:spark-shell是linux shell的最佳实践

时间: 2024-08-08 17:55:45

剖析spark-shell的相关文章

第一次看到Spark崩溃:Spark Shell内存OOM的现象!

第一次看到Spark崩溃 Spark Shell内存OOM的现象 要搞Spark图计算,所以用了Google的web-Google.txt,大小71.8MB. 以命令: val graph = GraphLoader.edgeListFile(sc,"hdfs://192.168.0.10:9000/input/graph/web-Google.txt") 建立图的时候,运算了半天后直接退回了控制台. 界面xian scala> val graph = GraphLoader.e

【原创 Hadoop&Spark 动手实践 5】Spark 基础入门,集群搭建以及Spark Shell

Spark 基础入门,集群搭建以及Spark Shell 主要借助Spark基础的PPT,再加上实际的动手操作来加强概念的理解和实践. Spark 安装部署 理论已经了解的差不多了,接下来是实际动手实验: 练习1 利用Spark Shell(本机模式) 完成WordCount spark-shell 进行Spark-shell本机模式 第一步:通过文件方式导入数据 scala> val rdd1 = sc.textFile("file:///tmp/wordcount.txt")

Spark Shell 实现 Word Count

0. 说明 在 Spark Shell 实现 Word Count RDD (Resilient Distributed dataset), 弹性分布式数据集. 1. 实现 1.1 分步实现 # step 1 加载文档 val rdd1 = sc.textFile("file:///home/centos/wc1.txt") # step 2 压扁 val rdd2 = rdd1.flatMap(line=>{line.split(" ")}) # step

二、spark入门之spark shell:文本中发现5个最常用的word

scala> val textFile = sc.textFile("/Users/admin/spark-1.5.1-bin-hadoop2.4/README.md") scala> val topWord = textFile.flatMap(_.split(" ")).filter(!_.isEmpty).map((_,1)).reduceByKey(_+_).map{case (word,count) =>(count,word)}.sor

在Spark shell中基于HDFS文件系统进行wordcount交互式分析

Spark是一个分布式内存计算框架,可部署在YARN或者MESOS管理的分布式系统中(Fully Distributed),也可以以Pseudo Distributed方式部署在单个机器上面,还可以以Standalone方式部署在单个机器上面.运行Spark的方式有interactive和submit方式.本文中所有的操作都是以interactive方式操作以Standalone方式部署的Spark.具体的部署方式,请参考Hadoop Ecosystem. HDFS是一个分布式的文件管理系统,其

Spark Shell

Spark 的 shell 是一个强大的交互式数据分析工具. 1. 搭建Spark 2. 在 Spark 目录里使用下面的方式开始运行: ./bin/spark-shell 3.

深度剖析Spark分布式执行原理

转载自:https://zhuanlan.zhihu.com/p/25772054 让代码分布式运行是所有分布式计算框架需要解决的最基本的问题. Spark是大数据领域中相当火热的计算框架,在大数据分析领域有一统江湖的趋势,网上对于Spark源码分析的文章有很多,但是介绍Spark如何处理代码分布式执行问题的资料少之又少,这也是我撰写文本的目的. Spark运行在JVM之上,任务的执行依赖序列化及类加载机制,因此本文会重点围绕这两个主题介绍Spark对代码分布式执行的处理.本文假设读者对Spar

一、spark入门之spark shell:wordcount

1.安装完spark,进入spark中bin目录: bin/spark-shell scala> val textFile = sc.textFile("/Users/admin/spark/spark-1.6.1-bin-hadoop2.6/README.md") scala> textFile.flatMap(_.split(" ")).filter(!_.isEmpty).map((_,1)).reduceByKey(_+_).collect().

运维系列:08、Spark Shell

./bin/spark-shell --master spark://MASTER:PORT 启动 集群模式: MASTER=spark://`hostname`:7077 bin/spark-shell bin/spark-shell --master spark://es122:7077 单机模式: bin/spark-shell local[4] 加载一个text文件 Spark context available as sc. 连接到Spark的master之后,若集群中没有分布式文件系

TaskScheduler内幕天机:Spark shell案例,TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解

TaskSchedulerBackend与SchedulerBackend FIFO与FAIR两种调度模式 Task数据本地性资源的分配 一.TaskScheduler运行过程(Spark-shell角度) 1.启动Spark-shell 当我们spark-shell本身的时候命令终端返回来的主要是ClientEndpoint和SparkDeploySchedulerBakcend.这是因为此时还没有任何应用程序Job的触发,这是启动Application本身而已,所以主要就是实例化SparkC