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上編寫的,出現空格等問題!