基于Kylin的数据统计分析平台架构设计与实现

目录

1 前言

2 关键模块

2.1 数据仓库的搭建

2.2 ETL

2.3 Kylin数据分析系统

2.4 数据可视化系统

2.5 报表模块

3 最终成果

4 遇到问题


1 前言

        这是在TP-LINK公司云平台部门做的一个项目,总体包括云上数据统计平台的架构设计和组件开发,在此只做技术分享,不涉及其他用途。该项目为搭建数据平台以便开发数据仓库和数据应用,支持对云上设备数据做管理和分析,并使用kylin框架、cube多维分析对数据仓库的数据做统计和计算,以空间换时间和预计算的思想,每日自动化统计分析生成计算结果立方体(cube)数据,对接到报表系统和数据可视化系统,供领导和业务部门查看,以及便于观察设备数据的历史趋势,让业务部门更好地做业务决策。整体的架构与数据流向如下图所示,包括Hive做数据仓库、Spark实现的ETL组件、kylin、报表模块和数据可视化系统等应用。每天Hive新增数据20多个G,kylin预计算之后的数据压缩比为5%左右。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qKm5oOz5a6I5pybZXI=,size_20,color_FFFFFF,t_70,g_se,x_16

2 关键模块

2.1 数据仓库的搭建

       选择Hive作为数据仓库组件,存储主要分为三类数据,包括设备、用户和生产数据。表的设计采用星型模型,维度表有model表,事实表有设备首次连接时间、设备在线状态表等。每天全量拉取线上数据库的数据,数据仓库保留最近两天的数据。对于个别大数据量的表采用冷热数据分离的方式,设置冷热数据分割时间线,每次只拉取热数据,更新被update的冷数据,再将冷热数据合并。定时任务脚本定时清理过期分区的数据。

2.2 ETL

       ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程。ETL组件使用Spark框架,从线上数据库和备份库抽取数据到内存中做计算和转换,然后加载到数据仓库Hive。ETL一方面做数据清洗,过滤掉不合法的值,一方面做数据粒度的转换,例如时间字段转换成粒度小的衍生字段。由于整体线上数据库数据量不是特别大,所以选择全量抽取。

2.3 Kylin数据分析系统

       原先采用的是使用spark内存计算技术对数据做各种维度组合做聚合计算,将统计值存于mysql中,用户从mysql中做二次聚合查询结果耗时过长,所以调研一种OLAP引擎旨在提高查询效率。kylin是国内开发的一款开源的OLAP引擎,支持对数据做多维度的预计算,利用以空间换时间的思想,根据用户建立的用户模型做聚合计算,生成对应的多个数据集合cubeid,提供sql的方式查询,提高数据查询效率。数据模型主要包括设备数据、用户数据和设备生产数据。维度众多情况下预计算后的数据量庞大,需要对cube构建做优化,主要通过两方面优化。一是使用聚合组,聚合组是通过分组的方式划分维度,同一组中的维度才能被聚合计算,减少维度组合的情况,从而减少cubeid。二是使用cubeplanner进行优化,该方式需要开启dashboard对历史统计请求监控统计,根据统计数据包括cubei命中频率以及采用贪心算法,经过多轮计算,因为有些cubeid可以根据其他cubeid计算,每一轮计算效益比最大的cubeid,最终到达膨胀率阈值后停止。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qKm5oOz5a6I5pybZXI=,size_20,color_FFFFFF,t_70,g_se,x_16

2.4 数据可视化系统

     数据可视化系统用python(Django)构建,前端使用vue,前端接受用户选择的查询维度,以表格和折线图的形式展示结果数据。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5qKm5oOz5a6I5pybZXI=,size_20,color_FFFFFF,t_70,g_se,x_16

2.5 报表模块

      报表模块是一个python模块,根据定义好的数据度量,获取kylin统计数据,生成Excel。度量数据主要设备和用户数据在多维度下的各个场景下的聚合值,如设备24小时内活跃数量、绑定账号数量等。生成的Excel表格包含了全部报表数据,每日邮件定时发出。另外还有定制报表,这一部分是业务部门根据自己的特定需求提出,不包含在上面的常规报表模块,需要定制化开发。

3 最终成果

     最终实现了千万设备数量每日自动化地统计分析,支持数据可视化系统查询多维度数据,数据查询效率相比于原来的mysql查询提高10倍左右。

4 数据平台研发经验

 数据平台的研发经验是:

1、选用或者打造一款适合ETL组件,能够对线上数据做清洗和计算的处理;

2、选用一款数据仓库的组件,如hive,然后进行数据仓库的建设,可以参考业界通用的eds,dim,dw层分层架构;

3、对数据的分析可以考虑采用kylin或clinkhouse,对数据做多维度的分析和预计算;

4、 根据业务对数据的需求设计数据应用,如数据报表、数据可视化系统,推荐系统等,更高级的数据应用使用数据挖掘和机器学习等人工智能技术进行数据处理和开发数据产品。整个数据平台的建设过程包括架构设计、组件调研和研发、业务调研和数据产品规划等过程,架构设计和业务需求是重点,决定于组件的选型和功能。        

4 遇到问题

  1. 因系统重启并且误用tmp临时目录作为hdfs的存储目录,导致hdfs和kylin的所有元数据和业务数据都丢失,解决方案为重新创建kylin model和cube等信息,hdfs重新建立数据仓库表,已生成的统计数据丢失了,可视化系统改为从旧数据统计系统获取数据。
  2. 数据分析任务失败没能及时发现,需要人工检查,有时候需要外部门反馈才发现,恢复数据困难。解决方案为增加任务执行失败告警,监控各个任务的执行时间和结果,建立超时和失败等告警,及时发现问题,及时恢复数据。
  3. 数据构建任务执行过程中失败,查看kylin相关日志,报OOM错误,再查看Hadoop的DataNode、resourcemanager的相关日志查看具体job的报错信息,通过调整mapreduce.map.java.opts和mapreduce.reduce.java.opts的值修改map和reduce线程的jvm配置。

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

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

相关文章

C++ - C++11历史 - 统一列表初始化 - aotu - decltype - nullptr - C++11 之后 STL 的改变

目录 C的发展史了解 统一列表初始化 {}初始化 std::initializer_list 在 vector 的模拟实现当中加上 initializer_list 作为参数的构造函数 声明 aotu decltype nullptr C11 之后 STL 的一些变化 新容器 容器中的一些新方法 C的发展史了解 在2003年C标准委员会曾经提…

基于SSM的实验室考勤管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

CCF CSP认证 历年题目自练Day25

题目 试题编号: 201403-3 试题名称: 命令行选项 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间…

插入排序/折半插入排序

插入排序/折半插入排序 插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常…

光伏储能直流系统MATLAB仿真(PV光伏阵列+Boost DCDC变换器+负载+双向DCDC变换器+锂离子电池系统)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

前端 | AjaxAxios模块

文章目录 1. Ajax1.1 Ajax介绍1.2 Ajax作用1.3 同步异步1.4 原生Ajax 2. Axios2.1 Axios下载2.2 Axios基本使用2.3 Axios方法 1. Ajax 1.1 Ajax介绍 Ajax: 全称(Asynchronous JavaScript And XML),异步的JavaScript和XML。 1.2 Ajax作用 …

javaee SpringMVC中json的使用

jsp <%--Created by IntelliJ IDEA.User: 呆萌老师:QQ:2398779723Date: 2019/12/6Time: 15:55To change this template use File | Settings | File Templates. --%> <% page contentType"text/html;charsetUTF-8" language"java" %> <%St…

蓝桥杯每日一题2023.10.7

跑步锻炼 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 简单枚举&#xff0c;对于2的情况特判即可 #include<bits/stdc.h> using namespace std; int num, ans, flag; int m[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool is_ren(int n) {if((n %…

《C++ Primer》第5章 语句

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 5.1 简单语句&#xff08;P154&#xff09; 在一个表达式的末尾加上 ; 就构成了表达式语句&#xff0c;其作用是执行表达式并丢弃结果。 空语句 由单独的 ; 构成的语句为空语句。空语句常用于语法上需要一…

【网络】路由器和交换机的区别

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1…

6.MySql连接SqlYog

MySql连接SqlYog SqlYog和navicat均是数据可视化工具&#xff0c;熟悉其一即可 SqlYog下载安装 连接&#xff0c;密码和端口号一定要正确&#xff01;&#xff01;&#xff01; 2.保存到数据库 创建数据库&表 创建数据库 创建成功 创建表 点击保存 查看表数据的…

jira 浏览器插件在问题列表页快速编辑问题标题

jira-issueTable-quicker 这是一个可以帮助我们在问题表格页快速编辑问题的浏览器插件 github 地址 功能介绍 jira 不可否认是一个可以帮助有效提高工作效率的工具&#xff0c;但是我们在使用 jira 时使用问题表格可以让我们看到跟多的内容而不用关注细节&#xff0c;但是目…

vulnhub靶场 Kioptrix-level-1

简介&#xff1a; vulnhub是一个提供靶场环境的平台。而Kioptrix-level-1就是一个对新手比较友好的靶场。初学渗透的同学可以做做试试看&#xff0c;项目地址如下。 项目地址&#xff1a;Kioptrix: Level 1 (#1) ~ VulnHub 信息收集 查看本机IP&#xff0c;靶机跟kali都是使用…

常用的分布式ID解决方案原理解析

目录 前言 一&#xff1a;分布式ID的使用场景 二&#xff1a;分布式ID设计的技术指标 三&#xff1a;常见的分布式ID生成策略 3.1 UUID 3.2 数据库生成 3.3 数据库的多主模式 3.4 号段模式 3.5 雪花算法 前言 分布式ID的生成是分布式系统中非常核心的基础性模块&#…

4.方法操作实例变量 对象的行为

4.1 操作对象状态的方法 同一类型的每个对象能够有不同的方法行为&#xff0c;任一类的每个实例都带有相同的方法&#xff0c;但是方法可以根据实例变量的值来表现不同的行为。 play()会播放title值表示的歌曲&#xff0c;调用某个实例的play()可能会播放“Politik”而另一个会…

【重拾C语言】七、指针(一)指针与变量、指针操作、指向指针的指针

目录 前言 七、指针 7.1 指针与变量 7.1.1 指针类型和指针变量 7.1.2 指针所指变量 7.1.3 空指针、无效指针 7.2 指针操作 7.2.1 指针的算术运算 7.2.2 指针的比较 7.2.3 指针的递增和递减 7.3 指向指针的指针 前言 指针是C语言中一个重要的概念正确灵活运用指针 可…

Android原生实现控件圆角方案(API28及以上)

Android控件的圆角效果的实现方式有很多种&#xff0c;这里介绍一下另一种Android原生的圆角实现方案&#xff08;API28及以上&#xff09;。 我们利用ShapeAppearanceModel、MaterialShapeDrawable来实现一个圆角/切角的Button。 实现效果如下图 我们在为控件添加阴影的基础上…

波奇学C++:用红黑树模拟实现map和set

用同一个树的类模板封装map(key/value)和set(key) 红黑树的Node template<class T> struct RBTreeNode {RBTreeNode<T>* _left;RBTreeNode<T>* _right;RBTreeNode<T>* _parent;T _data;Colour _col;RBTreeNode(const T& data):_left(nullptr),_r…

kafka日志文件详解及生产常见问题总结

一、kafka的log日志梳理 日志文件是kafka根目录下的config/server.properties文件&#xff0c;配置log.dirs/usr/local/kafka/kafka-logs&#xff0c;kafka一部分数据包含当前Broker节点的消息数据(在Kafka中称为Log日志)&#xff0c;称为无状态数据&#xff0c;另外一部分存在…

选择适合建筑公司的企业网盘平台

随着城市化进程的加速&#xff0c;越来越多的人开始关注乡村生活品质。Z公司以其标准化产品和优质资源整合&#xff0c;为回乡建房人群提供了一种全新的、高品质的整体解决方案。 Z公司深入调研了10W的回乡建房人群需求&#xff0c;组建了设计、工艺、供应链方面的专家团队&…