Categories
数据库

Kylin数据模型

Apache Kylin是一款国人主导的优秀的OLAP引擎,工作中对Kylin有大规模的使用,尝试总结Kylin核心技术,本文是第一篇,偏向数据模型方面。

数据模型概览

本质上Kylin将二维表(Hive表)Cube化,然后将Cube存储到HBase表中。

Cube in Kylin

首先需要明确一个概念,在多维分析的领域中表的列被分成维度与度量两类,其中维度可以被作为查询条件和Group by的对象,比如像城市、类别等等列;度量一般表示特定维度值下的度量值,比如像价格、数量等列。

Kylin中的Cube其实就是传统数据库中Cube的概念。这里举个例子做个简单的介绍。假设一个二维表的维度为:。那么它的Cube可以用图2表示。

在Kylin中上图每个节点都被称为一个CuboId,CuboId按照层次划分,每个层次表示CuboId由几个维度组成,整个Cube包含2的N次方个CuboId。

CuboId表示固定列的数据数据集合,比如组成的CuboId的数据集合等价于以下SQL的数据集合:

select A, B, sum(M), sum(N) from table group by A, B

可以看出在Kylin中的数据是按照维度进行了预聚合后的数据,这也是Kylin在海量数据集下依然能够亚秒时间内完成查询的关键所在。

Cube in HBase

一般来说Cube会按照时间划分为多个segment,每个segment对应一个HBase表,多个segment的数据格式是同构的,图3展示了Cube与HBase表的对应关系。

接下来看下每个segment内部的数据格式,因为维度列需要作为查找条件,所以适合用来组成rowkey;度量列适合作为HBase值来存储。其中度量列可以共用一个列簇,也可以划分为多个列簇,图4展示了数据序列化格式。

我们将注意力放到rowkey的组成上,这也是数据存储部分的核心点。图中可以看到rowkey包含三部分:ShardNum、CuboId、Encoded_Dims。因为rowkey本质上是一个二进制的值,所以为了区分每个部分的值,ShardNum、CuboId和每个编码后的维度,它们需要是定长的。接下来分析这三个部分。

首先CuboId,我们可以站在kylin设计者的角度进行分析,当用户发起查询的时候,会提取SQL中where和group by后的列,这些列是此次查询涉及到的所有维度,进而可以确定CuboId,所以rowkey中应该包含CuboId信息。

其次Shard_Num部分,Shard_Num的设计目的是将同一个CuboId的数据分散到多个Region中,这样查询的时候能利用更多HBase节点的计算能力。Kylin中的查询具有一个特点每个不包含子查询的查询将只命中一个CuboId。假设rowkey中不包含ShardNum部分,因为HBase数据按照rowkey大小排序,并且连续存放的特点,那么一个CuboId中的数据将集中在少数甚至一个Region中,所以查询的时候将只有少数节点进行工作。反之通过Shard_Num将同一个CuboId中的数据分散到多个Region中,这样查询时将利用更多HBase节点的计算能力。

最后Encoded_Dims部分,这部分信息是维度列值信息,这里有两点需要说明,一个是因为rowkey的排序特性,所以多个维度的顺序需要固定,kylin在定义Cube的时候确定了列的顺序;二是所有的维度进行了编码,下文会详细介绍。

CuboId

这里详细介绍下Kylin中的CuboId,从上文中我们得知CuboId是组成rowkey的第二个部分,为了达到数据在HBase中有序的目的,CuboId必须是定长的,其实在Kylin中CuboId是一个长度为8个字节的长整型数值。

为了介绍CuboId与维度之间的计算方式,重新假设一个Cube,其维度为DAYNO CITY,并且维度顺序为DAYNO CITY。

那么该Cube只需要Long的Bit形式的最后两位来表示对应的CuboId,其中Bit数组最后一位表示CITY,倒数第二为表示DAYNO,比如:仅由CITY组成的cuboId为1;由DAYNO和CITYY组成的cuboId为3。

Shard_Num

Shard_Num是Kylin在分布式系统中组织数据的关键设计点,通过分析它可以洞悉kylin数据分布的算法。在数据构建阶段Kylin估算出Segment中每个CuboId的数据量,所有CuboId数据量的总和就是该segment的数据量,进而计算出该segment需要划分成多少分片,也就是HBase中Region的数量。

接下来的重点是如何切分CuboId中的数据,我们可以首先站在Kylin设计者的角度思考,因为一条查询只会涉及到一个CuboId,所以需要对它进行切分以利用更多节点的计算能力,但是对于只有几条几百条数据的CuboId是没必要切分的。

具体的CuboId切分算法是:小CuboId不分片,其应该放到哪个分片(Region)上,计算公式为:

hash(CuboId) % TotalShard

大CuboId分片它的分布计算公式为:

初始分片:stardShardNum = hash(CuboId) % TotalShard
其余分片:cuboid_Partition_N = (N + stardShardNum) % TotalShard

我们从查询的角度看下以上数据分布算法的可行性。对于小的CuboId因为只有在一个分片上是可以通过元数据直接定位到数据位置的。对于大的CuboId,它的数据散列在不同的分片,但是按照算法同样可以保证同一个cuboId数据的有序性,具体计算方式可参考图6:

Encoded_Dims

组成HBase rowkey的维度组合,并不直接存储每个维度的值,而是编码成整数,这里有个关键的隐含信息:整数是定长的。这样做的目的是为了保证数据的可查找性。为了方便理解,这里举个例子:假设有A,B两个维度组成的CuboId,如果rowkey存储的是原始值则以下两条数据将有歧义(ab, c)和(a, bc)。

数据编码就需要一个字典,Kylin中采用了Trie树组成的森林构成的字典,详细可以参考官方文档

值得一提的是由于日期的特殊性,它的字典编码采用特殊的算法:当前日期距离 0000-1-1的差值,比如:

0000-1-1 = 0
2018-5-1 = 1431172
9999-12-31 = 3652426

这种算法的好处:一是减小了存储空间,二是统一了全局编码,免去了合并字典时需要重新编码的代价。

小结

本文总结了Kylin数据模型,其实也就是数据如何从Hive表转换成HBase表的过程,图7展示了一个Hive表和HBase表的数据映射关系:

版权声明:文章为作者辛勤劳动的成果,转载请注明作者与出处。

3,518 replies on “Kylin数据模型”

Циркуляционный насос применяется ради циркуляции горячей воды словно в закрытых, беспричинно и в открытых системах, имеет 3 передачи.
Перекачиваемая жидкость должна присутствовать чистой, без твердых примесей тож масел, невязкой, химически нейтральной и близкой по свойствам к воде (апогей 30% гликоля).
Циркуляционный насос горячей воды сокращает время циркуляции горячей воды. Таким образом, мы можем пользоваться душем, не дожидаясь чрезвычайно долгого ожидания горячей воды. Циркуляционный насос может использоваться как в закрытых системах водоснабжения, так и в открытых системах.
Основное первенство использования такого насоса заключается в часть, который он помогает нам достичь много более высокой энергоэффективности. Следовать счет сокращения времени ожидания также снижается потребление энергии, что приводит к снижению сопутствующих затрат. Насос полезен сиречь в случае использования воды, полученной с через гидрофоров, так и в случае воды из национальной системы водоснабжения.
Насос торопливо заменяет холодную воду в трубах горячей воды, следовательно мы значительно быстрее воспользуемся горячей водой для человек, купания либо мытья посуды. Сомневаться хороших секунд или даже минут, покуда не придет горячая вода, довольно неприятно, преимущественно если мы очень спешим. Используя циркуляционный насос, мы избавимся от этого недостатка, который возникает, особенно, разве мы используем установки ради производства горячей воды чтобы бытовых нужд иначе тепловые электростанции с функцией нагрева воды чтобы бытовых нужд. Посмотри какой насос лучше для отопления частного дома циркуляционный выбрать смотри на сайте nasoscirkulyacionnyi.ru какой ибп выбрать для циркуляционного насоса на 60 ватт.
Насос способствует повышению КПД котла. Циркуляционный насос сокращает дата нагрева воды, который создает повышенный комфорт и помогает нам экономить.
Воспользуемся горячей водой поминутно, не дожидаясь времени, экономя казна и ресурсы. Совершенно это с через циркуляционного насоса для горячей воды.
Насос надо устанавливать следующим образом:
Насос установлен с коленчатым валом в горизонтальном положении.
Накануне установкой насоса надо установить фильтр для шлама, чтобы защитить структура через загрязнения.
Требуемый затрата воды обязан отвечать стрелке, указанной на корпусе насоса.
Он всегда должен существовать установлен в горизонтальном положении. Установка насоса в другое афоризм вызовет преждевременный износ подшипника и блока насоса.
Помещение, в котором будет установлен насос, должно обретаться крытым и не содержать влаги.
Насос должен оставаться установлен в легкодоступном месте для обслуживания и вентиляции.
Обслуживание и эксплуатация:
Прибор следует проверять только во период ввода в эксплуатацию иначе впоследствии длительного простоя (примерно, накануне началом отопительного сезона).
Впоследствии длительной остановки либо перед первой установкой убедитесь, который возвышенность двигателя не заблокирован.
Делать это нуждаться следующим образом:
Откройте вентиляционный винт, в получившемся отверстии довольно виден конец рулона с поперечным сечением. С помощью правой отвертки поверните вал в направлении, указанном на корпусе насоса. После выполнения этих операций затяните спускной винт и запустите насос на максимальной скорости (третью). Действие полной установки и обслуживания насоса описана в руководстве, прилагаемом к устройству.
Изделие производится одним из крупнейших производителей водяных насосов для рынке с более чем 30-летним опытом работы в этой области.

I’m impressed, I have to admit. Seldom do I encounter a blog that’s both equally eduicative and entertaining, and
without a doubt, you have hit the nail on the head. The issue is an issue that too few men and women are speaking intelligently about.
I’m very happy that I ound this durring my hunt
foor something relating to this.

My web blog … ramazan sakalli

Withh havin so much content and articles do
youu evger run into any issues of plagorism or copyright violation? My website has a lot
of exclusive content I’ve either created myself or outsourced but iit seems a lot of it is poipping iit up all over thee web without
my agreement. Do yoou know any methods to help reduce contrent from
being stolen? I’d really appreciate it.

Look at my webssite ramazan sakalli

Насосы: тепловые насосы – циркуляционные насосы чтобы вашей системы отопления.
Это грудь любой системы отопления: циркуляционный насос, нередко также называемый тепловым насосом. Независимо через того, работает ли порядок отопления для газе, масле, тепловом насосе тож солнечной системе – без циркуляционного насоса ничего не работает. Он отвечает ради циркуляцию отопительной воды в системе отопления и ради то, дабы тепло доходило накануне потребителей тепла, таких как радиаторы. Посмотри цены на циркуляционный насос для отопления как выбрать смотри на сайте nasoscirkulyacionnyi.ru какой источник бесперебойного питания выбрать для циркуляционного насоса. Поскольку насосы должны трудолюбивый до 5000 часов в год, они представляют собой одного из крупнейших потребителей энергии в домашнем хозяйстве, следовательно гордо, чтобы они соответствовали последнему слову техники, поскольку современные высокоэффективные насосы потребляют прибл. Для 80% меньше электроэнергии. Впрочем большинство старых насосов являются устаревшими и крупногабаритными, следовательно стоит взглянуть на котельную!
Циркуляционные насосы ради отопления используются чтобы циркуляции отопительной воды в замкнутой системе отопления. Они надежно гарантируют, что теплая вода через теплогенератора направляется в радиаторы либо в систему теплого пола и возвращается вследствие обратку. Циркуляционный насос вынужден как преодолеть гидравлическое сопротивление арматуры и трубопроводов из-за замкнутой системы.
Экономьте электроэнергию с через современных циркуляционных насосов.
Современные циркуляционные насосы для систем отопления отличаются высокой эффективностью и низким энергопотреблением – всего скольконибудь ватт во пора работы. Сообразно сравнению с устаревшими насосами прошлых десятилетий существует огромный потенциал экономии энергии. Именно следовательно стоит заменить заскорузлый насос отопления для нынешний высокоэффективный насос, который нередко быстро окупается за счет небольшого энергопотребления. Циркуляционные насосы чтобы систем отопления доступны в различных исполнениях, которые могут различаться по максимальному напору и сообразно резьбе подключения.
Циркуляционный насос также почасту называют тепловым насосом сиречь насосом чтобы теплого пола. По сути, это одни и те же водяные насосы, только названы по-разному из-за их применения. В зависимости через области применения и, в частности, присоединительных размеров, у нас вы легко найдете подходящий насос.
Циркуляционный насос – это насос, обеспечивающий снабжение систем отопления (теплой) водой. Циркуляционный насос можно найти в каждом доме или здании, где ужинать радиаторы и / alias полы с подогревом. Коль лопать и горячий пол, и радиаторы, то циркуляционных насосов несколько. В больших домах / зданиях в большинстве случаев также устанавливаются изрядно циркуляционных насосов для обеспечения полной циркуляции. Фактически вы можете говорить, что циркуляционный насос – это сердце вашей системы центрального отопления alias системы теплых полов. Когда центральное отопление alias полы с подогревом не работают разве работают плохо, это почасту связано с циркуляционным насосом, что нуждаться заменить. В зависимости через системы отопления вы можете свободно найти циркуляционный насос следовать передней панелью вашего центрального отопления. Едва во всех случаях размеры насоса, которым должен идти новоявленный циркуляционный насос из нашего ассортимента, указаны на вашем старом насосе. Когда это не так, вы можете свободно найти марку и серийный номер в таблице обмена . Наши инструкции, приведенные ниже, помогут вам заменить насос отопления.
Мы выбрали три насоса (центрального) отопления либо циркуляционные насосы чтобы нашего ассортимента. Обладая этими тремя размерами, мы можем предложить замену теплового насоса чтобы каждой установки, с помощью которой вы также напрямую сэкономите на расходах на электроэнергию. Подробнее об этом ниже! Исключая того, заменить циркуляционный насос, насос отопления или насос теплого пола довольно просто. Это экономит затраты на установку. Ознакомьтесь с инструкциями и / иначе видео ниже. Несомненно, вы также можете обещать установку теплового насоса у специалиста. Всетаки чтобы экономии средств рекомендуем поручать циркуляционный насос у нас сообразно конкурентоспособной цене. Тутто вы платите токмо изза установку у специалиста.

Насосы: тепловые насосы – циркуляционные насосы ради вашей системы отопления.
Это сердце всякий системы отопления: циркуляционный насос, зачастую также называемый тепловым насосом. Независимо через того, работает ли способ отопления на газе, масле, тепловом насосе или солнечной системе – без циркуляционного насоса шиш не работает. Он отвечает после циркуляцию отопительной воды в системе отопления и ради то, для тепло доходило накануне потребителей тепла, таких будто радиаторы. Посмотри циркуляционный насос какой мощности выбрать для отопления частного дома смотри на сайте nasoscirkulyacionnyi насосы на отопление циркуляционные как выбрать. Поскольку насосы должны мучиться прежде 5000 часов в год, они представляют собой одного из крупнейших потребителей энергии в домашнем хозяйстве, следовательно гордо, чтобы они соответствовали последнему слову техники, поскольку современные высокоэффективные насосы потребляют прибл. Для 80% меньше электроэнергии. Всетаки большинство старых насосов являются устаревшими и крупногабаритными, следовательно стоит взглянуть для котельную!
Циркуляционные насосы для отопления используются ради циркуляции отопительной воды в замкнутой системе отопления. Они надежно гарантируют, сколько теплая вода через теплогенератора направляется в радиаторы разве в систему теплого пола и возвращается через обратку. Циркуляционный насос вынужден исключительно преодолеть гидравлическое сопротивление арматуры и трубопроводов из-за замкнутой системы.
Экономьте электроэнергию с помощью современных циркуляционных насосов.
Современные циркуляционные насосы ради систем отопления отличаются высокой эффективностью и низким энергопотреблением – всего порядочно ватт во эпоха работы. Сообразно сравнению с устаревшими насосами прошлых десятилетий существует большой потенциал экономии энергии. Именно следовательно стоит заменить извечный насос отопления на нынешний высокоэффективный насос, кто нередко быстро окупается за счет небольшого энергопотребления. Циркуляционные насосы для систем отопления доступны в различных исполнениях, которые могут отличаться сообразно максимальному напору и сообразно резьбе подключения.
Циркуляционный насос также почасту называют тепловым насосом иначе насосом чтобы теплого пола. По сути, это одни и те же водяные насосы, только названы по-разному из-за их применения. В зависимости от области применения и, в частности, присоединительных размеров, у нас вы свободно найдете подходящий насос.
Циркуляционный насос – это насос, обеспечивающий снабжение систем отопления (теплой) водой. Циркуляционный насос дозволительно найти в каждом доме иначе здании, где лупить радиаторы и / alias полы с подогревом. Ежели лупить и горячий пол, и радиаторы, то циркуляционных насосов несколько. В больших домах / зданиях в большинстве случаев также устанавливаются порядочно циркуляционных насосов чтобы обеспечения полной циркуляции. Действительно вы можете сказать, сколько циркуляционный насос – это сердце вашей системы центрального отопления alias системы теплых полов. Коли центральное отопление alias полы с подогревом не работают разве работают плохо, это часто связано с циркуляционным насосом, какой надо заменить. В зависимости через системы отопления вы можете легко встречать циркуляционный насос ради передней панелью вашего центрального отопления. Приблизительно во всех случаях размеры насоса, которым должен соответствовать другой циркуляционный насос из нашего ассортимента, указаны на вашем старом насосе. Буде это не беспричинно, вы можете свободно встречать марку и серийный номер в таблице обмена . Наши инструкции, приведенные ниже, помогут вам заменить насос отопления.
Мы выбрали три насоса (центрального) отопления alias циркуляционные насосы ради нашего ассортимента. Обладая этими тремя размерами, мы можем предложить замену теплового насоса для каждой установки, с помощью которой вы также напрямую сэкономите для расходах для электроэнергию. Подробнее относительный этом ниже! Выключая того, заменить циркуляционный насос, насос отопления либо насос теплого пола довольно просто. Это экономит затраты для установку. Ознакомьтесь с инструкциями и / тож видео ниже. Конечно, вы также можете заказать установку теплового насоса у специалиста. Однако чтобы экономии средств рекомендуем приказывать циркуляционный насос у нас по конкурентоспособной цене. Тутто вы платите исключительно изза установку у специалиста.

My spouse and I absolutely love your blog and find a lot of your post’s to
be just what I’m looking for. Do you offer guest writers to write content for you?
I wouldn’t mind producing a post or elaborating on a lot of
the subjects you write in relation to here. Again, awesome website!

Tһey suggest how to make organizing it, how to advertiѕe and market it in your best аdvantage.
The neat thing cаn there be is not any inventory to stocк or any door to door selling and
will generated Hugh quantities of more income yeаr long
for yⲟur business or ⲟrganization or group or self ought to
be fact. Օther people accomplish that for my personaⅼ businesses,
and I’m very thankfᥙl that they keep our activities around the
right side of the lаw and out from the ignorant massеs
who attempt to do this and оftentimes, break the law withоut
even knowing they certainly it.

Alsο visit my web-site – gabloty

I am extremely impressed with your writing skills as well as with the layout on your weblog. Is this a paid theme or did you modify it yourself? Either way keep up the excellent quality writing, it is rare to see a nice blog like this one nowadays.|