电商日志项目(一)

电商日志项目

  • 一、项目体系架构设计
    • 1. 项目系统架构
    • 2. 项目数据流程
  • 二、环境搭建
    • 1. NginxLog文件服务
      • 1.1. 上传,解压
      • 1.2. 编译安装
      • 1.3. 启动验证
    • 2. Flume-ng
      • 2.1. 上传解压
      • 2.2. 修改配置文件
      • 2.3. 修改环境变量
      • 2.4. 验证
    • 3. Sqoop
      • 3.1. 上传解压
      • 3.2. 配置环境变量
      • 3.3. 修改配置文件sqoop-env.sh
      • 3.4. 修改configure-sqoop
      • 3.5. 验证
    • 4. Hive和HBase的整合
      • 4.1. 丢jar包
      • 4.2. 检查jar是否已经上传成功
      • 4.3. 在hive的配置文件增加属性
      • 4.4. 验证
    • 5. Hive on Tez
      • 5.1. 部署至HDFS上
      • 5.2. 创建tez-site.xml
      • 5.3. 压缩包解压当前lib目录下
      • 5.4. 所有jar包拷贝至lib目录下
      • 5.5. 验证
      • 5.6. Hive2 On Tez测试
    • 6. Oozie集成Apache Hadoop搭建
      • 6.2. 在Oozie目录下创建libext目录
      • 6.3. 拷贝依赖的Jar包
      • 6.4. 修改Oozie配置文件
      • 6.5. 在Mysql中创建Oozie的数据库
      • 6.6. yarn.tar.gz文件到HDFS
      • 6.7. 初始化Oozie,验证
    • 7. DataX 3安装
      • 7.1. 在Linux上安装Python3
        • 7.1.1. 安装依赖环境
        • 7.1.2. 下载Python3
        • 7.1.3. 安装Python3
          • 7.1.3.1. 创建目录:
          • 7.1.3.2. 安装gcc
        • 7.1.4. 新的包libffi-devel
          • 7.1.4.1.生成编译脚本(指定安装目录)
          • 7.1.4.4. 检查python3.7的编译器
          • 7.1.4.5. 建立Python3和pip3的软链
          • 7.1.4.6. 加入PATH
          • 7.1.4.7. 验证
      • 7.2. 安装DataX
        • 7.2.1. 解压
        • 7.2.2. 自检脚本
    • 8. Azkaban 3 集群搭建
      • 8.1. 节点规划
      • 8.2. 准备工作
      • 8.3. 上传解压
      • 8.4. 数据库和表的创建导入
      • 8.5. 时间同步配置
      • 8.6. exec配置文件
      • 8.7. 同步executor到所有节点
      • 8.8. 启动和激活executor server
      • 8.9. Web配置文件
      • 8.10. 启动Web server
      • 8.11. 执行服务器配置

一、项目体系架构设计

1. 项目系统架构

项目以某电商网站真实的业务数据架构为基础,将数据从收集到使用通过前端应用程序,后端程序,数据分析,平台部署等多方位的闭环的业务实现。形成了一套符合教学体系的电商日志分析项目,主要通过离线技术来实现项目。
在这里插入图片描述

  • 用户可视化:主要负责实现和用户的交互以及业务数据的展示,主体采用JS实现,不是在tomcat服务器上。
  • 业务逻辑程序:主要实现整体的业务逻辑,通过spring进行构建,对接业务需求。部署在tomcat上。
  • 数据存储
    • 业务数据库:项目采用的是广泛应用的关系型数据库mysql,主要负责平台业务逻辑数据的存储
    • HDFS分布式文件存储服务:项目采用HBase+Hive,主要用来存储历史全量的业务数据和支撑高速获取需求,以及海量数据的存储,为以后 的决策分析做支持。
  • 离线分析部分
    • 日志采集服务:通过利用Flume-ng对业务平台中用户对于页面的访问行为进行采集,定时发送到HDFS集群中
    • 离线分析和ETL:批处理统计性业务采用MapReduce+Hivesql进行实现,实现对指标类数据的统计任务
    • 数据转送服务:通过利用sqoop对业务数据批处理,主要负责将数据转送到Hive中

2. 项目数据流程

  • 分析系统(bf_transformer)

    • 数据从收集到页面展示
      在这里插入图片描述
  • 日志收集部分

    • Flume从业务服务的运行日志中读取日志更新,并将更新的日志定时推送到HDFS中;HDFS在收到这些日志之后,通过MR程序对获取的日志信息进行过滤处理,获取用户访问数据流 UID|MID|PLATFORM|BROWER|TIMESTAMP ;计算完成之后,将数据和HBase中的进行合并。
  • ETL部分

    • 通过MapReduce将系统初始化的数据,加载到HBase中。
  • 离线分析部分

    • 可以通过Oozie实现对离线统计服务以及离线分析服务的调度,通过设定的运行时间完成对任务的触发运行
    • 离线分析服务从HBase中加载数据,将 浏览器维度信息时间维度信息kpi维度相关信息 操作系统信息维度统计浏览器相关分析数据的统计统计用户基本信息的统计统计用户浏览深度相关分析数据的统计,多个统计算法进行实现,并将计算结果写到Mysql中;
  • 数仓分析服务

    • sql脚本的调度与执行

在这里插入图片描述

  • 可以通过Oozie实现对数仓分析服务的调度,通过设定的运行时间完成对任务的触发运行
  • 数据分析服务从各个系统的数据库中加载数据到HDFS中,HDFS在收到这些日志之后,通过MR程序对获取的数据进行过滤处理(进行数据格式的统一),计算完成之后,将数据和Hive中的进行合并;Hive获取到这些数据后,通过HQL脚本对获取的数据进行逻辑加工,将交易信息访问信息 ,多个指标进行实现;计算完成之后,将数据和Hive中的进行合并。
  • 程序后台执行工作流

注意:不采用ip来标示用户的唯一性,我们通过在cookie中填充一个uuid来标示用户的唯一性。

在我们的js sdk中按照收集数据的不同分为不同的事件。

  • 比如pageview事件等,Js sdk的执行流程如下:
    在这里插入图片描述

  • 分析

    • PC端事件分析
      针对我们最终的不同分析模块,我们需要不同的数据,接下来分别从各个模块分析,每个模块需要的数据。用户基本信息就是用户的浏览行为信息分析,也就是我们只需要pageview事件就可以了;

浏览器信息分析以及地域信息分析其实就是在用户基本信息分析的基础上添加浏览器和地域这个维度信息,其中浏览器信息我们可以通过浏览器的window.navigator.userAgent来进行分析,地域信息可以通过nginx服务器来收集用户的ip地址来进行分析,也就是说pageview事件也可以满足这两个模块的分析。

外链数据分析以及用户浏览深度分析我们可以在pageview事件中添加访问页面的当前url和前一个页面的url来进行处理分析,也就是说pageview事件也可以满足这两个模块的分析。

订单信息分析要求pc端发送一个订单产生的事件,那么对应这个模块的分析,我们需要一个新的事件chargeRequest。对于事件分析我们也需要一个pc端发送一个新的事件数据,我们可以定义为event。除此之外,我们还需要设置一个launch事件来记录新用户的访问。

Pc端的各种不同事件发送的数据url格式如下,其中url中后面的参数就是我们收集到的数据:
http://shsxt.com/shsxt.gif?requestdata

最终分析模块PC端js sdk事件
用户基本信息分析pageview事件
浏览器信息分析pageview事件
地域信息分析pageview事件
外链数据分析pageview事件
用户浏览深度分析pageview事件
订单信息分析chargeRequest事件
事件分析event事件
用户基本信息修改launch事件
  1. PC端JS和SDK事件
    通用参数
    所有埋点中都会返回的相同信息。以下是通用参数具体内容
名称内容
发送的数据u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&c_time=1449137597974&ver=1&pl=website&sdk=js& b_rst=1920*1080&u_ud=12BF4079-223E4A57-AC60-C1A0 4D8F7A2F&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20(KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari% 2F537.1&l=zh-CN&en=e_l
参数名称类型描述
u_sdstring会话id
c_timestring客户端创建时间
verstring版本号, eg: 0.0.1
plstring平台, eg: website
sdkstringSdk类型, eg: js
b_rststring浏览器分辨率,eg: 1800*678
u_udstring用户/访客唯一标识符
b_ievstring浏览器信息useragent
lstring客户端语言
  • Launch事件

当用户第一次访问网站的时候触发该事件,不提供对外调用的接口,只实现该事件的数据收集。

名称内容
发送的数据en=e_l&通用参数
参数名称类型描述
enstring事件名称, eg: e_l
  • 会员登陆时间
    当用户登陆网站的时候触发该事件,不提供对外调用的接口,只实现该事件的数据收集。
名称内容
发送的数据u_mid=phone&通用参数
参数名称类型描述
u_midstring会员id,和业务系统一致
  • Pageview事件,依赖于onPageView类
    当用户访问页面/刷新页面的时候触发该事件。该事件会自动调用,也可以让程序员手动调用。
方法名称内容
发送的数据en=e_pv&p_ref=www.shsxt.com%3A8080&p_url =http%3A%2F%2Fwww.shsxt.com%3A8080%2Fvst_track%2Findex.html&通用参数
参数名称类型描述
enstring事件名称, eg: e_pv
p_urlstring当前页面的url
p_refstring上一个页面的url
  • ChargeSuccess事件
    当用户下订单成功的时候触发该事件,该事件需要程序主动调用。
方法名称onChargeRequest
发送的数据oid=orderid123&on=%E4%BA%A7%E5%93%81%E5%90%8D%E7%A7%B0&cua=1000&cut=%E4%BA%BA%E6%B0%91%E5%B8%81&pt=%E6%B7%98%E5%AE%9&en=e_cs &通用参数
参数类型是否必填描述
orderIdstring订单id
onString产品购买描述名称
cuadouble订单价格
cutString货币类型
ptString支付方式
enString事件名称, eg: e_cs
  • ChargeRefund事件
    当用户下订单失败的时候触发该事件,该事件需要程序主动调用。
方法名称onChargeRequest
发送的数据oid=orderid123&on=%E4%BA%A7%E5%93%81%E5%90%8D%E7%A7%B0&cua=1000&cut=%E4%BA%BA%E6%B0%91%E5%B8%81&pt=%E6%B7%98%E5%AE%9&en=e_cr &通用参数
参数 类型是否必填描述
orderId string订单id
on String产品购买描述名称
cua double订单价格
cut String货币类型
pt String支付方式
en String事件名称, eg: e_cr
  • Event事件
    当访客/用户触发业务定义的事件后,前端程序调用该方法。
方法名称onEventDuration
发送的数据ca=%E7%B1%BB%E5%9E%8B&ac=%E5%8A%A8%E4%BD%9Ckv_p_url=http%3A%2F%2Fwwwshsxt…com%3A8080%2Fvst_track%2Findex.html&kv_%E5%B1%9E%E6%80%A7key=%E5%B1%9E%E6%80%A7value&du=1000& en=e_e&通用参数
参数类型是否必填描述
ca stringEvent事件的Category名称
ac StringEvent事件的action名称
kv_p_url mapEvent事件的自定义属性
du longEvent事件的持续时间
en String事件名称, eg: e_e
  • 数据参数说明
    在各个不同事件中收集不同的数据发送到nginx服务器,但是实际上这些收集到的数据还是有一些共性的。下面将所用可能用到的参数描述如下:
参数名称类型描述
enstring事件名称, eg: e_pv
verstring版本号, eg: 0.0.1
plstring平台, eg: website
sdkstringSdk类型, eg: js
b_rststring浏览器分辨率,eg: 1800*678
b_ievstring浏览器信息useragent
u_udstring用户/访客唯一标识符
lstring客户端语言
u_midstring会员id,和业务系统一致
u_sdstring会话id
c_timestring客户端时间
p_urlstring当前页面的url
p_refstring上一个页面的url
ttstring当前页面的标题
castringEvent事件的Category名称
acstringEvent事件的action名称
kv_*stringEvent事件的自定义属性
dustringEvent事件的持续时间
oidstring订单id
onstring订单名称
cuastring支付金额
cutstring支付货币类型
ptstring支付方式
  • 订单工作流如下所示:(退款类似)
    在这里插入图片描述

  • 分析

  • 程序后台事件分析
    本项目中在程序后台只会出发chargeSuccess事件,本事件的主要作用是发送订单成功的信息给nginx服务器。发送格式同pc端发送方式, 也是访问同一个url来进行数据的传输。格式为:
    http://shsxt.com/shsxt.gif?requestdata

最终分析模块PC端js sdk事件
订单信息分析chargeSuccess事件 chargeRefund事件
- chargeSuccess事件

当会员最终支付成功的时候触发该事件,该事件需要程序主动调用。

方法名称onChargeSuccess
发送的数据u_mid=shsxt&c_time=1449142044528&oid=orderid123&ver=1&en=e_cs&pl=javaserver&sdk=jdk
参数类型是否必填描述
orderIdstring订单id
memberIdstring会员id
- chargeRefund事件

当会员进行退款操作的时候触发该事件,该事件需要程序主动调用。

方法名称onChargeRefund
发送的数据u_mid=shsxt&c_time=1449142044528&oid=orderid123&ver=1&en=e_cr&pl=javaserver&sdk=jdk
参数类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/6800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何进行Go语言的性能测试和调优?

文章目录 开篇一、性能测试1. 使用标准库中的testing包2. 使用第三方工具 二、性能调优1. 优化算法和数据结构2. 减少不必要的内存分配和垃圾回收3. 并发和并行 结尾 开篇 Go语言以其出色的性能和简洁的语法受到了广大开发者的喜爱。然而,在实际开发中,…

微服务架构与单体架构

微服务架构与与单体架构比较 微服务架构是一种将应用程序作为一组小的、独立服务的系统架构风格,每个服务运行在其自己的进程中,并通常围绕业务能力组织。这些服务通过定义良好且轻量级的机制(通常是HTTP REST API)进行通信。微服…

Redis(基础指令和五大数据类型)

文章目录 1.基本介绍1.多种数据结构支持2.应用场景 2.Redis安装(直接安装到云服务器)1.安装gcc1.yum安装gcc2.查看gcc版本 2.将redis6.2.6上传到/opt目录下3.进入/opt目录下然后解压4.进入 redis-6.2.6目录5.编译并安装6.进入 /usr/local/bin 查看是否有…

智慧文旅开启沉浸式文化体验,科技让旅行更生动:借助智慧技术,打造沉浸式文化体验场景,让旅行者在旅行中深度感受文化的魅力

一、引言 随着科技的飞速发展,传统旅游行业正经历着前所未有的变革。智慧文旅,作为一种新兴的旅游模式,正以其独特的魅力,吸引着越来越多的旅行者。智慧文旅不仅改变了人们的旅行方式,更在深度上丰富了人们的文化体验…

Spring入门及注解开发

1 引言 自定义注解可以用来为代码添加元数据信息,简化配置,提高代码的可读性和可维护性。通过自定义注解,可以实现自定义的业务逻辑、约束条件、配置参数等功能。在Spring中,自定义注解常用于标记组件、配置依赖注入、AOP切面等。 自定义注解可以添加元数据信息,低代码框…

关于图形库

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容,本章回中将介绍使用get进行路由管理.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

AEC Capital Limited:开启可持续金融新纪元

在当今社会,环保和可持续发展已成为全球关注的焦点。在这个背景下,AEC Capital Limited作为香港的一家金融服务公司,以其专业、高端的服务和创新的理念,成为可持续金融领域的引领者。我们致力于将环境保护与金融服务相结合&#x…

观测与预测差值自动变化系统噪声Q的自适应UKF(AUKF_Q)MATLAB编写

简述 基于三维模型的UKF,设计一段时间的输入状态误差较大,此时通过对比预测的状态值与观测值的残差,在相应的情况下自适应扩大系统方差Q,构成自适应无迹卡尔曼滤波(AUKF),与传统的UKF相比&…

mac监听 linux服务器可视化(Grafana+Promethus+Node_exporter)

Grafana和promethus(普罗米修斯)的安装和使用 监控系统的Prometheus类似于一个注册中心,我们可以只需要配置一个Prometheus,而在其他服务器,只需要安装node_exporter,它们的数据流转就是通过exporter采集数据信息,然后告诉prometheus它的位置…

华为二层交换机与路由器连通上网实验

华为二层交换机与路由器连通上网实验 二层交换机是一种网络设备,用于在局域网(LAN)中转发数据帧。它工作在OSI模型的第二层,即数据链路层。二层交换机通过学习和维护MAC地址表,实现了数据的快速转发和广播域的隔离。 实…

CGAL 网格简化

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 为了提高网格处理的效率,通常需要将过于冗长的3D数据集简化为更简洁而又真实的表示。尽管从几何压缩到逆向工程有许多应用,但简洁地捕捉表面的几何形状仍然是一项乏味的任务。CGAL中则为我们提供了一种通过变分几…

基于LLama3、Langchain,Chroma 构建RAG

概要: 使用Llama3 Langchain和ChromaDB创建一个检索增强生成(RAG)系统。这将允许我们询问有关我们的文档(未包含在训练数据中)的问题,而无需对大型语言模型(LLM)进行微调。在使用RA…

assert函数详解

assert函数详解 1.函数概述2.assert函数一般用法3.assert函数的一些使用案例3.1判断大小3.2strlen函数的模拟实现3.3其它 4.注意 1.函数概述 评价一个表达式,当表达式错误时,输出一个诊断信息并且终止程序 assert是一个宏,在使用之前要调用库…

[Meachines][Hard]Napper

Main $ nmap -p- -sC -sV 10.10.11.240 --min-rate 1000 $ curl http://10.10.11.240 $ gobuster dir -u "https://app.napper.htb" -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-small-words-lowercase.txt -k 博客 $ ffuf -c -w /usr/share/se…

BUUCTF---misc---菜刀666

1、下载附件,在wireshark中分析 2、题目说是菜刀,联想到http协议的post方法 3、使用命令过滤 http.request.methodPOST 4、打开数据包,发现有个不一样 这里面有一大串的数据包 5、追踪http数据流,发现z2后面是一个jpg文件的文件…

中仕公考:哪些情况不能考公务员?

1.年龄不符合 主要分两类【一类是未成年人,另一类是超龄人员】 具体来讲:年龄一般为18周岁以上、35周岁以下 (2024国考标准是1987年10月至2005年10月期间出生) 对于2024年应届硕士、博士研究生(非在职人员)放宽到40周岁以下(2024国考标准是1982年10月以后…

GitHub Desktop安装与使用教程

GitHub Desktop 是GitHub公司推出的一款桌面应用程序,旨在帮助开发人员更轻松使用GitHub。它提供了一个直观的用户界面,允许用户通过图形化界面来执行常见的 Git 操作,如克隆仓库、创建分支、提交更改、合并代码等。 GitHub Desktop 的设计使…

Spring - 7 ( 13000 字 Spring 入门级教程 )

一:Spring Boot 日志 1.1 日志概述 日志对我们来说并不陌生,我们可以通过打印日志来发现和定位问题, 或者根据日志来分析程序的运行过程,但随着项目的复杂度提升, 我们对日志的打印也有了更高的需求, 而不仅仅是定位排查问题 比如有时需要…

基于JSP的酒店客房管理系统(二)

目录 第二章 相关技术介绍 2.1 Jsp的简介 2.2 sql server 2005 的简介 第三章 系统的分析与设计 3.1 系统需求分析 1.理解需求 2.需求分析 3.2开发及运行环境 3.3功能模块的设计 3.3.1 设计目标 3.3.2 客房管理系统前台的设计 3.3.3 操作员管…

nginxconfig.io项目nginx可视化配置--搭建-视频

项目地址 https://github.com/digitalocean/nginxconfig.io搭建视频 nginxconfig.io搭建 nginxconfig.io搭建 展示效果 找到这个项目需要的docker镜像,有项目需要的node的版本 docker pull node:20-alpine运行这个node容器,在主机中挂载一个文件夹到容器中 主机&a…