更新时间:2024-06-14 GMT+08:00
分享

编包并运行Spark应用

操作场景

在程序代码完成开发后,您可以将打包好的jar包上传至Linux客户端环境中运行应用。使用Scala或Java语言开发的应用程序在Spark客户端的运行步骤是一样的。

  • Spark应用程序只支持在Linux环境下运行,不支持在Windows环境下运行。
  • 使用Python开发的Spark应用程序无需打包成jar,只需将样例工程拷贝到编译机器上即可。

运行Spark Core样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行Spark Core(Scala和Java)样例程序。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。

    其中,<inputPath>指HDFS文件系统中input的路径。

    bin/spark-submit --class com.huawei.bigdata.spark.examples.FemaleInfoCollection --master yarn --deploy-mode client /opt/female/FemaleInfoCollection.jar <inputPath>

运行Spark SQL样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行Spark SQL样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。

    其中,<inputPath>指HDFS文件系统中input的路径。

    bin/spark-submit --class com.huawei.bigdata.spark.examples.FemaleInfoCollection --master yarn --deploy-mode client /opt/female/FemaleInfoCollection.jar <inputPath>

运行Spark Streaming样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行Spark Streaming样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。
    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。

    由于Spark Streaming Kafka的依赖包在客户端的存放路径与其他依赖包不同,如其他依赖包路径为“$SPARK_HOME/jars”,而Spark Streaming Kafka依赖包路径为“$SPARK_HOME/jars/streamingClient”。所以在运行应用程序时,需要在spark-submit命令中添加配置项,指定Spark Streaming Kafka的依赖包路径,如--jars $SPARK_HOME/jars/streamingClient/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient/kafka_*.jar,$SPARK_HOME/jars/streamingClient/spark-streaming-kafka-0-8_*.jar

    • Spark Streaming Write To Print代码样例

      bin/spark-submit --master yarn --deploy-mode client --jars $SPARK_HOME/jars/streamingClient/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient/kafka_*.jar,$SPARK_HOME/jars/streamingClient/spark-streaming-kafka-*.jar --class com.huawei.bigdata.spark.examples.FemaleInfoCollectionPrint /opt/female/FemaleInfoCollectionPrint.jar <checkPointDir> <batchTime> <topics> <brokers>

      • --jars中的jar版本名称根据集群实际情况而定。
      • brokers格式为brokerIp:9092。
      • <checkPointDir>指应用程序结果备份到HDFS的路径,<batchTime>指Streaming分批的处理间隔。
    • Spark Streaming Write To Kafka代码样例

      bin/spark-submit --master yarn --deploy-mode client --jars $SPARK_HOME/jars/streamingClient/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient/kafka_*.jar,$SPARK_HOME/jars/streamingClient/spark-streaming-kafka-*.jar --

      class com.huawei.bigdata.spark.examples.DstreamKafkaWriter/opt/female/SparkStreamingExample-1.0.jar <groupId> <brokers> <topic>

运行“通过JDBC访问Spark SQL”样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行“通过JDBC访问Spark SQL”样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,使用java -cp命令运行代码。

    java -cp ${SPARK_HOME}/jars/*:${SPARK_HOME}/conf:/opt/female/SparkThriftServerJavaExample-*.jar com.huawei.bigdata.spark.examples.ThriftServerQueriesTest ${SPARK_HOME}/conf/hive-site.xml ${SPARK_HOME}/conf/spark-defaults.conf

    普通集群需要注释掉安全配置部分代码,详情请参见22

    上面的命令行中,您可以根据不同样例工程,最小化选择其对应的运行依赖包。样例工程对应的运行依赖包详情,请参见1

运行“Spark on HBase”样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行“Spark on HBase”样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。运行样例程序时,程序运行顺序为:TableCreation、TableInputData、TableOutputData。

    其中,在运行TableInputData样例程序时需要指定<inputPath>,<inputPath>指HDFS文件系统中input的路径。

    bin/spark-submit --class com.huawei.bigdata.spark.examples.TableInputData --master yarn --deploy-mode client /opt/female/TableInputData.jar <inputPath>

    spark任务在连接hbase读写数据的时候,如果开启了kerberos认证,需要将客户端的配置文件“spark-defaults.conf”中的配置项spark.yarn.security.credentials.hbase.enabled置为true。所有连接hbase读写数据spark任务均需修改该配置。

运行Spark HBase to HBase样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行Spark HBase to HBase样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。

    其中,在运行样例程序时需要指定<zkQuorum>,<zkQuorum>指ZooKeeper的IP地址。

    bin/spark-submit --class com.huawei.bigdata.spark.examples.SparkHbasetoHbase --master yarn --deploy-mode client /opt/female/FemaleInfoCollection.jar <zkQuorum>

运行Spark Hive to HBase样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行Spark Hive to HBase样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。

    在运行样例程序时需要指定<zkQuorum>,<zkQuorum>指ZooKeeper服务器ip地址。

    bin/spark-submit --class com.huawei.bigdata.spark.examples.SparkHivetoHbase --master yarn --deploy-mode client /opt/female/FemaleInfoCollection.jar <zkQuorum>

运行Spark Streaming Kafka to HBase样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行Spark Streaming Kafka to HBase样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。

    在运行样例程序时需要指定<checkPointDir><topic><brokerList>,其中<checkPointDir>指应用程序结果备份到HDFS的路径,<topic>指读取kafka上的topic名称,<brokerList>指Kafka服务器IP地址。

    由于Spark Streaming Kafka的依赖包在客户端的存放路径与其他依赖包不同,如其他依赖包路径为“$SPARK_HOME/lib”,而Spark Streaming Kafka依赖包路径为“$SPARK_HOME/lib/streamingClient010”。所以在运行应用程序时,需要在spark-submit命令中添加配置项,指定Spark Streaming Kafka的依赖包路径,如--jars $SPARK_HOME/jars/streamingClient010/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient010/kafka_*.jar,$SPARK_HOME/jars/streamingClient010/spark-streaming-kafka-*.jar

    Spark Streaming To HBase代码样例

    bin/spark-submit --master yarn --deploy-mode client --jars $SPARK_HOME/jars/streamingClient010/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient010/kafka_*.jar,$SPARK_HOME/jars/streamingClient010/spark-streaming-kafka-0*.jar --class com.huawei.bigdata.spark.examples.streaming.SparkOnStreamingToHbase /opt/female/FemaleInfoCollectionPrint.jar <checkPointDir> <topic> <brokerList>

    • --jars中的jar名称根据集群实际情况而定。
    • brokerlist格式为brokerIp:9092。

运行Spark Streaming 对接Kafka0-10样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行Spark Streaming 对接Kafka0-10样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。

    在运行样例程序时需要指定<checkpointDir> <brokers> <topic> <batchTime>,其中<checkPointDir>指应用程序结果备份到HDFS的路径,<brokers>指获取元数据的Kafka地址,安全集群格式为brokerIp:21007,普通群格式为brokerIp:9092,<topic>指读取Kafka上的topic名称,<batchTime>指Streaming分批的处理间隔。

    Spark Streaming读取Kafka 0-10代码样例:

    • 安全集群任务提交命令:

      bin/spark-submit --master yarn --deploy-mode client --files ./conf/jaas.conf,./conf/user.keytab --driver-java-options "-Djava.security.auth.login.config=./jaas.conf" --conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./jaas.conf" --jars $SPARK_HOME/jars/streamingClient010/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient010/kafka_*.jar,$SPARK_HOME/jars/streamingClient010/spark-streaming-kafka-*.jar --class com.huawei.bigdata.spark.examples.SecurityKafkaWordCount /opt/SparkStreamingKafka010JavaExample-*.jar <checkpointDir> <brokers> <topic> <batchTime>

      其中配置示例如下:

      --files ./jaas.conf,./user.keytab //使用--files指定jaas.conf和keytab文件。
      --driver-java-options "-Djava.security.auth.login.config=./jaas.conf" //指定driver侧jaas.conf文件路径,yarn-client模式下使用--driver-java-options "-Djava.security.auth.login.config"指定;yarn-cluster模式下使用--conf "spark.yarn.cluster.driver.extraJavaOptions"指定。
      --conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./jaas.conf"//指定executor侧jaas.conf文件路径。
    • 普通集群任务提交命令:

      bin/spark-submit --master yarn --deploy-mode client --jars $SPARK_HOME/jars/streamingClient010/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient010/kafka_*.jar,$SPARK_HOME/jars/streamingClient010/spark-streaming-kafka-*.jar --class com.huawei.bigdata.spark.examples.SecurityKafkaWordCount /opt/SparkStreamingKafka010JavaExample-*.jar <checkpointDir> <brokers> <topic> <batchTime>

      Spark Streaming Write To Kafka 0-10代码样例(该样例只存在于mrs-sample-project-1.6.0.zip中):

      bin/spark-submit --master yarn --deploy-mode client --jars $SPARK_HOME/jars/streamingClient010/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient010/kafka_*.jar,$SPARK_HOME/jars/streamingClient010/spark-streaming-kafka-*.jar --class com.huawei.bigdata.spark.examples.JavaDstreamKafkaWriter /opt/JavaDstreamKafkaWriter.jar <checkPointDir> <brokers> <topics>

运行Spark Structured Streaming样例程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 运行Spark Structured Streaming样例程序(Scala和Java语言)。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端的conf目录下,调用spark-submit脚本运行代码。

    在运行样例程序时需要指定<brokers> <subscribe-type> <topic> <protocol> <service> <domain>,其中<brokers>指获取元数据的Kafka地址,<subscribe-type>指Kafka订阅类型(一般为subscribe,代表订阅指定的topic),<topic>指读取Kafka上的topic名称,<protocol>指安全访问协议,<service>指kerberos服务名称,<domain>指kerberos域名。

    普通集群需要注释掉配置kafka安全协议部分代码,详情请参见Java样例代码Scala样例代码章节中的说明部分。

    由于Spark Structured Streaming Kafka的依赖包在客户端的存放路径与其他依赖包不同,如其他依赖包路径为“$SPARK_HOME/jars”,而Spark Structured Streaming Kafka依赖包路径为“$SPARK_HOME/jars/streamingClient010”。所以在运行应用程序时,需要在spark-submit命令中添加配置项,指定Spark Streaming Kafka的依赖包路径,如--jars $SPARK_HOME/jars/streamingClient010/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient010/kafka_*.jar,$SPARK_HOME/jars/streamingClient010/spark-sql-kafka-*.jar。

    Spark Structured Streaming 对接Kafka代码样例

    • 安全集群任务提交命令:

      cd /opt/client/Spark/spark/conf

      spark-submit --master yarn --deploy-mode client --files ./jaas.conf,./user.keytab --driver-java-options "-Djava.security.auth.login.config=./jaas.conf" --conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./jaas.conf" --jars $SPARK_HOME/jars/streamingClient010/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient010/kafka_*.jar,$SPARK_HOME/jars/streamingClient010/spark-sql-kafka-*.jar --class com.huawei.bigdata.spark.examples.SecurityKafkaWordCount /root/jars/SparkStructuredStreamingJavaExample-*.jar <brokers> <subscribe-type> <topic> <protocol> <service> <domain>

    • 普通集群任务提交命令:

      spark-submit --master yarn --deploy-mode client --jars $SPARK_HOME/jars/streamingClient010/kafka-clients-*.jar,$SPARK_HOME/jars/streamingClient010/kafka_*.jar,$SPARK_HOME/jars/streamingClient010/spark-sql-kafka-*.jar --class com.huawei.bigdata.spark.examples.SecurityKafkaWordCount /root/jars/SparkStructuredStreamingJavaExample-*.jar <brokers> <subscribe-type> <topic> <protocol> <service> <domain>

      其中配置示例如下:

      --files <local Path>/jaas.conf,<local Path>/user.keytab //使用--files指定jaas.conf和keytab文件。
      --driver-java-options "-Djava.security.auth.login.config=<local Path>/jaas.conf" //指定driver侧jaas.conf文件路径,yarn-client模式下使用--driver-java-options "-Djava.security.auth.login.config"指定;yarn-cluster模式下使用--conf "spark.yarn.cluster.driver.extraJavaOptions"指定。如果报没有权限读写本地目录的错误,需要指定"spark.sql.streaming.checkpointLocation"参数,且用户必须具有该参数指定的目录的读、写权限。
      --conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./jaas.conf"  //指定executor侧jaas.conf文件路径。
      --jars中的jar名称根据集群实际情况而定。
      安全集群<brokers>格式为brokerIp:21007,<protocol> <service> <domain>可以参考$KAFKA_HOME/config/consumer.properties文件。
      普通集群<brokers>格式为brokerIp:9092, <domain>可以参考$KAFKA_HOME/config/consumer.properties文件,<protocol>用null代替,<service>为kafka。

提交Python语言开发的应用程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 提交Python语言开发的应用程序。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    进入Spark客户端目录,调用bin/spark-submit脚本运行代码。

    其中,<inputPath>指HDFS文件系统中input的路径。

    由于样例代码中未给出认证信息,请在执行应用程序时通过配置项“spark.yarn.keytab”和“spark.yarn.principal”指定认证信息。

    bin/spark-submit --master yarn --deploy-mode client --conf spark.yarn.keytab=/opt/FIclient/user.keytab --conf spark.yarn.principal=sparkuser /opt/female/SparkPythonExample/collectFemaleInfo.py <inputPath>

提交SparkLauncher应用程序

  1. 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
  2. 将生成的Jar包(如CollectFemaleInfo.jar)拷贝到Spark运行环境下(即Spark客户端),如“/opt/female”。开启Kerberos认证的安全集群下把从准备Spark应用开发用户中获取的user.keytab和krb5.conf文件拷贝到Spark客户端conf目录下,如:/opt/client/Spark/spark/conf;未开启Kerberos认证集群可不必拷贝user.keytab和krb5.conf文件。
  3. 提交SparkLauncher应用程序。

    • 在Spark任务运行过程中禁止重启HDFS服务或者重启所有DataNode实例,否则可能会导致任务失败,并可能导致JobHistory部分数据丢失。
    • 运行程序时可根据需要选择运行模式:
      • --deploy-mode client:driver进程在客户端运行,运行结果在程序运行后直接输出。
      • --deploy-mode cluster:driver进程在Yarn的ApplicationMaster(AM)中运行,运行结果和日志在Yarn的WebUI界面输出。

    java -cp $SPARK_HOME/jars/*:{JAR_PATH} com.huawei.bigdata.spark.examples.SparkLauncherExample yarn-client {TARGET_JAR_PATH} { TARGET_JAR_MAIN_CLASS} {args}

    • JAR_PATH为SparkLauncher应用程序jar包所在路径。
    • TARGET_JAR_PATH为待提交的spark application应用程序jar包所在路径。
    • args为待提交的spark application应用程序的参数。

参考信息

“通过JDBC访问Spark SQL”样例程序(Scala和Java语言),其对应的运行依赖包如下:

  • 通过JDBC访问Spark SQL样例工程(Scala)
    • commons-collections-<version>.jar
    • commons-configuration-<version>.jar
    • commons-io-<version>.jar
    • commons-lang-<version>.jar
    • commons-logging-<version>.jar
    • guava-<version>.jar
    • hadoop-auth-<version>.jar
    • hadoop-common-<version>.jar
    • hadoop-mapreduce-client-core-<version>.jar
    • hive-exec-<version>.spark2.jar
    • hive-jdbc-<version>.spark2.jar
    • hive-metastore-<version>.spark2.jar
    • hive-service-<version>.spark2.jar
    • httpclient-<version>.jar
    • httpcore-<version>.jar
    • libthrift-<version>.jar
    • log4j-<version>.jar
    • slf4j-api-<version>.jar
    • zookeeper-<version>.jar
    • scala-library-<version>.jar
  • 通过JDBC访问Spark SQL样例工程(Java)
    • commons-collections-<version>.jar
    • commons-configuration-<version>.jar
    • commons-io-<version>.jar
    • commons-lang-<version>.jar
    • commons-logging-<version>.jar
    • guava-<version>.jar
    • hadoop-auth-<version>.jar
    • hadoop-common-<version>.jar
    • hadoop-mapreduce-client-core-<version>.jar
    • hive-exec-<version>.spark2.jar
    • hive-jdbc-<version>.spark2.jar
    • hive-metastore-<version>.spark2.jar
    • hive-service-<version>.spark2.jar
    • httpclient-<version>.jar
    • httpcore-<version>.jar
    • libthrift-<version>.jar
    • log4j-<version>.jar
    • slf4j-api-<version>.jar
    • zookeeper-<version>.jar

相关文档