spark运行模式

1概述

  1. saprk的运行模式:local/yarn/standalone/mesos/k8s;local模式是最常用的一种模式。
  2. spark目录介绍
total 108
drwxr-xr-x. 3 hadoop hadoop  4096 Mar  3 08:34 bin
drwxrwxr-x. 2 hadoop hadoop  4096 Apr 20 07:47 conf
drwxr-xr-x. 5 hadoop hadoop  4096 Mar  3 08:34 data
drwxrwxr-x. 4 hadoop hadoop  4096 Mar  3 08:34 examples
drwxrwxr-x. 2 hadoop hadoop 12288 Apr 20 03:31 jars
-rw-r--r--. 1 hadoop hadoop 17881 Mar  3 08:34 LICENSE
drwxr-xr-x. 2 hadoop hadoop  4096 Mar  3 08:34 licenses
drwxrwxr-x. 2 hadoop hadoop  4096 Apr 20 03:36 logs
-rw-r--r--. 1 hadoop hadoop 24645 Mar  3 08:34 NOTICE
drwxr-xr-x. 6 hadoop hadoop  4096 Mar  3 08:34 python
-rw-r--r--. 1 hadoop hadoop  3809 Mar  3 08:34 README.md
-rw-r--r--. 1 hadoop hadoop   136 Mar  3 08:34 RELEASE
drwxr-xr-x. 2 hadoop hadoop  4096 Mar  3 08:34 sbin
drwxrwxr-x. 3 hadoop hadoop  4096 Apr 19 20:45 work
drwxrwxr-x. 2 hadoop hadoop  4096 Mar  3 08:34 yarn

用户可执行文件:bin
系统可执行文件:sbin
配置文件:conf
放置的jar包:jars
(在saprk1.x中该目录下只有一个大的包,所有jar包都在这个包里面。在spark2.x该jars目录下就有很多的小的jar包。这里存在一个spark的调优,后面会讲解。)
spark中的例子:examples

3.核心配置文件

saprk-defaults.conf、spark-env.sh(自己cp一份spark-env.sh.template

4.日志信息
执行spark的启动命令时,出现问题现有的打印在屏幕上的日志可能太少不便于debug,此时可进入spark的conf目录下,该目录下有一个log4j.properties.template文件,拷贝一份,将其中“log4j.rootCategory=INFO,console”中的”INFO”改成”DEBUG”即可。

其中 [level] 是日志输出级别,共有5级:
 FATAL      0  
ERROR      3   为严重错误 主要是程序的错误
WARN       4   为一般警告,比如session丢失
INFO       6   为一般要显示的信息,比如登录登出
DEBUG      7  为程序的调试信息

2 local模式

  1. 在spark-env.sh中配置如下信息,即可使用(只需启动start-dfs.sh)
    export JAVA_HOME=/usr/java/jdk1.8.0_45

  2. 简单来说local就是一种OOTB: out of the box 开箱即用。基本不需要做任何改动。

  3. 启动方式:在${SPARK_HOME}/bin下执行./spark-shell --master local[n]
    n代表该作业所需要消耗的core的数量。
  4. 简单测试

本地文件测试

val file=sc.textFile("file:///home/hadoop/data/input.txt")
执行上面一句话后查看web UI :http://192.168.137.130:4040 并没有变化,因为没有进行action。

file.count(将会执行action,这是查看web UI )

3 Standalone模式(Spark集群)

  • Standalone模式相当于Spark集群模式,对于Hadoop集群我们知道: NN/DN RM/NM,部署在不同的机器上;Spark集群:和Hadoop集群是一样的,如果布置多台机器,那么每台机器都要有Master/Worker(主节点Master,从节点Worker)。

    • 配置
(集群内的机器都要修改)
vi spark-env.sh 添加
   SPARK_MASTER_HOST=192.168.149.141 ##配置Master节点
   SPARK_WORKER_CORES=2 ##配置应用程序允许使用的核数(默认是所有的core)
   SPARK_WORKER_MEMORY=2g  ##配置应用程序允许使用的内存(默认是一个G)
vi slaves 添加
    192.168.137.200
    192.168.137.201
    192.168.137.202
bin目录下:  ./spark-shell --master spark://hadoop:7077

这是提交一个作业会默认占光所有的core,作业未完成重新开启一个作业,那么新作业则没有core,将会处于等待状态。可以进行参数修改:./spark-shell --master spark://hadoop:7077 --total-executor-cores 1,来指定该spark-shell作业占用的core数为1;一个core默认占用一个G的内存。

Spark on YARN

这时候并不需要启动Master/Worker,因为他是把作业提交到yarn上运行的,所以不需要任何的spark相关的进程。仅仅是将spark作为一个客户端而已。
(这里可能会遇到错误,详见这篇博客

  • 启动yarn
    start-yarn.sh

  • 配置:

vi saprk-env.sh
添加:
HADOOP_CONF_DIR=/opt/software/hadoop-2.6.0-cdh5.7.0/etc/hadoop
不添加这个配置会报错的。
  • 启动:
./spark-shell --master yarn --jars /opt/software/hive/lib/mysql-connector-java-5.1.45   
说明:--jars后面跟的是mysql驱动包,不加上会报错的。

总结:
这几种分布式部署方式各有利弊,通常需要根据实际情况决定采用哪种方案。进行方案选择时,往往要考虑公司的技术路线(采用Hadoop生态系统还是其他生态系统)、相关技术人才储备等。上面涉及到Spark的许多部署模式,究竟哪种模式好这个很难说,需要根据你的需求,如果你只是测试Spark Application,你可以选择local模式。而如果你数据量不是很多,Standalone 是个不错的选择。当你需要统一管理集群资源(Hadoop、Spark等),那么你可以选择Yarn或者mesos,但是这样维护成本就会变高。

从对比上看,mesos似乎是Spark更好的选择,也是被官方推荐的但如果你同时运行hadoop和Spark,从兼容性上考虑,Yarn是更好的选择。如果你不仅运行了hadoop,spark。还在资源管理上运行了docker,Mesos更加通用。Standalone对于小规模计算集群更适合!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值