其他分享
首页 > 其他分享> > Spark部署模式另类详解

Spark部署模式另类详解

作者:互联网

Spark部署模式另类详解

浪尖 浪尖聊大数据

一, Spark的运行模式讲解图片

        Spark运行模式有很多种,本文主要是将local,Standalone,yarn。因为平时生产中用的最多的也是yarn,所以,我们后面也重点讲解基于yarn的。其实,原因很简单,集群服务角色越多,越难运维,所以,统一调度系统,也是降低运维难度,减少故障源。

1,  local模式

  这种模式,主要是用来简单的逻辑验证类的,也可以进行对Spark应用进行debug。实际生产中我们可以用client模式进行验证性测试。使用方法很简单,我们只需要指定Master为local即可,此时要强调的是local[n],这个n代表线程数,也即它决定了你本地模式的并发度(能并行几个task),local内部不指定默认线程数为1,local[*]代表当前cpu的核心数个线程。

图片

2,  Standalone模式

  所谓Standalone模式,就是采用Spark的master-worker进行资源管理和应用的调度。


图片

3,  Spark On yarn

  所谓yarn模式,就是资源管理和app调度交给了yarn来做。此时常见的两种模式,就是yarn-client,yarn-cluster。主要区别就是Driver这个Spark App的应用内部角色运行的位置,运行在submit提交的进程中也即客户端成为client模式,与AppMaster一起运行在非client进程中成为cluster模式。Yarn-client模式,明显的缺点就是客户端断开APP就会死掉,主要用来调试。


image.png




二, Spark local模式的使用

这种模式,既可以使用Spark-shell进行测试,也可以采用idea进行本地测试。

1,  准备

  首先解压Spark2.1.2(spark-2.1.2-bin-hadoop2.7.tgz),并配置环境变量。

image.png2,  Spark-shell本地测试

输入spark-shell --master local[4]

2.1并行化数据集

val data = Array(1, 2, 3, 4, 5)

val distData = sc.parallelize(data)

image.png



2.2读取本地文件

读取$SPARK_HOME/LICENSE文件

image.png

简单的wordCount并排序的程序

image.png

2.3 读取hdfs上文件

由于我们前面的关于/etc/profile配置已经包含了hadoop的配置,Spark直接可以找到hadoop配置,所以只要我们不加file前缀,就默认读取的是hdfs的数据,当然,也可以指定绝对路径(hdfs://Luffy.OnePiece.com:8020/user/root/input/wc.txt)。

image.png

image.png

三, Spark Standalone模式的使用1,  配置

    slaves  spark-defaults.conf  spark-env.sh这三个文件,原来后面都带.template,重命名。slaves修改内容为:Luffy.OnePiece.com,这里面应该是要启动的worker的主机名列表。spark-defaults.conf,主要是一些默认配置,在这里需要指定

spark.master    spark://Luffy.OnePiece.com:7077

spark-env.sh配置,主要是添加以下


image.png


然后这配置就算完成了

2,  启动

启动master

start-master.sh

启动worker,本机

start-slave.sh spark://Luffy.OnePiece.com:7077

也可以执行启动所有机器的Worker命令

start-slaves.sh,不过这个要配置包括本机在内的免秘钥登录。

启动完成之后

image.png

3,  读取本地文件

    还是那spark-shell(启动的时候可以指定master不指定的话会读取spark-defaults.conf)使用为例,读取本地文件,启动后在浏览器上查看

http://luffy.onepiece.com:8080/

image.png

      

image.png

image.png


4,  读取hadoop文件

    只需换掉3,步骤中的file://就好,没有带hdfs的文件系统头(hdfs://Luffy.OnePiece.com:8020/user/root/input/wc.txt),原因也是因为我们在/etc/profile配置了hadoop的配置。


image.png


四, Spark On yarn的使用

在on yarn模式的时候,实际上就不需要启动spark的master和worker了,spark只需要找到yarn的配置即可,主要去掉虚拟内存检测,分配虚假cpu和内存。yarn-site.xml配置内容如下:


image.png


<property>

    <name>yarn.nodemanager.vmem-check-enabled</name>

    <value>false</value>

</property> 


 <property>

      <name>yarn.nodemanager.resource.memory-mb</name>

      <value>13968</value>

      <description>64G. Physical memory, in MB, to be made available to running containers.</description>

  </property>

  <property>

      <name>yarn.nodemanager.resource.cpu-vcores</name>

      <value>6</value>

      <description>Number of CPU cores that can be allocated for containers.</description>

  </property>

<property>

        <name>yarn.resourcemanager.hostname</name>

        <value>Luffy.OnePiece.com</value>

</property>

<property>

    <name>yarn.log-aggregation-enable</name>

    <value>true</value>

  </property>

 <property>

    <description>Classpath for typical applications.</description>

    <name>yarn.application.classpath</name>

    <value>/opt/modules/spark-2.1.2/jars/*,$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*,

$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,$HADOOP_YARN_HOME/share/hadoop/yarn/*,$HADOOP_YARN_HOME/share/hadoop/yarn/lib/*

    </value>

  </property>

image.png

hdfs-site.xml要加上去掉权限检查



image.png

<property>

  <name>dfs.permissions</name>

  <value>false</value>

</property>

image.png


再就是要讲hdfs-site.xml和core-site.xml复制到spark的conf/目录下,假如要使用hive表功能的话hive-site.xml也要添加进去

image.png

spark-defaults.conf配置内容如下(依赖的jar都可以放到此处,避免每次copy):

spark.driver.extraClassPath /opt/modules/spark-2.1.2/jars/*:/opt/modules/hadoop-2.7.4/share/hadoop/hdfs/*:/opt/modules/hadoop-2.7.4/share/hadoop/common/*:/opt/modules/hadoop-2.7.4/share/hadoop/common/lib/*:/opt/modules/hadoop-2.7.4/share/hadoop/yarn/*:/opt/modules/hadoop-2.7.4/share/hadoop/yarn/lib/*:/opt/modules/spark-2.1.2/jars/*:/opt/modules/hive-1.2.1/lib/*:/opt/modules/hbase-1.2.0/lib/*

spark.executor.extraClassPath /opt/modules/spark-2.1.2/jars/*:/opt/modules/hadoop-2.7.4/share/hadoop/hdfs/*:/opt/modules/hadoop-2.7.4/share/hadoop/common/*:/opt/modules/hadoop-2.7.4/share/hadoop/common/lib/*:/opt/modules/hadoop-2.7.4/share/hadoop/yarn/*:/opt/modules/hadoop-2.7.4/share/hadoop/yarn/lib/*:/opt/modules/spark-2.1.2/jars/*:/opt/modules/hive-1.2.1/lib/*:/opt/modules/hbase-1.2.0/lib/*

image.png


spark-env.sh的配置内容如下:



image.png

export JAVA_HOME=/opt/modules/jdk1.8.0_121

export HADOOP_HOME=/opt/modules/hadoop-2.7.4/

export HADOOP_PREFIX=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

image.png

       首先就是要启动yarn相关的服务。

image.png

再次以spark-shell的使用为例,我们让其以yarn-client的模式(其实,也只能运行于该模式)

Spark-shell on yarn读取hdfs上文件

image.png

Spark-shell local模式读取本地文件

image.png

提交Spark的pi运行案例

spark-submit --class org.apache.spark.examples.SparkPi     --master yarn     --deploy-mode cluster     --driver-memory 4g     --executor-memory 2g     --executor-cores 1  examples/jars/spark-examples*.jar     10

image.png

启动spark-sql的时候要先删除,

rm -rf jars/derby-10.12.1.1.jar

否则会报错误。

五, 总结Spark在生产中的场景image.png


Spark在企业中的应用场景。

1,  Spark Streaming的准实时处理。

2,  Spark core/sql的离线处理。

3,  Spark sql+hive的metastore做仓库。

4,  Spark mllib/ml/TensorFlow/deeplearning4j等做机器学习。

5,  Spark也可以代替sqoop进行RMDBS和hadoop集群数据导入导出。



标签:opt,另类,hadoop,yarn,HADOOP,详解,spark,Spark
来源: https://blog.51cto.com/15127544/2662845