• 编写jar的运行脚本(win和liunx环境)


    Windows环境中: bat文件的写法

      1.任何位置都可以新建一个文件夹(例如:D:/test),将项目的pom文件复制进来

      2.将已写好的项目打包,把生成的jar文件复制到test里,

      3.再在test下新建lib文件夹,在test里执行cmd命令下载工件的所有的依赖的jar包,命令内容:

        mvn -DoutputDirectory=./lib
        -DgroupId=com.txj 
        -DartifactId= handeworkcheck
        -Dversion=1.0-SNAPSHOT

                以上的内容分别是:项目组名; 项目名;版本号

      4. 写runner.bat文件,内容如下(按颜色一致):

        java -cp handeworkcheck.jar;./lib/activation-1.1.jar;./lib/apacheds-i18n-2.0.0-M15.jar;./lib/zkclient-0.8.jar;./lib/zookeeper-3.4.6.jar com.mine.calllog.consumer.HbaseConsumer

        内容分别有4部分:

        第一: java -cp

        第二:包名

        第三:所有lib下依赖的包名

        第四:运行的主类 (全类名)

        注意: jar之间用 ; 分开。最后一个jar与运行的类用空格分开

    ---------------------------------------------------------------------------------------

    liunx环境中:sh文件

    生成jar包,部署到centos执行
    --------------------------------
      1.使用maven生成jar文件
        和上面的1、2、3、4步骤一样
      2.部署到centos
      3.执行
        $>mkdir /home/centos/calllog
        java -cp xxx.jar 全类名:依赖包 参数1...

      4.创建centos上的执行脚本

      [calllog.sh]
        #!/bin/bash
        java -cp Calllog.jar com.mine.callloggen.App :./lib/activation-1.1.jar:./lib/apacheds-i18n-2.0.0-M15.jar /home/centos/calllog/calllog.log

      5.修改权限
        $>chmod a+x calllog.sh
      6.执行脚本
        $>cd ~/calllog
        $>./calllog.sh

    ----------------------------------------------------------------------------------------------

    hadoop的运行脚本:sh文件

    -------------------------------------------脚本一

    #!/bin/bash
    #到该目录下
    cd ${dirname}
    jarpath=$(dirname $PWD)
    mainclass=com.txj
    echo ${jarpath}

    #计算昨天
    yesterday=$(date --date='1 days ago' +'%Y%m%d')
    echo ${yesterday}

    #HDFS上上传文件
    HDFS_PATH=${dirname $PWD}/b.txt

    #设置用户
    export HADOOP_USER_NAME=admin

    #上传文件
    #hdfs dfs -mkdir -p /user/b

    hdfs_path1=/user/b

    hdfs dfs -rm -r ${hdfs_path1}

    hdfs_path2=hdfs://192.168.187.30/user/a/b.txt

    hadoop fs -test -e ${hdfs_path2}

    if [ $? -ne 0 ];then

    echo "success"

    else
    echo "failed"

    fi

    -----------------------------------------脚本二

    参考:  https://blog.csdn.net/zp_Fl/article/details/83895230

    cd $(dirname $0)
    jarPath=$(dirname $PWD)/work/dataAnalysisPlat.jar
    hbase_zk=192.168.187.33
    reducer_num=40
    mainclass=a.App
    mainClassName=b.ToHdfsApp
    mainClassNameStep2=c.CntApp

    # logDate="20190221 20190222"
    for date in $logDate;
    do
    hbase_table_name="t_gps_std_"${date}
    hdfs_output_step1=hdfs://192.168.187.33/data/gps_std_hbase2hdfs/${date}

    hadoop fs -test -e ${hdfs_output_step1}'/_SUCCESS'
    if [ $? -ne 0 ];then
        hadoop fs -rm -r ${hdfs_output_step1}
        hadoop jar ${jarPath} ${mainclass}
            -M ${mainClassName}
            -Dmapreduce.reducer.num=${reducer_num}
            -Dhbase.source.zk.quorum=${hbase_zk}
            -Dhbase.source.nameserver.address=${hbase_zk}
            -Dhbase.source.table=${hbase_table_name}
            -Dmapreduce.hdfs.output=${hdfs_output_step1}
            -Dconf.log.date=${date}
            -Dmapreduce.reduce.memory.mb=5120
            -Dmapreduce.input.fileinputformat.split.minsize=1073741824
        hadoop fs -test -e ${hdfs_output_step1}'/_SUCCESS'
        if [ $? -ne 0 ];then
            echo "calc ${hdfs_output_step1} failed" >> runlog.log
        else
            echo "calc ${hdfs_output_step1} success" >> runlog.log
        fi
    else
        echo "calc ${hdfs_output_step1} success"
    fi
    done

    //----------------------------------------以下运行jar时出现错误 ClassNotFoundException-------------

    解决1(常用,不同环境都能用):

    打包时所用的所有jar整体打包,

    执行时使用:

    java -cp (详见:)

    解决2

    将所有的包以及第三包保证都在classpath下,可以参考如下命令

    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/cloudera/parcels/CDH/jars/*

    //----------------------------------------有时运行脚本报错-------------

    查看脚本是否因为在Windows上编写的,出现空格等问题!

  • 相关阅读:
    Dllimport函数時无法在Dll中找到的入口点
    cb35a_c++_STL_算法_for_each
    cb34a_c++_STL_算法_查找算法_(7)_lower_bound
    cb33a_c++_STL_算法_查找算法_(6)binary_search_includes
    cb32a_c++_STL_算法_查找算法_(5)adjacent_find
    cb31a_c++_STL_算法_查找算法_(4)find_first_of
    cb30a_c++_STL_算法_查找算法_(3)search_find_end
    cb29a_c++_STL_算法_查找算法_(2)search_n
    cb28a_c++_STL_算法_查找算法_(1)find_find_if
    cb27a_c++_STL_算法_最小值和最大值
  • 原文地址:https://www.cnblogs.com/zyanrong/p/10804163.html
Copyright © 2020-2023  润新知