• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 數據倉庫 — 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
    版權聲明:本文為weixin_43508544原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_43508544/article/details/105724961

    智能推薦

    數據倉庫理論

    學習目標 理解OLTP(在線業務處理)和OLAP(在線數據分析)的區別 理解數據倉庫的特點 理解數據倉庫系統架構 理解指標與維度 理解下鉆與上卷 理解事實表與維度表 理解星型模型和雪花模型 理解緩慢漸變維 掌握數據倉庫的分層方法 數據倉庫介紹 數據分析的問題 做分析的時候,很多業務數據都會分散的存儲到很多業務后臺中。數據孤島 數據量巨大,需要一種能夠存儲海量數據,同時也能分析海量數據的工具 工具還...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    猜你喜歡

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    styled-components —— React 中的 CSS 最佳實踐

    https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...

    基于TCP/IP的網絡聊天室用Java來實現

    基于TCP/IP的網絡聊天室實現 開發工具:eclipse 開發環境:jdk1.8 發送端 接收端 工具類 運行截圖...

    精品国产乱码久久久久久蜜桃不卡