天天看點

高可用Hadoop平台-實戰1.概述2.流程3.開發4.總結5.結束語

  今天繼續《高可用的hadoop平台》系列,今天開始進行小規模的實戰下,前面的準備工作完成後,基本用于統計資料的平台都擁有了,關于導出統計結果的文章留到後面贅述。今天要和大家分享的案例是一個基于電商網站的使用者行為分析,這裡分析的名額包含以下名額:

統計每日pv

每日注冊使用者

每日ip

跳出使用者

  其他名額可以參考上述4個名額進行拓展,下面我們開始今天的分析之旅。

  首先,在開發之前我們需要注意哪些問題?我們不能盲目的按照自己的意願去開發項目,這樣到頭來得不到産品的認可,我們的工作又得返工。下面結合自身的工作,說說開發的具體流程:

需求産生過程及遇到問題和注意事項

産品組提出:報表需求+日志規範

報表研發流程(資料處理流程):網絡日志(一般有專門的節點來存儲日志)=>pull(拉取日志)=>本地存儲(資料組可操作的服務

器節點)=>預處理(清洗或過濾,存入到hive表)=>hdfs檔案系統資料存儲(統計的結果都存放在hdfs檔案系統中)=>導出

(将統計結構導出)=>mysql資料庫存儲(或其他資料庫,供前端人員展示)

  在日志拉取過程,所欲問題和注意事項:如果日志量不大,我們可以直接使用python腳本或shell腳本直接将日志上傳到hdfs,若是海量資料,那我們可以使用 flume 進行上傳。具體選擇那種上傳方式取決于實際的業務,可按需選擇。

  注:若使用腳本上傳,需考慮腳本的可讀性和可維護性。

  在日志預處理過程中需要注意事項:對字段進行翻譯,反編譯,解析等操作,以确儲存入到 hive 表的是有效的有用的資訊。

  另外,在實際開發中,得和産品充分溝通過後,我們在開工;不然,到最後會引發一些不必要得麻煩。

高可用Hadoop平台-實戰1.概述2.流程3.開發4.總結5.結束語

  開發流程我們清楚來,需要統計得名額任務也明确了,接下來,我們開始進行編碼階段。首先,這裡我贅述得是安裝流程圖得過程來的,若是在實際開發過程中,可根據實際情況來定,可以先獨立的開發後面的子產品,預留接口功能。不作限制,按需開發。

  這裡由于我本地隻能連接配接到測試的叢集上,而叢集拉取的測試資料量很少,這裡我就直接用 shell 腳本上傳了。内容如下所示:

  然後上傳腳本使用 crontab 來定時排程。

  我們在确定 hdfs 存有資料後,對上傳的日志進行清洗(或過濾),抽起對統計名額有用的資料源,并将資料源重定向到 hdfs 目錄。,下面給出部厘清洗代碼,内容如下:

map類:

reduce類:

logparserfactory類:

main函數:

  清洗工作到這裡就已經完成了,下面開始統計名額任務的開發。

建表:

建立分區:

加載資料:

  注:location 關鍵字後面的路徑是指定清洗後的的hdfs路徑

  下面建立臨時統計表,各表如下所示:

建立每日pv表: 

建立注冊使用者表:

建立ip表:

建立跳出使用者表:

  最後我們将所有的結果彙總到一張 hive 表,指令如下所示:

  這樣,我們對使用 hive 基于 hdfs 平台進行資料分析統計的流程就完成了,這裡也許會發現一個問題,操作 hive sql

指令出錯率是很高的,後面帶我将業務從 java api 分離出來後,我會将操作 hive 的 java api

貼在這篇部落格的後面。至于如何将統計的結果導出,後面會花一篇部落格來贅述導出的流程。

  這篇部落格就和大家分享到這裡,如果實際研究過程中有什麼疑問,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉!