编包并运行Spark应用
操作场景
在程序代码完成开发后,您可以将打包好的jar包上传至Linux客户端环境中运行应用。使用Scala或Java语言开发的应用程序在Spark客户端的运行步骤是一样的。
- Spark应用程序只支持在Linux环境下运行,不支持在Windows环境下运行。
- 使用Python开发的Spark应用程序无需打包成jar,只需将样例工程拷贝到编译机器上即可。
运行Spark Core样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行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样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行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样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行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”样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行“通过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
运行“Spark on HBase”样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行“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样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行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样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行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样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行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样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行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样例程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 运行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语言开发的应用程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 提交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应用程序
- 在工程目录下执行mvn package命令生成jar包,在工程目录target目录下获取,比如:FemaleInfoCollection.jar
- 将生成的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文件。
- 提交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