數據清洗


 

 

視頻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

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM