MR作业提交时指定第三方依赖jar

为什么80%的码农都做不了架构师?>>>   hot3.png

前言

在提交MR作业时,如何将第三方依赖的jar追加运行环境

解决方法

首先构建一个项目基本架构,包括bin、lib等文件夹,,如下:

[lqz@test app]$ tree .
.
├── bin
│   └── startup.sh
└── lib
    ├── aopalliance-1.0.jar
    ├── ......
    ├── hbase-load-0.0.1-SNAPSHOT.jar
    ├── ......
    └── zookeeper-3.4.10.jar

2 directories, 139 files
[lqz@test app]$ 

一般需要将MR提交封装成脚本(startup.sh)中,以便进行启动,例如如下脚本:

#!/bin/sh

INPUT_PATH=$1
OUTPUT_PATH=$2
HBASE_TABLE=$3

echo "============INPUT_PATH: $INPUT_PATH ============="
echo "============OUTPUT_PATH: $OUTPUT_PATH ============="
echo "============HBASE_TABLE: $HBASE_TABLE ============="

for JAR in `ls ../lib/*.jar`
do
    LIBJARS=$JAR,$LIBJARS
    HADOOPCLASSPATH=$JAR:$HADOOPCLASSPATH
done

export LIBJARS=$LIBJARS

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOPCLASSPATH

yarn jar ../lib/hbase-load-0.0.1-SNAPSHOT.jar "${INPUT_PATH}" "${OUTPUT_PATH}" "${HBASE_TABLE}" \
-libjars $LIBJARS

注意事项

针对封装到脚本中的命令:yarn jar hbase-load-0.0.1-SNAPSHOT.jar [arguments] ,如果在进行打包的时候,已经将程序入口类写在了MANIFEST.MF里面, 那么jar包后边不要再指定程序入口类,如下截图:

MR作业提交时指定第三方依赖jar_第1张图片

如果没在MANIFEST.MF指定程序入口类,那么就需要在命令指定,即,yarn jar hbase-load-0.0.1-SNAPSHOT.jar com.lqz.hbase.load.Main [arguments] 。

转载于:https://my.oschina.net/qzhli/blog/3022535

你可能感兴趣的:(MR作业提交时指定第三方依赖jar)