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

在轻松气氛中浅谈——ApacheKylin

Csdn我自己的账号下同步更新此篇:https:blog.csdn.netw635614017articledetails82801573一.Kylin是什么?我这个人不喜欢贴一大

Csdn我自己的账号下同步更新此篇:https://blog.csdn.net/w635614017/article/details/82801573

一.Kylin是什么?

我这个人不喜欢贴一大堆难懂的话,所以我不扯淡,直接和大家分享我的理解:Kylin是做大数据查询的!补充一下就是,可以帮助我们对大数据进行多维度的分析。提高查询效率。

二.Kylin架构

《在轻松气氛中浅谈——Apache Kylin》 Kylin架构图

简单的讲解一下图片,以Hive或者Kafka作为数据源,里面保存着真实表,而Kylin做的就是将数据进行抽象,通过引擎实现Cube的构建。将Hbase作为数据的仓库,存放Cube。因为Hbase的直接读取比较复杂,所以Kylin提供了近似SQL和HQL的形式,满足了数据读取的基本需求。对外提供了RestApi和JDBC/ODBC方便操作。

三.讲点不容易理解,但是比较重要的

首先需要问几个问题:

  • 1.什么是数据仓库?
  • 2.什么是维度?什么是度量?
  • 3.事实表是啥?维度表又是啥?维度表有必要存在吗?
  • 4.Hive是做啥的?那我们为啥不拿起Hive就开始查?

如果几个问题你知道答案,就可以跳过这段了~
好的,留下的一定是想继续看的,现在做些解答

1.数据仓库

《在轻松气氛中浅谈——Apache Kylin》 数据仓库

对,根据图片我们可以把数据仓库理解成数据们居住的小房子。
利用数据仓库方式存的资料,所具备的特性是一旦存入,变不宜随着时间发生变动的特性。而且资料必定包含着时间的属性的。如果你无法理解,可以在脑海中想象,数据是否可以进入小房子居住,取决于他是否满足以下的两个条件——首先,必须有身份证!也就是必须知道自己的出生日期。其次,本身不会经常的被修改,可以让新的住进来,但老的别天天变脸啊。
为啥要有这俩特性呢?答案是:是大数据啊!大数据的价值在于被分析,这样的结构有利于制定分析方式,发掘出准确有价值的咨询。

2.什么是维度?什么是度量?

《在轻松气氛中浅谈——Apache Kylin》 维度

《在轻松气氛中浅谈——Apache Kylin》 度量

维度和度量是数据分析中的两个基本概念。

  • 维度代表着我们审视数据的角度
    通常是数据记录的一个属性,时间是一种维度,地点是一种维度,状态是一种维度。
  • 度量代表着基于数据所计算出来的考量值
    通常是一个数值,比如这个月份的销售额,购买某产品的客户量。

所谓的数据分析,就是要结合若干维度去审查度量值,找到其中变化的规律。

3.事实表?维度表?

  • 事实表是储存有事实记录的表,例如日志就是一种事实表,它一般在不断的动态增长,所以它的体积通常很大。
  • 维度表是对应事实表的一种体现,保存了维度值,可以关联上事实表,相当于把事实表精细处理,然后生成的一张表。
    如果事实表过于庞大笨重,可以考虑使用维度表。
    举个栗子:我可以把一张事实表,拆开,生成两种表,一张日期表,日期表里面存储着日期对应的周、月、季度、年等时间属性。一张地点表,地点表里包含着国家、省、城市等属性。优点就是将事实表进行瘦身,便于维度的管理和维护,不至于破坏事实表。减少了工作量,大多数是重复的查询工作。

4.Hive是啥?为啥不直接用Hive查?

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

上面的话是不是很枯燥?相信大家基本看完都是这个表情:
《在轻松气氛中浅谈——Apache Kylin》 并不能懂

可惜,这就是网络上专业大牛的解释,在百度百科上(摊手)~说了一大段,还是没解释明白:这就要你拿起来Hive就开始用的理由???那我凭啥不用MySQL呢?!
可能我比较直白吧,要问我啥是Hive,我这样说:Hive是存大数据的,是一种数据仓库!!!
。。。。。。
。。。。。。
。。。。。。

《在轻松气氛中浅谈——Apache Kylin》 额。。。

诶诶诶!先别动手!!!我话还没说完,大家想一想,为啥不提倡用MySQL存大数据?

答案就在前文提到过的——大数据两个特性,一是
具备时间属性,二是
数据不经常变动。第二点就是答案!数据库是面向事务去设计的,而数据仓库是面向主题的。

我们在MySQL存储的数据是围绕着事务展开的,这就代表着,它可能会经常的变动,而且不应该过于冗余,还应该尽量避免数据的冗余!

但是对于数据仓库Hive来说,我们就是要数据尽量的去冗余!!数据大了才叫大数据,才可以去分析!才有价值啊!数据本来就没几条,还天天变化,没事还给我删点,那我分析个啥啊!Hive支持的HQL基本和SQL差不多,功能上稍微的少了一丢丢,但是足够了。

可能有同学就开始了:
“那我全存Hive里不就行了??反正是数据越多越好!还用啥MySQL啊?咱全换Hive吧!”
“emmmmmmmmm”

《在轻松气氛中浅谈——Apache Kylin》 住口!!!

Hive实在是太慢了,要是全换成了Hive,还查业务吗???
简单给大家说说为啥Hive查的慢。

  • 首先,是数据格式的问题,Hive没有专门去定义数据格式,格式是用户指定的,MySQL人家存储引擎里自己- 定义完数据格式了,人家的数据都是有组织有纪律的!
  • 其次,索引的问题,Hive是一点都不给你处理数据的机会啊,还索引呢,扫描都不给你做!我们查值的时候,Hive是暴力的全走查一遍,本来数据量就打,即使在MapReduce帮助下,Hive支持并行访问了。但是这个MapReduce就有意思了,它不是Hive本身的引擎,它去执行Hive查询的动作还有延迟呢! 在速度上拿什么和关系型数据库比?!

总结一下:Hive是分析大数据用的。mysql是捕获数据在业务场景使用的,各有各的用武之地。

4.Kylin核心——Cube到底是怎么让查询变快的

我们从上文得知,Hive的查询很慢,那么我们怎么去多维度分析Hive上的数据呢?难道只有等待吗?
当然不是!

相信大家会有一个思路——我们每天定时将hive的数据进行聚合然后更新到MySQL上,这不就完事了吗?

对!我们之前就是这么做的,这么做看似解决了问题,实际上依然有很多缺陷:

  • 首先,数据从Hive转回MySQL,中间要通过代码设置很多环节,尤其还要使用到Sqoop。不灵活。
  • 其次,因为最后是存在MySQL上。前面说过了,MySQL上是避免存放过于冗余的数据的,这就是又把好不容易解决的数据冗余问题抛回来了嘛!
  • 最后,也是很严重的问题,由于不灵活,导致我们在得到的MySQL上可分析的方向受到了限制。之前只支持单维度的!或者说双维度,也就是时间加某一种维度,当面临着多维度分析的挑战,继续依靠mysql将显得力不从心。

此时,我们急需一种,可以快速查询数据仓库的大数据工具!!!!!!!

《在轻松气氛中浅谈——Apache Kylin》 怎么搞?!

问得好!这个时候Kylin就出现了~
Kylin有两个法宝:预加载Cube
预加载,稍微好理解点吧?就是我趁你们睡觉的时候,把东西算好了,等你问我的时候,我不去现场计算了,我去直接找就好了嘛!
Cube,给你们一张图,图片来源于网络:

《在轻松气氛中浅谈——Apache Kylin》 cube

这张图是Cube的一种便于观察的展现方式,并不是说,它就是正方体的!!!因为正方体是三维图形,而人类更能接受三维及三维以下的图形。。。咳咳,扯远了,这我不讲了,想了解去研究一下数学去!!!

三个维度,依次是时间、产品、地点。维度线上面,就是维度值。度量是上面的小块块。

可以清楚的看到,图形内确定了三个维度,一定可以获取到一个小方块。这个小方块就是最后我们想要的值。这就是Cube的核心。即:我不去大量计算了,你的维度值组合已经牢牢的被我Cube给提前背下来了,Kylin可以拿出这个块,骄傲的说:“我有法宝!”

这里真的理解了吧?那么为了不让大家觉得Cube就是个正方体,给大家看一下Cube其他情况下的样子,上面是三维,给大家看一个,比如说。。。四维:

《在轻松气氛中浅谈——Apache Kylin》 四维Cube

形象仅仅是一种展示形式,只是皮囊。我们看一下组合方式

比如说有四个维度 time 、item 、location 、supplier

那么有多少组合呢?答案是:2的四次幂=16种

零维:[] 1种

一维:[ time ] 、[ item ] 、[ location ] 、[ supplier ] 4种

二维:[time、item] 、[time、location]、[time、supplier]、[item、location]、[item、supplier]、[location、supplier] 6种

三维:[time、item、location]、[time、item、supplier]、[item、location、supplier]、[time、location、supplier] 4种

四维:[time、item、location、supplier] 1种

但是Kylin提供了更加方便的构建策略,在这个基础上进一步的减少组合!一共有三个策略!这里先不细说,有兴趣的同学可以来私信我讨论,当然后面心情好就更新。

《在轻松气氛中浅谈——Apache Kylin》 滑稽

这时候可能又有同学站出来了:
“那我全存Hive里,用Kylin不就行了?反正数据多,还查的快!还用啥MySQL啊?咱全换Hive+Kylin吧!” “emmmmmmmmm”

《在轻松气氛中浅谈——Apache Kylin》 住口!!!

Kylin快是快!!!但那可是要预加载的啊!!!提前准备好的数据!!!
都说了MySQL是用来查实时的!

《在轻松气氛中浅谈——Apache Kylin》 啪.png

实时的!!

《在轻松气氛中浅谈——Apache Kylin》 啪.png

实时的!!!!!

《在轻松气氛中浅谈——Apache Kylin》 啪.png

让客户今天去查昨天算出来的数据???

5.总结

Kylin解决了大数据下,数据分析和查询的效率问题,但是技术和工具从来不是抓着同一个东西就往死里用。Kylin有他的优势,也有它的局限。通过配合,最大化的发挥各种工具的价值才是硬道理~多嘴提一句,kylin主要是把预计算的东西存在Hbase里了。

6.最后

总之就当我是把自己最近学大数据,和对大数据的理解写上来,基本是一堆胡言乱语,如果对大家有启发那是我的荣幸,如果有哪些地方不对希望也可以指正~很多东西觉得不好用语言描述,没有全写下来,心情好就可以继续更新这类文章。


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • Python 数据分析领域不仅拥有高质量的开发环境,还提供了众多功能强大的第三方库。本文将介绍六个关键步骤,帮助读者掌握 Python 数据分析的核心技能,并深入探讨六款虽不广为人知但却极具潜力的数据处理库,如 Pandas 的替代品和新兴的可视化工具,助力数据科学家和分析师提升工作效率。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • PHP开发人员薪资水平分析:工程师平均工资概况
    PHP开发人员薪资水平分析:工程师平均工资概况 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • 如何提升Python处理约1GB数据集时的运行效率?
    如何提升Python处理约1GB数据集时的运行效率?本文探讨了在后端开发中使用Python处理大规模数据集的优化方法。通过分析常见的性能瓶颈,介绍了多种提高数据处理速度的技术,包括使用高效的数据结构、并行计算、内存管理和代码优化策略。此外,文章还提供了在Ubuntu环境下配置和测试这些优化方案的具体步骤,适用于从事推荐系统等领域的开发者。 ... [详细]
  • hive和mysql的区别是什么[mysql教程]
    hive和mysql的区别有:1、查询语言不同,hive是hql语言,MySQL是sql语句;2、数据存储位置不同,hive把数据存储在hdfs上,MySQL把数据存储在自己的系统 ... [详细]
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社区 版权所有