最近在跟一位粉丝聊天,聊起来了做离线数仓时该用那些技术栈。于是根据我的经验和参考一些资料于就有本篇文章。在这里我会分享三个案例,仅供参考。
首先我们要明白一点小型公司人员并不多其次服务器的配置有不是很高,这时如果要做数仓使用到的大数据组件就不可能了,那我们就使用传统数据库来进行讲解。
首先公司在选择一个技术时需要考虑成本的,比如人员的安排,公司的员工对大数据的组件都不是很了解,如果选择大数据的组件学习成本较高,可以还会找一批大数据的员工进来开发,提高了项目的成本,由于数据量也不是很高1年也就几百万的数据量,目前市场上的数据库也是支持存储的,MySQL
、oracle
,SQL server
该选择那个一个那?
MySQL、oracle、SQL server 对比
MySQL优缺点优
缺
oraclet优缺点
优
缺
SQL Server优缺点
优
缺
小结
根据开会和各位领导的决定使用oracle来做数仓,分别在oracle中构构建四层分别为 ods
、dwd
、dws
、ads
这里我就不介绍数仓分层概念了最后的整体架构如下:数据库:Oracle 数据同步 :kettle 数据展示:大屏展示,Superset
首先中型公司做离线数仓并不单纯的做数仓,你将你数据存放在数仓中通报表的形式展示在大屏中,体现不出数仓的价值,可以通过这个些数据做一个用户画像
。我在这里举一个不恰到的例子:比如数仓的中的数据没有被利用起来,我购买了一个商品在后台报表中加上我刚刚下单的这一条数据(死数据),只是报表发生了改变但是对于公司而是价值不大,这时我们是不是可用基于数仓做一个用户画像,分析出这个用户喜欢够那类商品,价格的区间是多少,这样就可以做一个精准推荐。废话就不多少了直接开始。
技术选型需要根据公司的需求以及公司的数据量等综合的因素进行选择,可以使用Hive
、HBase
等技术来做。那我们这里就使用Hive
详细架构请看下:
数据采集:Kettle、sqoop、flume 数据存储:HDFS、Hbase、Redis、Kafka 任务调度:Yarn 计算引擎:Spark 离线处理:Hive 数据应用层:kylin 、大屏展示、Superset
我拍在这里就有好多小伙伴不知道为什么这么选型,我就在这一一给讲解下:
数据采集:
kettle 一般处理一些数据量比较小的数据,因为学习成本低,适合那些刚刚接触ETL的员工,并且还有丰富的组件,例如exec、Json、文本等信息录入到数据库中。
sqoop主要将关系型数据同步到hive中,因为它的底层是通过MapReduce的方式当多量数据通过分布式方式效率也不会很慢。
Flume 主要将前端产生的日志存到kafka中用来做一些点击流操作。例如:分析用户在这个页面停留了多长时间。求出页面的TopN等信息。
数据存储
HDFS 主要存储一些要求时效不高的数据,但是这些数据又不能被丢失场景,一般会结合Hive一起使用。
Hbase 一般会将hive中的ADS层的一部分数据存储到Hbase中提供数据支撑。这一部分数据一般要求时效性比较高。
Redis 一般用于前端与数据库之间的桥梁,前端来的请求先去Redis查,这样就避免了数据库高并出现宕机的现象。
kafka 主要存储非结构化数据,一般设置保存7天,场景不同。这里用于做点击流。
任务调度
yarn 想必大家对它都不陌生主要用户做资源调度了。
计算引擎
Spark 在本次项目中主要做数据分析,通过SparkSql 更快的提高分析效率,大大的节约了时间。
离线处理
Hive
这里起到了数据仓库的作用 ,Hive在这里进行了分层分别为ods
、dwd
、dws
、ads
每个层都有他自己的作用域。
以下内容来源于:https://www.sohu.com/a/403837625_411876
携程机票部门的数据仓库建设主要基于公司公共部门的大数据基础环境及数据调度平台,辅以部分自运维的开源存储引擎和基于开源组件二次开发的数据同步工具和运维工具。
生产环境的数据可以大致分成三类:
数据仓库在实施数据同步时,会根据需求在实时、近实时以及T+1天等不同的频率执行数据同步,并且在大数据环境会用不同的载体承接不同频率同步过来的数据。在携程机票,实时同步的目标载体是ElasticSearch、CrateDB或者HBase,近实时(一般T+1小时)或者T+1天的目标载体是Hive。
从生产的数据载体来讲,主要包括DB和消息队列,他们的数据同步方案主要是:
一套完整的数据仓库实施方案应该包括但不局限于上面介绍的数据同步方案、数据存储方案、数据规范、元数据建设、数据质量体系、运维工具等,每个实施团队应该根据面临的实际情况选择针对每个点的具体技术方案。我在这里为大家提供大数据的资料
需要的朋友可以去下面GitHub去下载,信自己,努力和汗水总会能得到回报的。我是大数据老哥,我们下期见~~~
资源获取 获取Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板等资源请去 GitHub自行下载 https://github.com/lhh2002/Framework-Of-BigData Gitee 自行下载 https://gitee.com/li_hey_hey/dashboard/projects
-End-