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上编写的,出现空格等问题!