zoukankan      html  css  js  c++  java
  • spark的运行方式——转载

    本文转载自:      spark的运行方式     

    本文主要讲述运行spark程序的几种方式,包括:本地测试、提交到集群运行、交互式运行 等。

    在以下几种执行spark程序的方式中,都请注意master的设置,切记。

    运行自带样例

    可以用 run-example 执行spark自带样例程序,如下:

    ./bin/run-example org.apache.spark.examples.SparkPi

    或者同样的:

    run-example SparkPi

    交互运行

    可以用 spark-shell 以交互方式执行spark代码,这些操作都将由spark自动控制并以分布式处理的形式完成。首先,进入spark shell:

    ./bin/spark-shell

    然后就可以直接执行spark代码了。spark-shell非常适合学习API,初学的话多在里面敲敲很好的。

    • Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可,否则用户自己再初始化,就会出现端口占用问题,相当于启动两个上下文。
    • 在使用spark-shell时,可以通过 –driver-class-path 选项来指定所依赖的jar文件,多个jar文件之间使用分号”:”分割。
    • 如果觉得spark-shell的日志过多而影响观看结果,可以配置一下日志参数,将conf目录下的log4j.properties.template复制一个并命名为log4j.properties,并修改其中的日志等级就ok了。

    本地运行测试

    如果你是在windows上开发spark程序,然后提交到linux运行。那么本地测试将会方便开发。
    本地测试spark程序,需要将master设置为local[n]。同时注意:sc.textFile()可以加载本地文件而不一定是hdfs文件,这对于开发测试是非常方便的。
    本地运行测试spark程序,既可以在IDE中进行,也可以手动在命令行中执行,参见我的linux下spark开发环境配置

    windows本地测试时,需要用到hadoop的一个东东(winutils.exe),否则会出现异常。使用方法是:新建一个文件夹 D:hadoopin 并将 winutils.exe 放入其中,并保证winutils.exe双击运行没有报*.dll缺失的错误,然后 System.setProperty("hadoop.home.dir", "D:\hadoop\") 设置一下hadoop目录即可。

    提交到集群

    可以用 spark-submit 提交任务到集群执行,如下(这里我们指定了集群URL为spark standalone集群):

    spark-submit 
    --class 应用程序的类名 
    --master spark://master:7077 
    --jars 依赖的库文件,多个包之间用逗号","分割 
    --executor-memory 2G 
    --total-executor-cores 20 
    spark应用程序的jar包 你的应用程序需要的参数(即main方法的参数)

    --master参数指定集群URL,可以是独立集群、YARN集群、Mesos集群,甚至是本地模式。见下表:

    master可选值描述
    spark://host:port spark standalone集群,默认端口为7077。
    yarn YARN集群,当在YARN上运行时,需设置环境变量HADOOP_CONF_DIR指向hadoop配置目录,以获取集群信息。
    mesos://host:port Mesos集群,默认端口为5050。
    local 本地模式,使用1个核心。
    local[n] 本地模式,使用n个核心。
    local[*] 本地模式,使用尽可能多的核心。
    • 如果jar包所需的依赖较少,通过--jars手动指定还可以,如果很多,最好使用构建工具打包。
    • 需要注意的是,你的spark程序需要打包成jar包,spark-submit会将程序包分发到各个worker节点,同时这些上传到worker节点的文件,需要定时清理,否则会占用许多磁盘空间,如果运行于standalone模式,你可以设置 spark.worker.cleanup.appDataTtl 选项来让spark自动清理这些文件。
    • 其实安装spark不需要安装scala,因为 spark-assembly-1.2.0-hadoop2.4.0.jar 中已经自带了scala库。spark/bin/compute-classpath.sh 会自动将spark自带的库文件(spark-assembly-1.2.0-hadoop2.4.0.jar等)添加到classpath中,因此即使classpath和你的spark应用程序中都没有指定spark库文件路径,你的spark应用程序照样可以执行。
  • 相关阅读:
    laravel 5.5 仓库模式 文件之间接口与实现操作
    php 无线分类 根据子级找父级
    php 无限极分类,根据父级 找子级
    laravel5.4 中 dd和dump的区别。
    laravel hash密码生成和密码验证
    oracle建表详细信息
    关于组件的认识
    java的Thread Dump诊断工具
    weblogic连接池
    详解Oracle数据字典
  • 原文地址:https://www.cnblogs.com/xjh713/p/7301239.html
Copyright © 2011-2022 走看看