1:滚动产生日志
xxx.log xxx.log xxx.log
xxx.log.1 xxx.log.1
xxx.log.2
由于新建日志比上传慢,所以会一直上传xxx.log.1而不会等到xxx.log.2
会导致一个命名重复问题
2:重命名移动过后的日志文件(buffer区间)
3:上传hadoop
4:运行sh shell文件测试
5:crontab定时执行任务
*/1 * * * * sh /root/文件名.sh
6:查看是否上传错误,上传失败后执行jar,发信息给用户
2个文件内容是否有差异,记录显示给文件3
grep -vxFf filePath1 filePath2 > 文件3
#set hadoop env
export HADOOP_HOME=/export/servers/hadoop
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
#set java env
export JAVA_HOME=/export/servers/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#日志文件存放的目录
log_src_dir=/root/
#日志文件上传到hdfs的根路径
hdfs_root_dir=/sanbox/mobile_click/20161231/
#读取日志文件的目录,判断是否有需要上传的文件
ls $log_src_dir | while read fileName
do
if [ "xxx.log.1" = "$fileName" ];then
#文件添加时间,防止文件名重复错误
executeTime=`date +%Y_%m_%d_%H_%M_%S`
hadoop fs -put $log_src_dir$fileName $hdfs_root_dir$executeTime$fileName
rm $log_src_dir$fileName
fi
done
版本2
ls $log_src_dir | while read fileName
do
if [ "xxx.log.1" = "$fileName" ];then
#文件添加时间,防止文件名重复错误
executeTime=`date +%Y_%m_%d_%H_%M_%S`
#将需要上传的文件移动到待上传目录
mv $log_src_dir$fileName $log_appending_dir"xxxx_click_log_"$executeTime
#按照一定格式重命名
echo $log_appending_dir"xxxx_click_log_"$executeTime >> /export/data/click_log/
willDoing.$executeTime
fi
done
#_COPY_:hdfs上传文件时会在文件后面追加此后缀,过滤此后缀的文件
ls $log_appending_dir |grep will |grep -v "_COPY_" |grep -v "_DONE_" | while read line
do
mv $log_appending_dir$line $log_appending_dir$line"_COPY_"
cat $log_appending_dir$line"_COPY_" |while read line
do
hadoop fs -put $line $hdfs_root_dir
done
mv $log_appending_dir$line"_COPY_" $log_appending_dir$line"_DONE_"
done
xxx.log xxx.log xxx.log
xxx.log.1 xxx.log.1
xxx.log.2
由于新建日志比上传慢,所以会一直上传xxx.log.1而不会等到xxx.log.2
会导致一个命名重复问题
2:重命名移动过后的日志文件(buffer区间)
3:上传hadoop
4:运行sh shell文件测试
5:crontab定时执行任务
*/1 * * * * sh /root/文件名.sh
6:查看是否上传错误,上传失败后执行jar,发信息给用户
2个文件内容是否有差异,记录显示给文件3
grep -vxFf filePath1 filePath2 > 文件3
#set hadoop env
export HADOOP_HOME=/export/servers/hadoop
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
#set java env
export JAVA_HOME=/export/servers/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#日志文件存放的目录
log_src_dir=/root/
#日志文件上传到hdfs的根路径
hdfs_root_dir=/sanbox/mobile_click/20161231/
#读取日志文件的目录,判断是否有需要上传的文件
ls $log_src_dir | while read fileName
do
if [ "xxx.log.1" = "$fileName" ];then
#文件添加时间,防止文件名重复错误
executeTime=`date +%Y_%m_%d_%H_%M_%S`
hadoop fs -put $log_src_dir$fileName $hdfs_root_dir$executeTime$fileName
rm $log_src_dir$fileName
fi
done
版本2
ls $log_src_dir | while read fileName
do
if [ "xxx.log.1" = "$fileName" ];then
#文件添加时间,防止文件名重复错误
executeTime=`date +%Y_%m_%d_%H_%M_%S`
#将需要上传的文件移动到待上传目录
mv $log_src_dir$fileName $log_appending_dir"xxxx_click_log_"$executeTime
#按照一定格式重命名
echo $log_appending_dir"xxxx_click_log_"$executeTime >> /export/data/click_log/
willDoing.$executeTime
fi
done
#_COPY_:hdfs上传文件时会在文件后面追加此后缀,过滤此后缀的文件
ls $log_appending_dir |grep will |grep -v "_COPY_" |grep -v "_DONE_" | while read line
do
mv $log_appending_dir$line $log_appending_dir$line"_COPY_"
cat $log_appending_dir$line"_COPY_" |while read line
do
hadoop fs -put $line $hdfs_root_dir
done
mv $log_appending_dir$line"_COPY_" $log_appending_dir$line"_DONE_"
done