热门标签 | 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、详情页

推荐阅读
  • 伸缩性|发生_分布式文件系统设计,该从哪些方面考虑?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了分布式文件系统设计,该从哪些方面考虑?相关的知识,希望对你有一定的参考价值。点击上方关注“ ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • Azkaban(三)Azkaban的使用
    界面介绍首页有四个菜单projects:最重要的部分,创建一个工程,所有flows将在工程中运行。scheduling:显示定时任务executing:显示当前运行的任务histo ... [详细]
  • Java开发实战讲解!字节跳动三场技术面+HR面
    二、回顾整理阿里面试题基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了。自我介绍JVM如何加载一个类的过程,双亲委派模型中有 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
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社区 版权所有