zoukankan      html  css  js  c++  java
  • 数据清洗

    视频1的全了,视频3的还不全
    
    日志数据分析:
    1.背景
    1.1 黑马论坛日志,数据分为两部分组成,原来是一个大文件(05_30之前),是56GB;以后每天生成一个文件,大约是150-200MB之间;
    1.2 日志格式是apache common日志格式;
    1.3 分析一些核心指标,供运营决策者使用;
    1.4 开发该系统的目的是分了获取一些业务相关的指标,这些指标在第三方工具中无法获得的;
    
    2.开发步骤
    2.1 把日志数据上传到HDFS中进行处理
            如果是日志服务器数据较小、压力较小,可以直接使用shell命令把数据上传到HDFS中;
        如果是日志服务器数据较大、压力较大,使用NFS在另一台服务器上上传数据;
        如果日志服务器非常多、数据量大,使用flume进行数据处理;
        技术:flume:
            source: 是从spool directory中拿的
            sink:    hdfs和Hbase(我们同样要把数据送到Hbase中)
            channel:文件
    2.2 使用MapReduce对HDFS中的原始数据进行清洗(清洗的意思是,数据中不要的就扔掉,需要补充的就补充进来)
        技术:Map/Reduce
    2.3 使用Hbase存储明细日志,能够利用IP,时间查询(使用Hbase,这部分没讲)
        技术:设计表、预分区    (因为我们的数据在Hbase存储的时候,他都是存储在RegionServer中的Region上,
                    我们发挥Hbase的优势是分布式查询的优势,我们应该尽量多的分一些Region,
                    让我们的数据尽量均匀的分摊到我们的Region中,这样查询的时候才可以发挥出并行的优势)
            具体表结构设计,看ppt
    2.4 使用Hive对清洗后的数据进行统计分析,得到PV,独立IP数,跳出数,注册用户数等;(使用hive或者pig)
        技术:hive(主要用到Hive的建表操作,比如内部表,分区表,外部表,以及动态修改分区,以及视图,自定义函数操作)
    2.5 使用Sqoop把Hive产生的统计结果导出到mysql中;
        技术:    sqoop
            由于数据导入到mysql中,所以我们还需要对mysql表进行设计(这里的表指的是汇总表),具体表结构看PPT
    2.6 如果用户需要查看详细数据的话,可以使用HBase进行展现;
        注意:    我们这里使用Hive进行统计分析,然后把结果导出到mysql中,被导出到mysql中的数据都是汇总值。
            如果我们发现某个IP,他访问的很频繁,我们可能感觉到他有一些异常,我们想看一下这个IP在某一段时间内
            干了什么事,访问了什么。看某个IP在指定时间内的活动情况,就需要看详细信息,这些详细信息在我们mysql是拿不到的
            因为导出到mysql中的是汇总信息,没有详细信息,如果Mysql要是能存详细信息要hadoop就没什么用了。这些详细信息是Hbase
            来做。就说这些明细信息,我们可以用Habase来存储。进行存储的时候关键的是要判断一下你用什么进行查询,也就是说
            设置Hbase,关键是设置行健,我们刚才说是用IP和时间来查询,那么我们需要把IP和时间放到行健中。
    另外,我们还会用到linux的crontab来做调度,crontab就是一个linux中的定时器,我们的机制是,服务器日志每天都会生成,所以
    需要我们的程序每天定时的运行处理,所以需要用crontab做定时器。所以还需要会写linux脚本
    
    
    
    3.详细代码
    3.1 使用shell命令把数据从linux磁盘上传到HDFS中
    3.1.1 在hdfs中创建目录,命令如下
        $HADOOP_HOME/bin/hadoop fs -mkdir /hmbbs_logs
    3.1.2 写一个shell脚本,叫做upload_to_hdfs.sh,内容大体如下
        yesterday=`date --date='1 days ago' +%Y_%m_%d`
        hadoop fs -put /apache_logs/access_${yesterday}.log   /hmbbs_logs
    3.1.3 把脚本upload_to_hdfs.sh配置到crontab中,执行命令crontab -e, 写法如下
        * 1 * * * upload_to_hdfs.sh
    
        
  • 相关阅读:
    脏数据
    LeetCode之Sort List
    COCOS2D-X FRAME动画创作随笔
    基于OpenCV性别识别
    Twitter 新一代流处理工具——Heron 该纸币Storm Limitations
    oracle设备
    苏州面对公司发布
    Weblogic监控指标
    mysql TIME_WAIT
    weblogic监控
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/5274338.html
Copyright © 2011-2022 走看看