美文网首页
Spark学习笔记4

Spark学习笔记4

作者: wangmin | 来源:发表于2016-02-27 15:16 被阅读313次

任务的提交以及Standalone集群模式的部署

spark-submit

首先需要打包代码,如果你的代码需要依赖其他的包环境则需要单独的打包这些依赖,应为cluster会将所有依赖的jar包分发到各个节点上进行使用。推荐的方法是将依赖包和程序都统一的打成一个包,这样就可以直接使用spark-submit方法来运行,具体的pom.xml配置如下:

<dependencies>
    <dependency> <!-- Spark dependency -->
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.4.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.13</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <!-- 使用1.7 jdk进行编译 -->
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.5.5</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

spark && hadoop 的scope值都设置为provided,然后打包的过程是把需要依赖的第三方东西打成一个统一的jar包去运行,使用的是maven-compiler-plugin插件。

在服务器上提交的命令如下:

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

spark-submit 可以加载一个配置文件,默认是加载在conf/spark-defaults.conf

Spark Standalone Mode

除了运行在Mesos和YARN集群之外,spark也提供了简单的独立部署模式。可以通过手动的启动master和worker,也可以通过spark提供的启动脚本来启动。独立部署也可以通过运行在一个机器上,进行测试。

  • 为了安装你需要放置一个编译好的spark版本到每个机器上。
  • 启动集群有两种方式,一种是手动启动,另一种是通过启动脚本启动。

手动启动spark集群

启动一个独立的master可以使用如下的命令:

./sbin/start-master.sh

一旦启动可以通过访问:http://localhost:8080端口访问master,打出的spark://HOST:PORT 的URL,work节点可以使用这个链接连到master上。

可以使用如下的命令来使worker节点连接到master上:

./sbin/start-slave.sh <worker#> <master-spark-URL>

worker在加入到master后可以访问master的http://localhost:8080,可以清洗的看到被加入的worker节点的信息。

在启动master和worker的时候可以带上参数进行设置,参数的列表如下:其中比较重要的是:

  • -c CORES, 这个是指定多少个cpu分配给spark使用,默认是全部cpu
  • -m MEM,这个是指定多少的内存分配给spark使用,默认是全部的内存的减去1g的操作系统内存全部分配给spark使用。一般的格式是1000M or 2G
  • -d DIR, 这个指定spark任务的日志输出目录。
  • –properties-file FILE 指定spark指定加载的配置文件的路径默认是: conf/spark-defaults.conf

脚本方式部署

通过spark的部署脚本部署首先需要在spark的主目录下创建一个conf/slaves的文件,这个文件中每一行代表一个worker的hostname.需要注意的是,master访问worker节点是通过SSH访问的,所以需要master通过ssh无密码的登录到worker,否则需要设置一个 SPARK_SSH_FOREGROUND的环境变量,这个变量的值就是每个worker的密码

然后可以通过spark安装目录下的sbin/….sh文件进行启动, 如果要启动和停止master和slave可以使用:

  • sbin/start-all.sh
  • sbin/stop-all.sh

注意的是这些脚本必须是在master机器上执行

同时你可以通过配置集群的 conf/spark-env.sh文件来进一步配置集群的环境。但是这也文件需要通过拷贝conf/spark-env.sh.template文件来创建,并且需要把这个文件拷贝到所有的worker节点上。

其中: SPARK_MASTER_OPTS && SPARK_WORKER_OPTS 两个配置项比较复杂。

通过在SparkContext构造器中传入spark://IP:PORT这个来启用这个集群。同时可以在交互式的方式启动脚本中使用:./bin/spark-shell –master spark://IP:PORT 来启动集群执行。

独立部署模式的集群现在只是简单的支持FIFO调度。 为了允许多个并发用户,可以通过SparkConf设置每个应用程序需要的资源的最大数。默认情况下,它会请求使用集群的全部的核,而这只是同时运行一个应用程序才回有意义。

val conf = new SparkConf()
             .setMaster(...)
             .setAppName(...)
             .set("spark.cores.max", "10")
val sc = new SparkContext(conf)

除了可以在程序中指定你也可以在spark-env.sh中设置默认的值,

export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=<value>"

spark的高可用设置

spark的高可用设置有两种,一种是通过Zookeeper来实现,另一种是通过本地文件系统来实现。

  • 使用ZooKeeper备份master,利用zookeeper提供的领导选举和状态保存,你可以让更多的master连接到zookeepre实例。一个将会被选举为leader其他的则会保存备份他的状态。如果master死掉,zookeeper可以选举一个新的leader,整个过程需要1到2分钟的时间,但是这个过程只会对新的任务调度有影响。为了使用这种方式需要的配置项为:SPARK_DAEMON_JAVA_OPTS,这个配置项有三个配置信息:spark.deploy.recoveryMode/spark.deploy.zookeeper.url/spark.deploy.zookeeper.dir
  • 使用本地文件系统来恢复该节点。为了使用这种方式需要的配置项为:SPARK_DAEMON_JAVA_OPTS,这个配置项有两个配置信息:spark.deploy.recoveryMode、spark.deploy.recoveryDirectory

相关文章

  • Spark学习笔记4

    任务的提交以及Standalone集群模式的部署 spark-submit 首先需要打包代码,如果你的代码需要依赖...

  • spark 学习笔记

    Spark学习笔记 Data Source->Kafka->Spark Streaming->Parquet->S...

  • spark

    *Spark Spark 函数Spark (Python版) 零基础学习笔记(一)—— 快速入门 1.map与fl...

  • 2020-03-17

    spark学习笔记centos安装Oracle VirtualBox: Centos安装Vagrant

  • spark核心编程

    Spark 学习笔记 Spark 架构及组件 client:客户端进程,负责提交job到master Driver...

  • Spark Core 学习笔记

    Spark Core 学习笔记 1、Spark 简介 ​ Spark 是一种用于大规模数据处理的统一计算引擎...

  • Configure Log4j properties for S

    随笔记录程序员成长之路 配置spark streaming 的Log4j, 需要在spark-submit的--c...

  • Spark Architecture

    OReilly.Learning.Spark 学习笔记 Spark里所有操作都是对RDD来的。分为两种 1. Tr...

  • 《架构师训练营》之大数据应用

    极客时间《架构师训练营》第十三周学习笔记 Spark 架构 Spark 则是 UC Berkeley AMP la...

  • 【Spark学习笔记】初识spark

    1.Spark简介 快速且通用的集群计算平台 1.1.快速性: Spark扩充了流行的mapreduce计算模型 ...

网友评论

      本文标题:Spark学习笔记4

      本文链接:https://www.haomeiwen.com/subject/kwvwkttx.html