數據倉庫 — 01_項目需求分析與技術選型(數倉概念、項目需求及架構設計、數據生成模塊格式要求)


歡迎訪問筆者個人技術博客:http://rukihuang.xyz/

學習視頻來源於尚硅谷,視頻鏈接:尚硅谷大數據項目數據倉庫,電商數倉V1.2新版
,Respect!

1 數據倉庫的概念

  • 數據倉庫(Data Warehouse),是爲企業所有決策制定過程,提供所有系統數據支持的戰略集合。
  • 通過對數據倉庫中數據的分析,可以幫助企業,改進業務流程、控制成本、題號提高產品質量等。
  • 數據倉科,並不是數據的最終目的地,而是爲數據最終的目的地做好準備。這些準備包括對數據的:清洗、轉義、分類、重組、合併、拆分、統計等等。

在這裏插入圖片描述

2 項目需求分析

  1. 用戶行爲數據採集平臺搭建
  2. 業務數據採集平臺搭建
  3. 數據倉庫維度建模
  4. 分析:用戶、流量、會員、商品、銷售、地區、活動等電商核心主題,統計的報表指標近100個
  5. 採用即席查詢工具,隨時進行指標分析
  6. 對集羣新能及逆行監控,發生異常需要報警
  7. 元數據管理
  8. 質量監控

3 項目框架

3.1 技術選型

需求 可選技術框架
數據採集傳輸 Flume Kafka Sqoop Logstash DataX
數據存儲 MySql HDFS HBase Redis MongoDB
數據計算 Hive Tez Spark Flink Storm
數據查詢 Presto Druid Impala Kylin
數據可視化 Echarts Superset QuickBI DataV
任務調度 Azkaban Oozie
集羣監控 Zabbix
元數據管理 Atlas
數據質量監控 Griffin

3.2 系統數據流程設計

在這裏插入圖片描述

3.3 框架版本選型

產品 版本
Hadoop 2.7.2
Flume 1.7.0
Kafka 0.11.0.2
Hive 2.3
Sqoop 1.4.6
MySql 5.6.24
Azkaban 2.5.0
Java 1.8
Zookeeper 3.4.10
Presto 0.189

3.4 服務器選型

  • 本地搭建3臺Centos6虛擬機(4g內存 40g硬盤)

3.5 集羣資源規劃設計

3.5.1 集羣規模計算

  1. 每天日活用戶100萬,每人一天平均生產100條:100萬*100條=1億條
  2. 每條日誌1kb左右,每天1億條:100000000/1024/1024=100G
  3. 半年內不擴容:100G*180=18T
  4. 保存3個副本:18T*3=54T
  5. 預留20%~30%=54T/0.7=77T
  6. 共計8T*10臺服務器(128G內存,8T硬盤)

3.5.2 本地測試集羣服務器規劃

服務名稱 子服務 hadoop102 hadoop103 hadoop104
HDFS NameNode
DataNode
SecondaryNameNode
Yarn NodeManager
ResourceManager
Zookeeper Zookeeper Server
Flume(日誌採集) Flume
Kafka Kafka
Flume(消費Kafka) Flume
Hive Hive
MySql MySql
Sqoop Sqoop
Presto Coordinator
Worker
Azkaban Azkaban WebServer
AzkabanExecutorServer
Druid Druid
Kylin
HBase HMaster
HRegionServer
Superset
Atlas
Solr Jar
Griffin
服務數總計 19 9 9
  • 注意:HDFS的NameNodeSecondaryNameNode和Yarn的ResourceManager配置在不同的服務器中,因爲都很耗內存

4 數據生成

4.1 埋點數據基本格式

  • 公共字段:基本所有手機都包含的字段
  • 業務字段:埋點上報的字段,有具體的業務類型
1587692644625 | {
	"cm": { //公共字段
		"ln": "-66.7", //double lng經度
		"sv": "V2.0.1", //String sdkVersion
		"os": "8.1.7",
		"g": "[email protected]", //String gmail
		"mid": "998", //String 設備唯一id
		"nw": "3G", //String 網絡模式
		"l": "en", //String language 系統語言
		"vc": "18", //String versionCode 程序版本號
		"hw": "750*1134", //String height width 屏幕寬高
		"ar": "MX", //String area 區域
		"uid": "998", //String 用戶標識
		"t": "1587650831270", //String 客戶端日誌產生時的事件
		"la": "5.2", //double lat緯度
		"md": "HTC-16", //String model 手機型號
		"vn": "1.3.1", //String versionName 程序版本名
		"ba": "HTC", //String brand 手機品牌
		"sr": "N" //String source 渠道號,應用從哪個渠道來的
	},
	"ap": "app", //項目數據來源 app pc
	"et": [{ //事件
		"ett": "1587626436201", //客戶端事件產生時間
		"en": "loading", //事件名稱
		"kv": { //事件結果,key-value
			"extend2": "",
			"loading_time": "0",
			"action": "3",
			"extend1": "",
			"type": "1",
			"type1": "201",
			"loading_way": "2"
		}
	}, {
		"ett": "1587604641583",
		"en": "ad",
		"kv": {
			"activityId": "1",
			"displayMills": "38392",
			"entry": "1",
			"action": "1",
			"contentType": "0"
		}
	}, {
		"ett": "1587672451544",
		"en": "active_background",
		"kv": {
			"active_source": "1"
		}
	}, {
		"ett": "1587631751514",
		"en": "favorites",
		"kv": {
			"course_id": 8,
			"id": 0,
			"add_time": "1587610751419",
			"userid": 1
		}
	}, {
		"ett": "1587633225209",
		"en": "praise",
		"kv": {
			"target_id": 7,
			"id": 9,
			"type": 2,
			"add_time": "1587692182176",
			"userid": 2
		}
	}]
}

4.2 事件日誌數據

4.2.1 商品列表頁 loading

標籤 含義
action 動作:開始加載=1,加載成功=2,加載失敗=3
loading_time 加載時長:計算下拉開始到接口返回數據的時間,(開始加載報 0,加載成功或加載失敗才上報時間)
loading_way 加載類型:1-讀取緩存,2-從接口拉新數據(加載成功才上報加載類型)
extend1 擴展字段 Extend1
extend2 擴展字段 Extend2
type 加載類型:自動加載=1,用戶下拽加載=2,底部加載=3(底部條觸發點擊底部提示條/點擊返回頂部加載)
type1 加載失敗碼:把加載失敗狀態碼報回來(報空爲加載成功,沒有失敗)

4.2.2 商品點擊 display

標籤 含義
action 動作:曝光商品=1,點擊商品=2
goodsid 商品 ID(服務端下發的 ID)
place 順序(第幾條商品,第一條爲 0,第二條爲 1,如此類推)
extend1 曝光類型:1 - 首次曝光 2-重複曝光
category 分類 ID(服務端定義的分類 ID)

4.2.3 商品詳情頁 newsdetail

標籤 含義
entry 頁面入口來源:應用首頁=1、push=2、詳情頁相關推薦=3
action 動作:開始加載=1,加載成功=2(pv),加載失敗=3, 退出頁面=4
goodsid 商品 ID(服務端下發的 ID)
show_style 商品樣式:0、無圖、1、一張大圖、2、兩張圖、3、三張小圖、4、一張小圖、5、一張大圖兩張小圖
news_staytime 頁面停留時長:從商品開始加載時開始計算,到用戶關閉頁面所用的時間。若中途用跳轉到其它頁面了,則暫停計時,待回到詳情頁時恢復計時。或中途劃出的時間超過 10 分鐘,則本次計時作廢,不上報本次數據。如未加載成功退出,則報空。
loading_time 加載時長:計算頁面開始加載到接口返回數據的時間 (開始加載報 0,加載成功或加載失敗才上報時間)
type1 加載失敗碼:把加載失敗狀態碼報回來(報空爲加載成功,沒有失敗)
category 分類 ID(服務端定義的分類 ID)

4.2.4 廣告 ad

標籤 含義
entry 入口:商品列表頁=1 應用首頁=2 商品詳情頁=3
action 動作: 廣告展示=1 廣告點擊=2
contentType Type: 1 商品 2 營銷活動
displayMills 展示時長 毫秒數
itemId 商品 id
activityId 營銷活動 id

4.2.5 消息通知 notification

標籤 含義
action 動作:通知產生=1,通知彈出=2,通知點擊=3,常駐通知展示(不重複上報,一天之內只報一次)=4
type 通知 id:預警通知=1,天氣預報(早=2,晚=3),常駐=4
ap_time 客戶端彈出時間
content 備用字段

4.2.6 用戶後臺活躍 active_background

標籤 含義
active_source 1=upgrade,2=download(下載),3=plugin_upgrade

4.2.7 評論 comment

序號 字段名稱 字段描述 字段類型 長度 允許空 缺省值
1 comment_id 評論表 int 10,0
2 userid 用戶 id int 10,0 0
3 p_comment_id 父級評論 id(爲 0 則是一級評論,不 爲 0 則是回覆) int 10,0
4 content 評論內容 string 1000
5 addtime 創建時間 string
6 other_id 評論的相關 id int 10,0
7 praise_count 點贊數量 int 10,0 0
8 reply_count 回覆數量 int 10,0 0

4.2.8 收藏 favorates

序號 字段名稱 字段描述 字段類型 長度 允許空 缺省值
1 id 主鍵 int 10,0
2 course_id 商品 id int 10,0 0
3 userid 用戶 ID int 10,0 0
4 add_time 創建時間 string

4.2.9 點贊 praise

序號 字段名稱 字段描述 字段類型 長度 允許空 缺省值
1 id 主鍵 id int 10,0
2 userid 用戶 id int 10,0
3 target_id 點讚的對象 id int 10,0
4 type 點贊類型 1 問答點贊 2 問答評論點贊 3 文章點贊數 4 評論點贊 int 10,0
5 add_time 添加時間 string

4.2.10 錯誤日誌

標籤 含義
errorBrief 錯誤摘要
errorDetail 錯誤詳情

4.3 啓動日誌數據

標籤 含義
entry 入口:push=1 , widget=2 , icon=3 , notification=4,lockscreen_widget =5
open_ad_type 開屏廣告類型: 開屏原生廣告=1, 開屏插屏廣告=2
action 狀態:成功=1 失敗=2
loading_time 加載時長:計算下拉開始到接口返回數據的時間,(開始加載報 0,加載成功或加載失敗才上報時間)
detail 失敗碼(沒有則上報空)
extend1 失敗的 message(沒有則上報空)
en 日誌類型 start
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章