热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据项目之电商数仓一(用户行为采集)

一、数据仓库概念数据仓库(DataWarehouse)是为企业所有决策制定过程,提供所有系统数据支持的战略集合。二、项目需求及架构设计2.1项目需求分析1、项目需求

一、数据仓库概念

数据仓库(Data Warehouse)

  是为企业所有决策制定过程,提供所有系统数据支持的战略集合。

二、项目需求及架构设计

2.1 项目需求分析

  1、项目需求

   1)用户行为数据采集平台搭建

   2)业务数据采集平台搭建

   3)数据仓库维度建模

      4)分析:用户、流量、会员、商品、销售、地区、活动等电商核心主题,统计的报表指标近100。

      5)采用即席查询工具,随时进行指标分析

      6)对集群性能进行监控,发生异常需要报警

    7)元数据管理

      8)质量监控

2.2 项目框架

2.2.1 技术选型

技术选型主要需要考虑的因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算

  数据采集传输:FlumeKafkaSqoop、Logstash、DataX、

  数据存储:MysqlHDFS、HBase、Redis、MongoDB

  数据计算:HiveTezSpark、Flink、Storm

  数据查询:PrestoDruid、Impala、Kylin

  数据可视化:Echarts、Superset、QuickBI、DataV

  任务调度:Azkaban、Oozie

  集群监控:Zabbix

  元数据管理:Atlas

  数据质量监控:Griffin

2.2.2 系统数据流程设计

2.2.3 框架版本选型

2.2.4 服务器选型

  服务器是选择物理机还是云主机?

1)物理机:

  128G内存,20核物理CPU,40线程,8THDD和2TSSD硬盘,戴尔品牌单台报价4万出头。一般物理机寿命5年左右

2)云主机:

  以阿里云为例,和上面大致相同配置,每年5万

2.2.5 集群资源规划设计

1、集群规模

1)如何确认集群规模?(按每台服务器8T磁盘,128G内存)

(1)按每天日活跃用户100万,每人一天平均100条:100万*100条 = 1亿条

(2)每条日志1K左右,每天1亿条:100000000 / 1024 /1024 = 约100G

(3)半年内不扩容服务器来算:100G * 180 天 = 约18T

(4)保存3个副本:18T * 3 = 54T

(5)预留20%~30%Buffer=54T/0.7=77T

(6)需要约8T*10台服务器

2)如果要考虑数仓分层?数据采用压缩?需要重新计算

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

AzkabanWebServer

 

 

AzkabanExecutorServer

 

 

Druid

Druid

Kylin

 

 

 

Hbase

HMaster

 

 

HRegionServer

Superset

 

 

 

Atlas

 

 

 

Solr

Jar

 

 

Griffin

 

 

 

服务数总计

 

19

9

9

三、数据生成模块

3.1 埋点数据基本格式

公共字段:基本所有安卓手机都包含的字段

业务字段:埋点上报的字段,有具体的业务类型

下面就是一个示例,表示业务字段的上传。

{

"ap":"xxxxx",//项目数据来源 app pc

"cm": {  //公共字段

      "mid": "",  // (String) 设备唯一标识

        "uid": "",  // (String) 用户标识

        "vc": "1",  // (String) versionCode,程序版本号

        "vn": "1.0",  // (String) versionName,程序版本名

        "l": "zh",  // (String) language系统语言

        "sr": "",  // (String) 渠道号,应用从哪个渠道来的

        "os": "7.1.1",  // (String) Android系统版本

        "ar": "CN",  // (String) area区域

        "md": "BBB100-1",  // (String) model手机型号

        "ba": "blackberry",  // (String) brand手机品牌

        "sv": "V2.2.1",  // (String) sdkVersion

        "g": "",  // (String) gmail

        "hw": "1620x1080",  // (String) heightXwidth,屏幕宽高

        "t": "1506047606608",  // (String) 客户端日志产生时的时间

        "nw": "WIFI",  // (String) 网络模式

        "ln": 0,  // (double) lng经度

        "la": 0  // (double) lat 纬度

    },

"et":  [  //事件

            {

                "ett": "1506047605364",  //客户端事件产生时间

                "en": "display",  //事件名称

                "kv": {  //事件结果,以key-value形式自行定义

                    "goodsid": "236",

                    "action": "1",

                    "extend1": "1",

"place": "2",

"category": "75"

                }

            }

        ]

}

示例日志(服务器时间戳 | 日志):

1540934156385|{

    "ap": "gmall",

    "cm": {

        "uid": "1234",

        "vc": "2",

        "vn": "1.0",

        "la": "EN",

        "sr": "",

        "os": "7.1.1",

        "ar": "CN",

        "md": "BBB100-1",

        "ba": "blackberry",

        "sv": "V2.2.1",

        "g": "abc@gmail.com",

        "hw": "1620x1080",

        "t": "1506047606608",

        "nw": "WIFI",

        "ln": 0

    },

        "et": [

            {

                "ett": "1506047605364",  //客户端事件产生时间

                "en": "display",  //事件名称

                "kv": {  //事件结果,以key-value形式自行定义

                    "goodsid": "236",

                    "action": "1",

                    "extend1": "1",

"place": "2",

"category": "75"

                }

            },{

              "ett": "1552352626835",

              "en": "active_background",

              "kv": {

                   "active_source": "1"

              }

           }

        ]

    }

}

下面是各个埋点日志格式。其中商品点击属于信息流的范畴

3.2 事件日志数

 

 

 

3.2.1 商品列表页(loading)

事件名称:loading

标签

含义

action

动作:开始加载=1,加载成功=2,加载失败=3

loading_time

加载时长:计算下拉开始到接口返回数据的时间,(开始加载报0,加载成功或加载失败才上报时间)

loading_way

加载类型:1-读取缓存,2-从接口拉新数据
(加载成功才上报加载类型)

extend1

扩展字段 Extend1

extend2

扩展字段 Extend2

type

加载类型:自动加载=1,用户下拽加载=2,底部加载=3(底部条触发点击底部提示条/点击返回顶部加载)

type1

加载失败码:把加载失败状态码报回来(报空为加载成功,没有失败)

 

3.2.2 商品点击(display)

事件标签:display

标签

含义

action

动作:曝光商品=1,点击商品=2,

goodsid

商品ID(服务端下发的ID)

place

顺序(第几条商品,第一条为0,第二条为1,如此类推)

extend1

曝光类型:1 - 首次曝光 2-重复曝光

category

分类ID(服务端定义的分类ID)

     

 

3.2.3 商品详情页(newsdetail)

事件标签:newsdetail

标签

含义

entry

页面入口来源:应用首页=1、push=2、详情页

推荐阅读
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 提升MySQL数据库架构性能的策略与方法
    为了提升MySQL数据库架构的性能,本文探讨了多种策略与方法。首先,分析了影响数据库性能的关键因素,并详细阐述了数据库结构优化的重要性。接着,介绍了数据库设计的基本步骤,包括第一、第二和第三范式的应用,以及反范式化设计的场景。此外,还讨论了数据库物理设计的关键要素,如表定义、索引设计和存储引擎选择,以确保高效的查询响应和数据管理。 ... [详细]
  • 本文将深入探讨MySQL与MongoDB在游戏账户服务中的应用特点及优劣。通过对比这两种数据库的性能、扩展性和数据一致性,结合实际案例,帮助开发者更好地选择适合游戏账户服务的数据库方案。同时,文章还将介绍如何利用Erlang语言进行高效的游戏服务器开发,提升系统的稳定性和并发处理能力。 ... [详细]
  • Phoenix 使用体验分享与深度解析
    闲来无事看了下hbase方面的东西,发现还好理解不过不大习惯于是找到个phoenix感觉不错性能指标如下好像还不错了准备工作:启动hadoop集群启动zookkeeper启动hba ... [详细]
  • 摘要:本文中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务在读者正在工作的 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 你知道Kafka和Redis的各自优缺点吗?一文带你优化选择,不走弯路 ... [详细]
author-avatar
一直很哇塞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有