spark安装和使用

local模式

概述

local模式就是在一台计算机上运行spark程序,通常用于在本机上练手和测试,它将线程映射为worker。   

1)local: 所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式;

2)local[K]: 指定使用几个线程来运行计算,比如local[4]就是运行4个Worker线程。通常我们的Cpu有几个Core,就指定几个线程,最大化利用Cpu的计算能力;

3)local[*]: 这种模式直接帮你按照Cpu最多Cores来设置线程数了

安装使用

1)上传并解压spark安装包

 

tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/

2) 官方求PI案例

 

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--executor-memory 1G \

--total-executor-cores 2 \

./examples/jars/spark-examples_2.11-2.1.1.jar \

100

 

 

该算法是利用蒙特·卡罗算法求PI,结果如下:

standalone模式

构建一个由Master+Slave构成的Spark集群,采用Spark原生的资源管理器,Spark运行在集群中。

Yarn模式

概述:

Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。

yarn-client:主程序逻辑运行在本地,任务运行在Yarn集群中

yarn-cluster:APPMaster;主程序逻辑和任务都运行在Yarn集群中。适用于生产环境。

安装使用:

1)修改hadoop配置文件yarn-site.xml,添加如下内容:

 <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
        <property>
                <name>yarn.nodemanager.pmem-check-enabled</name>
 <value>false</value>
        </property>
        <!--是否启动一个线程检查每个任务正使用的虚内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
        <property>
                <name>yarn.nodemanager.vmem-check-enabled</name>
                <value>false</value>
        </property>

2)分发配置文件

xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml

3)修改spark-env.sh,添加如下配置:

YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop

4)执行一个程序

$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100

注意:

1.运行程序之前要确保hdfs和yarn已经正常启动

2.修改yarn的配置文件之后要重启yarn以让配置文件生效

3.在yarn模式下,是否需要在所有的结点都部属spark程序包?不需要,因为是运行在yarn上,资源管理和调度是由yarn负责的。只需要在其中一个结点提供spark的客户端。

spark-shell

启动spark-shell的正确姿势是:进入到spark的底层目录,输入bin/spark-shell 

关闭spark-shell的正确姿势是::quit,注意冒号

其部分参数如下(非常类似于下文的spark-submit):

Options:
  --master MASTER_URL         spark://host:port, mesos://host:port, yarn, or local.
  --deploy-mode DEPLOY_MODE   Whether to launch the driver program locally ("client") or
                              on one of the worker machines inside the cluster ("cluster")
                              (Default: client).

spark作业提交

基本语法:
bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]

\是分隔符;

--表示这个选项是可有可无,而且顺序是可变换的

--master 指定Master的地址,默认为Local。

  如果是yarn模式,则是yarn

  如果是standalone模式,则是spark://master:port

  如果是local模式,则是local,local[n](n表示核数),local[*](*表示按照cpu核数来设定线程数)

--class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)

--deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*

--conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value”

application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar

application-arguments: 传给main()方法的参数

--executor-memory 1G 指定每个executor可用内存为1G

--total-executor-cores 2 指定每个executor使用的cup核数为2个

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/chxyshaodiao/p/12361782.html