美文网首页
Spark Sacla 程序打包与提交

Spark Sacla 程序打包与提交

作者: 灬臣独秀灬 | 来源:发表于2020-03-09 17:11 被阅读0次

程序打包

注意

1、打包前注意把本地模式配置去掉。
2、 Spark通过一系列的逻辑执行计划后编译成物理执行计划,离线作业在Spark On yran 模式中 Spark 最终会编译成MR作业。
3、打包方式主要有两种:

只打包编译源文件:

优点:打包后生成的jar包空间小,只有几K。缺点:如果在引用第三方jar包后在提交作业的时候需要通过--jars 来指定除了Spark 和scala 以及jdk 之外的jar包 比如JDBC 驱动,json解析工具等。

打包所有依赖文件:

优点:不需要而外指定jar包。缺点:生成的jar文件过大一般100M左右

maven插件

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass></mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

修改源码(构建Session 不指定Local模式)

val session = SparkSession.builder().getOrCreate()

打包编译命令

mvn assembly:assembly

把程序拷贝有服务器

原则上来说,一般服务器上的Spark 已经配置好了HADOOP环境变量 以及HADOOP_CONF_DIR
官网Spark 提交应用

配置Spark环境 (这里主要讲的是Spark OnYarn 需要的配置)

1、配置HADOOP_CONF_DIR

cd {Spark环境变量}/conf 目录如:cd /home/spark/spark-2.1.0-bin-2.6.0-cdh5.7.0/conf
ls 查看是否用 spark-env.sh 文件如果没有 执行命令拷贝模板
cp spark-env.sh.template spark-env.sh
所以我们需要配置HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
vi spark-env.sh 并添加 HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

2、编写shell 脚本来直接运行你的提交应用 (由于我已经配置好spark 环境变量所有可以直接用 spark-submit,不需要指定目录)

vi user_stat.sh 内容如下

spark-submit \
--class cn.harsons.mbd.UserStatSaveApp \
--name UserStatSaveApp \
--master yarn \
--executor-memory 1G \
--num-executors 1 \
--files /home/lib/config/ipDatabase.csv,/home/lib/config/ipRegion.xlsx \
/home/lib/app.jar \
hdfs://hadoop001:8020/mbd/user/log/user_log.csv

vi user_stat_hdfs.sh 内容如下

spark-submit \
--class cn.harsons.mbd.UserLogStatApp \
--name UserLogStatApp \
--master yarn \
--executor-memory 1G \
--num-executors 1 \
--files /home/lib/config/ipDatabase.csv,/home/lib/config/ipRegion.xlsx \
/home/lib/app.jar \
hdfs://hadoop001:8020/mbd/user/log/user_log.csv hdfs://hadoop001:8020/mbd/user/clean/log/

参数说明:
--class 指定main方法所在的class
--name 指定appName名称将体现在yarn上面
--master yarn yarn模式提交spark
--executor-memory 1G 执行内存
--num-executors 1 执行器个数
--files 指定程序加载的文件,这个类似于classPATH 下的配置文件指定
home/lib/app.jar 指定要运行的jar包
hdfs://hadoop001:8020/mbd/user/log/user_log.csv 程序入参,这里是日志文件的目录。

测试数据说明

1、测试数据存放在hdfs 上面。
2、hsfs 可能使用的命令:
创建目录 : ./bin/hadoop fs -mkdir -p /mbd/user/log
加载文件到hdfs : ./bin/hadoop fs -appendToFile /home/lib/config/user_log.csv /mbd/user/log/user_log.csv

提交程序

授权 chmod u+x user_stat.sh | chmod u+x user_stat_hdfs.sh
提交 ./user_stat.sh ,./user_stat_hdfs.sh

查看结果

统计结果入库
image.png
数据清洗后结果
image.png
Yarn 运行查看
image.png
输出到HDFS 的结果
image.png

相关文章

网友评论

      本文标题:Spark Sacla 程序打包与提交

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