#!/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的更多相关文章

  1. spark读取 kafka nginx网站日志消息 并写入HDFS中(转)

    原文链接:spark读取 kafka nginx网站日志消息 并写入HDFS中 spark 版本为1.0 kafka 版本为0.8 首先来看看kafka的架构图 详细了解请参考官方 我这边有三台机器用 ...

  2. Linux下添加shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...

  3. CentOS8平台nginx日志的定时切分

    一,编写bash脚本: [root@yjweb crontab]# vi split_nginx_logs.sh 代码: #!/bin/bash # 备份nginx的日志 # 昨天的日期 file_d ...

  4. 使用Linux自带的命令logrotate对Nginx日志进行切割

    说明: Nginx安装目录:/usr/local/nginx/Nginx日志目录:/var/log/nginx/error/*.log /var/log/nginx/access/w1/*.log / ...

  5. 大数据学习——服务器定期上传nginx日志到hdfs

    需求:按照所学知识完成如下: 服务器定期上传nginx日志到hdfs 提示: Hdfs的创建文件夹命令: Hadoop fs -mkdir /文件夹名称 Hdfs的上传命令: Hadoop fs -p ...

  6. Nginx日志通过Flume导入到HDFS中

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新) flume上传到hdfs: 当我们的数据量比较大时,比如每天的日志文件达到5G以上 使用ha ...

  7. Flume 概述+环境配置+监听Hive日志信息并写入到hdfs

    Flume介绍Flume是Apache基金会组织的一个提供的高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供 ...

  8. 通过python操作GeoLite2-City.mmdb库将nginx日志访问IP转换为城市写入数据库

    通过python操作GeoLite2-City.mmdb库将nginx日志写入数据库 # 创建存放nginx日志的表accesslog2 CREATE TABLE `accesslog2` ( `id ...

  9. Flume采集Nginx日志到HDFS

    下载apache-flume-1.7.0-bin.tar.gz,用 tar -zxvf 解压,在/etc/profile文件中增加设置: export FLUME_HOME=/opt/apache-f ...

随机推荐

  1. Jquery 遍历数组之grep()方法介绍

    grep()方法用于数组元素过滤筛选. grep(array,callback,boolean);方法参数介绍. array   ---待处理数组 callback  ---这个回调函数用来处理数组中 ...

  2. Java中Iterator(迭代器)的用法及其背后机制的探究

    在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结 ...

  3. AsyncSocket 使用

    今天使用AsyncSocket模拟及时通信,在这里记录一下,免得以后自己又犯相同的错误 1>创建客户端和服务器socket /** * 设置socket */ - (void)setupSock ...

  4. webservice实例

    前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要的重复操作. 本文引自:http://www.iteye.com/topic/1135747 一.准备工作(以下为本实例使用工具) 1 ...

  5. html加载与脚本运行中,由于html未完全加载而导致脚本找不到dom元素无法执行事件

    问题: 如题,就是说alert后出现一个对话框,我没有点关闭,其他js文件或html会被加载吗,我遇到一个问题就是在页面加载时调用一个div的click事件,却没有被执行,但是在调用事件前面加上ale ...

  6. python的内置函数bin()

    bin(x) 中文说明:将整数x转换为二进制字符串,如果x不为Python中int类型,x必须包含方法__index__()并且返回值为integer: 参数x:整数或者包含__index__()方法 ...

  7. poj 2398 计算几何

    #include <iostream> #include<cstdio> #include<cstring> #include <algorithm> ...

  8. C#使用系统的“显示桌面”功能(Shell.Application)

    原文 C#使用系统的“显示桌面”功能(Shell.Application) 在 Windows 系统的 任务栏 上的 快速启动栏 里,通常有一个图标  ,点击这个图标,就会切换到桌面.这个图标实际是一 ...

  9. 利用Linux命令行进行文本按行去重并按重复次数排序

    最近杂事太多,正事进展缓慢.Fighting! linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去重并按重 ...

  10. iOS开发UI 篇—CAlayer层的属性

    一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设 ...