• 大数据学习——点击流日志每天都10T,在业务应用服务器上,需要准实时上传至(Hadoop HDFS)上


    点击流日志每天都10T,在业务应用服务器上,需要准实时上传至(Hadoop HDFS)上

    1需求说明

    点击流日志每天都10T,在业务应用服务器上,需要准实时上传至(Hadoop HDFS)上

    2需求分析

    一般上传文件都是在凌晨24点操作,由于很多种类的业务数据都要在晚上进行传输,为了减轻服务器的压力,避开高峰期

    如果需要伪实时的上传,则采用定时上传的方式

            

    3技术分析

              HDFS SHELL:  hadoop fs  –put   xxxx.log  /data    还可以使用 Java Api

                              满足上传一个文件,不能满足定时、周期性传入。

              定时调度器

                       Linux crontab

                       crontab -e

    */5 * * * * $home/bin/command.sh   //五分钟执行一次

    系统会自动执行脚本,每5分钟一次,执行时判断文件是否符合上传规则,符合则上传

    4实现流程

    4.1日志产生程序

    日志产生程序将日志生成后,产生一个一个的文件,使用滚动模式创建文件名。

     

    日志生成的逻辑由业务系统决定,比如在log4j配置文件中配置生成规则,如:当xxxx.log 等于10G时,滚动生成新日志

     log4j.logger.msg=info,msg
    
    log4j.appender.msg=cn.maoxiangyi.MyRollingFileAppender
    
    log4j.appender.msg.layout=org.apache.log4j.PatternLayout
    
    log4j.appender.msg.layout.ConversionPattern=%m%n
    
    log4j.appender.msg.datePattern='.'yyyy-MM-dd
    
    log4j.appender.msg.Threshold=info
    
    log4j.appender.msg.append=true
    
    log4j.appender.msg.encoding=UTF-8
    
    log4j.appender.msg.MaxBackupIndex=100
    
    log4j.appender.msg.MaxFileSize=10GB
    
    log4j.appender.msg.File=/home/hadoop/logs/log/access.log


    细节: 

    1、  如果日志文件后缀是123等数字,该文件满足需求可以上传的话。把该文件移动到准备上传的工作区间。

    2、  工作区间有文件之后,可以使用hadoop put命令将文件上传。

    阶段问题:

    1、  待上传文件的工作区间的文件,在上传完成之后,是否需要删除掉。

    4.2伪代码

             使用ls命令读取指定路径下的所有文件信息,

             ls  | while read  line

              //判断line这个文件名称是否符合规则

    if       line=access.log.* (

                将文件移动到待上传的工作区间

      )

    //批量上传工作区间的文件

    hadoop fs  –put   xxx

    脚本写完之后,配置linux定时任务,每5分钟运行一次。

            

    5代码实现

    代码第一版本,实现基本的上传功能和定时调度功能

     

    代码第二版本:增强版V2(基本能用,还是不够健全)

     

    6效果展示及操作步骤

    1、日志收集文件收集数据,并将数据保存起来,效果如下:

            

    2、上传程序通过crontab定时调度

     

    3、程序运行时产生的临时文件

     

    4、Hadoo hdfs上的效果

     

  • 相关阅读:
    三路快排
    双路快排
    随机快排
    快速排序
    双向链表
    单向链表
    堆排序
    二分插入、bisect
    jmockit使用总结-MockUp重点介绍
    java拼接字符串、格式化字符串方式
  • 原文地址:https://www.cnblogs.com/feifeicui/p/10217090.html
Copyright © 2020-2023  润新知