Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)

本文全部手写原创,请勿复制粘贴、转载请注明出处,谢谢配合!

Spark运行模式


Local模式

Local[n] 本地模式 启动n个线程
Local模式通常用于测试用,直接bin/spark-shell启动即可。


Standalone模式

Standalone是Spark自带的资源管理器,无需依赖任何其他资源管理系统

配置

vim conf/spark-env.sh

可以看到其中关于standalone模式的配置参数
Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第1张图片
Standalone参数

主要配置如下参数:

SPARK_MASTER_HOST=master
SPARK_MASTER_PORT=7077
SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=1g
SPARK_CONF_DIR=/usr/local/spark-2.2.0-bin-hadoop2.6.0-cdh5.11.1/conf

启动

cd /usr/local/spark-2.2.0-bin-hadoop2.6.0-cdh5.11.1/sbin/
./start-master.sh //在哪台机器上启动 那台机器就成了Master
./start-slaves.sh //启动所有的从节点

  • sbin目录总结:
    sbin/start-master.sh - 在当前机器上启动一个主节点。
    sbin/start-slaves.sh- 在conf/slaves文件中指定的所有机器上启动一个从节点。
    sbin/start-slave.sh - 在当前机器上启动一个从节点。
    sbin/start-all.sh - 启动所有master和slave。
    sbin/stop-master.sh- 停止master。
    sbin/stop-slaves.sh- 停止所有slave。
    sbin/stop-all.sh - 停止所有master和slave。

验证

  • 使用命令jps查看进程。master机器上会有Master和Worker。slave机器上会有Worker进程。


    Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第2张图片
    master机器
    Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第3张图片
    slave机器
  • web端界面显示


    Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第4张图片
    8080端口界面

客户端测试

bin/spark-shell --master spark://master:7077

Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第5张图片
启动客户端

可以在Web端实时的看见Spark的运行任务

Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第6张图片
WEB UI

Yarn模式

使用Hadoop中的Yarn作为资源管理器。
Yarn Cluster:主程序逻辑和任务都运行在Yarn集群中
Yarn Client:主程序逻辑运行在本地,任务运行在Yarn集群中

配置

HADOOP_CONF_DIR必须有export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0-cdh5.11.1/etc/hadoop
其他可选,根据自己的需求配

Yarn参数

启动

bin/spark-shell --master yarn //注意要先启动hadoop

验证

能在yarn的web界面上看见spark shell这个进程:


Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第7张图片
yarn WEB UI

Spark程序提交


提交方式分为Standalone(client\cluster)和Yarn(client\cluster) 四种。
首先编写好我们的wordcount程序然后打成jar包,传到我们的服务器上。

object Wordcount {
  def main(args:Array[String]): Unit ={
   val conf = new SparkConf().setAppName("WordCount")
   val sc = new SparkContext(conf)
   val inputpath = args(0)
   val lines = sc.textFile(inputpath)
   val words = lines.flatMap(line=>line.split(" "))
   words.count()
   val wordcounts = words.map(word=>(word,1)).reduceByKey(_+_)
   wordcounts.saveAsTextFile(args(1))
 } 
}

我们需要使用spark的bin/spark-submit来提交我们的程序,具体参数使用help命令查看:
bin/spark-submit --help

Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第8张图片
spark-submit

Standalone模式 client

bin/spark-submit \
--class cn.lyl.spark.Wordcount  \
--master spark://master:7077  \
--executor-memory 1G  \
wordcount.jar \
hdfs://master:8020/user/README.txt \
hdfs://master:8020/user/wordcount1
Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第9张图片
wordcount1文件目录

Standalone模式 cluster

bin/spark-submit \
--class cn.lyl.spark.Wordcount \
--master spark://master:7077 \
--executor-memory 1G \
--deploy-mode cluster \
wordcount.jar \
hdfs://master:8020/user/README.txt \
hdfs://master:8020/user/wordcount2
Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn)_第10张图片
集群模式下Web监控界面

Yarn模式 client

bin/spark-submit \
--class cn.lyl.spark.Wordcount \
--deploy-mode client \
--master yarn \
--executor-memory 1G \
wordcount.jar \
hdfs://master:8020/user/README.txt \
hdfs://master:8020/user/wordcount3
Yarn Client

Yarn cluster

bin/spark-submit \
--class cn.lyl.spark.Wordcount \
--deploy-mode cluster  \    
--master yarn  \
--executor-memory 1G  \
wordcount.jar  \
hdfs://master:8020/user/README.txt  \
hdfs://master:8020/user/wordcount4

你可能感兴趣的:(Spark入门教程(三)Spark运行模式(Local、Standalone、Yarn))