編寫程序向HBase添加日誌信息

關注公衆號:分享電腦學習
回覆"百度雲盤" 可以免費獲取所有學習文檔的代碼(不定期更新)

承接上一篇文檔《日誌信息和瀏覽器信息獲取及數據過濾》

上一個文檔最好做個本地測試

將map方法改爲public,做一個測試看是否有錯誤代碼,代碼和之前的MainProcess基本一樣

之前完成了數據的過濾、補全,大致思路總結如下:

補全

1. IP地址的補全 ==> IP地址轉換爲地域信息 -->國家、省份、城市

(1) 直接使用第三方提供的rest api進行ip地址解析,比如淘寶

(2)使用第三方提供的IP解析庫(解析文件) ==> 純真IP數據庫

(3)使用公司內部的IP庫

表結構:start_ip、end_ip、country、province、city

start_ip和end_ip其實就是ip轉換爲long型之後的值

在獲取數據的時候:

1. 將IP轉換爲long型

2. 查數據庫看該值對應的地域是什麼

2. 服務器時間轉換 1532762408.139 -> 153276240839

將服務器時間轉換爲毫米級的時間戳

3. 瀏覽器UserAgent數據的解析補全

作用:獲取瀏覽器和操作系統相關數據

方式: UASparser.jar

針對不同的平臺、不同的事件進行數據過濾判斷

 

完成了數據的過濾、補全,接下來完成清洗的內容。

先明白下面的選擇:

爲什麼選擇HBase作爲數據存儲?

1.數據收集的各個事件字段不固定,導致etl之後的數據的結構不是固定的,使用Hive表要求結構必須是固定的,所以這裏採用HBase,hbase中的列可多可少

2.因爲我們的數據分析的時候不是獲取所有事件的數據,使用HBASE存儲,可以將數據的過濾操作放到RegionServer中進行處理,降低數據的網絡傳輸量

3.對比日誌的格式發現日誌的內容都可以解析成一個個key-value對的形式

HBase表結構的設計

1. 按天分表:一天的數據放一張表,做一個定時任務,30天以前的數據歸檔到一張歷史表中

2. rowkey設計:隨機的值(uuid+serverTime+clientInfo)

通過crc32生成一個唯一的值

提取每條日誌數據中特徵字段信息,然後通過crc32工具根據一定的算法生成一個唯一的值

3. 列簇:採用單列簇

4. 其他相關參數的設置,比如是否緩存

 

開始代碼編寫

首先編寫一個Map和Runner

Map使用之前的AnalysisDataMapper,我們進一步完善

添加繼承類和屬性

Setup方法

Map方法更改

添加結果輸出

完成generateHBasePut方法

完成generateRowKey方法

創建Runner

完成代碼,繼承Tool

添加配置屬性

完成運行方法

設置配置

重載運行方法

開始創建job

設置參數信息

完成processArgs方法

完成setJobInputPaths方法

完成setHBaseOutputConfig方法

構建表名稱

本地配置啓動部分

HbaseAdmin的創建,注意這裏有個Hbase版本的選擇,根據自己機器的環境

Info列鏃

創建表

主方法

完成之後開始運行(集羣上環境都已經啓動)

本地

默認是路徑上有日誌數據,讀取的是昨天的,如果沒有需要指定時間

添加參數

 

然後打包運行到集羣中

這裏添加了一個配置文件

裏面要更改一個路徑,這裏是你的工作空間

然後執行maven的install命令,打包成jar

上傳到linux

執行

Yarn jar 你的jar com.xlgl.wzy.mr.etl.AnalysisDataRunner(runner的全包類)

去HBASE看有沒有表和數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章