nginx日志每日定时写入Hdfs
#!/bin/bash
hadoop_home=/opt/hadoop-2.4.0
tw_nginx_log_file=/home/chiline.com.all/access_com_tw.log
cn_nginx_log_file=/home/chiline.com.all/access_com_cn.log
current_date=$(date +%Y%m%d)
hdfs_url=hdfs://xx.xx.xx.xx:9100
analyse_jar_path=$hadoop_home/ianc
echo "hadoop_home = $hadoop_home"
echo "tw_nginx_log_file = $tw_nginx_log_file"
echo "cn_nginx_log_file = $cn_nginx_log_file"
echo "hdfs_url = $hdfs_url"
echo "analyse_jar_path = $hadoop_home/ianc"
function putTodayLogToHdfs(){
$hadoop_home/bin/hdfs dfs -rm -r $hdfs_url/user/day-$(addDate $current_date 1)
$hadoop_home/bin/hdfs dfs -mkdir $hdfs_url/user/day-$(addDate $current_date 1)
$hadoop_home/bin/hdfs dfs -mkdir $hdfs_url/user/day-$(addDate $current_date 1)/tw-log
$hadoop_home/bin/hdfs dfs -mkdir $hdfs_url/user/day-$(addDate $current_date 1)/cn-log
$hadoop_home/bin/hdfs dfs -put $tw_nginx_log_file $hdfs_url/user/day-$(addDate $current_date 1)/tw-log
$hadoop_home/bin/hdfs dfs -put $cn_nginx_log_file $hdfs_url/user/day-$(addDate $current_date 1)/cn-log
}
function addDate(){
str=$1
days=$2
yy=`echo $str|cut -c 1-4`
mm=`echo $str|cut -c 5-6`
dd=`echo $str|cut -c 7-8`
sav_dd=$days
days=`expr $days - $dd`
while [ $days -ge 0 ]
do
mm=`expr $mm - 1`
[ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1`
aaa=`cal $mm $yy`
bbb=`echo $aaa|awk '{print $NF}'`
days=`expr $days - $bbb`
done
dd=`expr 0 - $days`
expr $dd : "^.$" > /dev/null && dd=0$dd
expr $mm : "^.$" > /dev/null && mm=0$mm
echo $yy$mm$dd
return $yy$mmSdd
}
function getLogFileName(){
logFileName=$1
IFS='/' arr=($logFileName)
arr_length=${#arr[@]}
echo ${arr[$arr_length-1]}
return ${arr[$arr_length-1]}
}
function removeLastWeekLog(){
remove_date=$(addDate $current_date 7)
echo "start remove history log file,remove_date is $remove_date"
$hadoop_home/bin/hdfs dfs -rm -r $hdfs_url/user/day-$remove_date
}
function analyseTodayLog(){
#tw_log_file_name=getLogFileName $tw_nginx_log_file
tw_log_file_name=`basename $tw_nginx_log_file`
#cn_log_file_name=getLogFileName $cn_nginx_log_file
cn_log_file_name=`basename $cn_nginx_log_file`
tw_log_file=$hdfs_url/user/day-$(addDate $current_date 1)/tw-log/$tw_log_file_name
cn_log_file=$hdfs_url/user/day-$(addDate $current_date 1)/cn-log/$cn_log_file_name
analyse_path=$hdfs_url/user/day-$(addDate $current_date 1)/analyse
#pv analyse
$hadoop_home/bin/hadoop jar $analyse_jar_path/pvanalyse-1.0.jar $tw_log_file $analyse_path/tw-pv
$hadoop_home/bin/hadoop jar $analyse_jar_path/pvanalyse-1.0.jar $cn_log_file $analyse_path/cn-pv
#time analyse
$hadoop_home/bin/hadoop jar $analyse_jar_path/timeanalyse-1.0.jar $tw_log_file $analyse_path/tw-time
$hadoop_home/bin/hadoop jar $analyse_jar_path/timeanalyse-1.0.jar $cn_log_file $analyse_path/cn-time
#area analyse
$hadoop_home/bin/hadoop jar $analyse_jar_path/locationanalyse-1.0.jar $tw_log_file $analyse_path/tw-location
$hadoop_home/bin/hadoop jar $analyse_jar_path/locationanalyse-1.0.jar $cn_log_file $analyse_path/cn-location
}
echo "start put local log to hdfs"
putTodayLogToHdfs;
echo "start analyse today log"
analyseTodayLog;
echo "remove last week log"
removeLastWeekLog;
nginx日志每日定时写入Hdfs的更多相关文章
- spark读取 kafka nginx网站日志消息 并写入HDFS中(转)
原文链接:spark读取 kafka nginx网站日志消息 并写入HDFS中 spark 版本为1.0 kafka 版本为0.8 首先来看看kafka的架构图 详细了解请参考官方 我这边有三台机器用 ...
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...
- CentOS8平台nginx日志的定时切分
一,编写bash脚本: [root@yjweb crontab]# vi split_nginx_logs.sh 代码: #!/bin/bash # 备份nginx的日志 # 昨天的日期 file_d ...
- 使用Linux自带的命令logrotate对Nginx日志进行切割
说明: Nginx安装目录:/usr/local/nginx/Nginx日志目录:/var/log/nginx/error/*.log /var/log/nginx/access/w1/*.log / ...
- 大数据学习——服务器定期上传nginx日志到hdfs
需求:按照所学知识完成如下: 服务器定期上传nginx日志到hdfs 提示: Hdfs的创建文件夹命令: Hadoop fs -mkdir /文件夹名称 Hdfs的上传命令: Hadoop fs -p ...
- Nginx日志通过Flume导入到HDFS中
关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新) flume上传到hdfs: 当我们的数据量比较大时,比如每天的日志文件达到5G以上 使用ha ...
- Flume 概述+环境配置+监听Hive日志信息并写入到hdfs
Flume介绍Flume是Apache基金会组织的一个提供的高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供 ...
- 通过python操作GeoLite2-City.mmdb库将nginx日志访问IP转换为城市写入数据库
通过python操作GeoLite2-City.mmdb库将nginx日志写入数据库 # 创建存放nginx日志的表accesslog2 CREATE TABLE `accesslog2` ( `id ...
- Flume采集Nginx日志到HDFS
下载apache-flume-1.7.0-bin.tar.gz,用 tar -zxvf 解压,在/etc/profile文件中增加设置: export FLUME_HOME=/opt/apache-f ...
随机推荐
- using的用法
1.using指令.using + 命名空间名字.命名空间名字可以是系统本有,也可是自己定义的class. 2.using别名.using + 别名 = 包括详细命名空间信息的具体的类型. 达成条件: ...
- URAL 1081 Binary Lexicographic Sequence
第13个位置第5个Bit :13>num[4] =>1 第四个bit 13-num[4]=5 :5<num[3] =>0 ,3-1 第三个Bit 5>num[2](3) ...
- 服务器表导入到本地数据库SQL语句
这是开启权限 exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed ...
- python质量控制
一种编写高质量软件的方式是给代码中每个函数写测试,在开发过程中经常性的进行测试. doctest模块可以在docstring中嵌套测试代码.例如: def average(values ...
- [LeetCode]题解(python):127-Word Ladder
题目来源: https://leetcode.com/problems/word-ladder/ 题意分析: 和上一题目类似,给定一个beginWord和一个endWord,以及一个字典list.这题 ...
- HTML+CSS笔记 CSS进阶再续
CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...
- ie浏览器css中的行为expression详解
CSS中的行为——expression (ie only) 最近对CSS中的行为比较感兴趣,虽然是不符合标准的也只有ie才能识别,但是他确实给css的功能扩展了不少.下面是摘自互联网上的文字和例子,因 ...
- 自动输入用户名和密码用于telnet的shell
http://blog.sina.com.cn/s/blog_45497dfa0100l4cf.html
- type,isinstance判断一个变量的数据类型
type,isinstance判断一个变量的数据类型 import types type(x) is types.IntType # 判断是否int 类型 type(x) is types.Strin ...
- C++模板:二分查找
bool find(int x,int l,int r){ if(l>r)return false; int mid=(l+r)/2; if(s[mid]==x) return true; el ...