Modified: kylin/site/feed.xml
URL: 
http://svn.apache.org/viewvc/kylin/site/feed.xml?rev=1849691&r1=1849690&r2=1849691&view=diff
==============================================================================
--- kylin/site/feed.xml (original)
+++ kylin/site/feed.xml Mon Dec 24 14:10:36 2018
@@ -19,68 +19,215 @@
     <description>Apache Kylin Home</description>
     <link>http://kylin.apache.org/</link>
     <atom:link href="http://kylin.apache.org/feed.xml"; rel="self" 
type="application/rss+xml"/>
-    <pubDate>Fri, 14 Dec 2018 05:59:43 -0800</pubDate>
-    <lastBuildDate>Fri, 14 Dec 2018 05:59:43 -0800</lastBuildDate>
+    <pubDate>Mon, 24 Dec 2018 05:59:47 -0800</pubDate>
+    <lastBuildDate>Mon, 24 Dec 2018 05:59:47 -0800</lastBuildDate>
     <generator>Jekyll v2.5.3</generator>
     
       <item>
-        <title>Apache Kylin v2.5.0 正式发布</title>
-        <description>&lt;p&gt;近日Apache Kylin 社区很高å…
´åœ°å®£å¸ƒï¼ŒApache Kylin 2.5.0 正式发布。&lt;/p&gt;
+        <title>Why did Meituan develop Kylin On Druid (part 1 of 2)?</title>
+        <description>&lt;h2 id=&quot;preface&quot;&gt;Preface&lt;/h2&gt;
 
-&lt;p&gt;Apache Kylin 
是一个开源的分布式分析引擎,旨在为极大数据集提供 SQL 
接口和多维分析(OLAP)的能力。&lt;/p&gt;
+&lt;p&gt;In the Big Data field, Apache Kylin and Apache Druid(incubating) are 
two commonly adopted OLAP engines, both of which enable fast querying on huge 
datasets. In the enterprises that heavily rely on big data analytics, they 
often run both for different use cases.&lt;/p&gt;
 
-&lt;p&gt;这是继2.4.0 后的一个新功能版本。该版本引å…
¥äº†å¾ˆå¤šæœ‰ä»·å€¼çš„æ”¹è¿›ï¼Œå®Œæ•´çš„æ”¹åŠ¨åˆ—è¡¨è¯·å‚è§&lt;a 
href=&quot;https://kylin.apache.org/docs/release_notes.html&quot;&gt;release 
notes&lt;/a&gt;;这里挑一些主要改进做说明:&lt;/p&gt;
+&lt;p&gt;During the Apache Kylin Meetup in August 2018, the Meituan team 
shared their Kylin on Druid (KoD) solution. Why did they develop this hybrid 
system? What’s the rationale behind it? This article will answer these 
questions and help you to understand the differences and the pros and cons of 
each OLAP engine.&lt;/p&gt;
 
-&lt;h3 id=&quot;all-in-spark--cubing-&quot;&gt;All-in-Spark 的 Cubing 
引擎&lt;/h3&gt;
-&lt;p&gt;Kylin 的 Spark 引擎将使用 Spark 运行 cube 
计算中的所有分布式作业,包括获取各个维度的不同值,将 
cuboid 文件转换为 HBase HFile,合并 segment,合并词å…
¸ç­‰ã€‚默认的 Spark é…
ç½®ä¹Ÿç»è¿‡ä¼˜åŒ–,使得用户可以获得开箱即用的体验。相å…
³å¼€å‘任务是 KYLIN-3427, KYLIN-3441, KYLIN-3442.&lt;/p&gt;
+&lt;h2 id=&quot;introduction-to-apache-kylin&quot;&gt;01 Introduction to 
Apache Kylin&lt;/h2&gt;
+&lt;p&gt;Apache Kylin is an open source distributed big data analytics engine. 
It constructs data models on top of huge datasets, builds pre-calculated Cubes 
to support multi-dimensional analysis, and provides a SQL query interface and 
multi-dimensional analysis on top of Hadoop, with general ODBC, JDBC, and 
RESTful API interfaces. Apache Kylin’s unique pre-calculation ability enables 
it to handle extremely large datasets with sub-second query response 
times.&lt;br /&gt;
+&lt;img src=&quot;/images/blog/Kylin-On-Durid/1 kylin_architecture.png&quot; 
alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic  1 Kylin Architecture&lt;/p&gt;
 
-&lt;p&gt;Spark 任务管理也有所改进:一旦 Spark 
任务开始运行,您就可以在Web控制台上获得作业链接;如果您丢弃该作业,Kylin
 将立刻终止 Spark 作业以及时释放资源;如果重新启动 
Kylin,它可以从上一个作业恢复,而不是重新提交新作业.&lt;/p&gt;
+&lt;h2 id=&quot;apache-kylins-advantage&quot;&gt;02 Apache Kylin’s 
Advantage&lt;/h2&gt;
+&lt;ol&gt;
+  &lt;li&gt;The mature, Hadoop-based computing engines (MapReduce and Spark) 
that provide strong capability of pre-calculation on super large datasets, 
which can be deployed out-of-the-box on any mainstream Hadoop 
platform.&lt;/li&gt;
+  &lt;li&gt;Support of ANSI SQL that allows users to do data analysis with SQL 
directly.&lt;/li&gt;
+  &lt;li&gt;Sub-second, low-latency query response times.&lt;/li&gt;
+  &lt;li&gt;Common OLAP Star/Snowflake Schema data modeling.&lt;/li&gt;
+  &lt;li&gt;A rich OLAP function set including Sum, Count Distinct, Top N, 
Percentile, etc.&lt;/li&gt;
+  &lt;li&gt;Intelligent trimming of Cuboids that reduces consumption of 
storage and computing power.&lt;/li&gt;
+  &lt;li&gt;Direct integration with mainstream BI tools and rich 
interfaces.&lt;/li&gt;
+  &lt;li&gt;Support of both batch loading of super large historical datasets 
and micro-batches of data streams.&lt;/li&gt;
+&lt;/ol&gt;
 
-&lt;h3 id=&quot;mysql--kylin-&quot;&gt;MySQL 做 Kylin å…
ƒæ•°æ®çš„存储&lt;/h3&gt;
-&lt;p&gt;在过去,HBase 是 Kylin 元数据存储的唯一选择。 
在某些情况下 HBase不适用,例如使用多个 HBase 集群来为 Kylin 
提供跨区域的高可用,这里复制的 HBase 
集群是只读的,所以不能做元数据存储。现在我们引入了 
MySQL Metastore 
以满足这种需求。此功能现在处于测试阶段。更多内容参见 
KYLIN-3488。&lt;/p&gt;
+&lt;h2 id=&quot;introduction-to-apache-druid-incubating&quot;&gt;03 
Introduction to Apache Druid (incubating)&lt;/h2&gt;
+&lt;p&gt;Druid was created in 2012. It’s an open source distributed data 
store. Its core design combines the concept of analytical databases, 
time-series databases, and search systems, and it can support data collection 
and analytics on fairly large datasets. Druid uses an Apache V2 license and is 
an Apache incubator project.&lt;/p&gt;
 
-&lt;h3 id=&quot;hybrid-model-&quot;&gt;Hybrid model 图形界面&lt;/h3&gt;
-&lt;p&gt;Hybrid 是一种用于组装多个 cube 的高级模型。 
它可用于满足 cube 的 schema 要发生改变的情
况。这个功能过去没有图形界面,因
此只有一小部分用户知道它。现在我们在 Web 
界面上开启了它,以便更多用户可以尝试。&lt;/p&gt;
+&lt;p&gt;Druid Architecture&lt;br /&gt;
+From the perspective of deployment architectures, Druid’s processes mostly 
fall into 3 categories based on their roles.&lt;/p&gt;
 
-&lt;h3 id=&quot;cube-planner&quot;&gt;默认开启 Cube planner&lt;/h3&gt;
-&lt;p&gt;Cube planner 可以极大地优化 cube 结构,减少构建的 
cuboid 
数量,从而节省计算/存储资源并提高查询性能。它是在v2.3中引å
…¥çš„,但默认情
况下没有开启。为了让更多用户看到并尝试它,我们默认在v2.5中启用它。
 算法将在第一次构建 segment 的时候,根据数据统计自动优化 
cuboid 集合.&lt;/p&gt;
+&lt;h3 
id=&quot;data-node-slave-node-for-data-ingestion-and-calculation&quot;&gt;•   
Data Node (Slave node for data ingestion and calculation)&lt;/h3&gt;
+&lt;p&gt;The Historical node is in charge of loading segments (committed 
immutable data) and receiving queries on historical data.&lt;br /&gt;
+Middle Manager is in charge of data ingestion and commit segments. Each task 
is done by a separate JVM. &lt;br /&gt;
+Peon is in charge of completing a single task, which is managed and monitored 
by the Middle Manager.&lt;/p&gt;
 
-&lt;h3 id=&quot;segment-&quot;&gt;改进的 Segment 剪枝&lt;/h3&gt;
-&lt;p&gt;Segment(分区)修剪可以有效地减少磁盘和网络I / 
O,因此大大提高了查询性能。 过去,Kylin 只按分区列 
(partition date column) 的值进行 segment 的修剪。 
如果查询中没有将分区列作为过滤条件,那么修剪将不起作用,会扫描所有segment。.&lt;br
 /&gt;
-现在从v2.5开始,Kylin 将在 segment 
级别记录每个维度的最小/最大值。 在扫描 segment 
之前,会将查询的条件与最小/最大索引进行比较。 
如果不匹配,将跳过该 segment。 
检查KYLIN-3370了解更多信息。&lt;/p&gt;
+&lt;h3 id=&quot;query-node&quot;&gt;•        Query Node&lt;/h3&gt;
+&lt;p&gt;Broker receives query requests, determines on which segment the data 
resides, and distributes sub-queries and merges query results.&lt;/p&gt;
 
-&lt;h3 id=&quot;yarn-&quot;&gt;在 YARN 上合并字典&lt;/h3&gt;
-&lt;p&gt;当 segment 合并时,它们的词å…
¸ä¹Ÿéœ€è¦åˆå¹¶ã€‚在过去,字典合并发生在 Kylin 的 JVM 
中,这需要使用大量的本地内存和 CPU 资源。 在极端情
况下(如果有几个并发作业),可能会导致 Kylin 进程崩溃。 
因此,一些用户不得不为 Kylin 任务节点分配更多内
存,或运行多个任务节点以平衡工作负载。&lt;br /&gt;
-现在从v2.5开始,Kylin 将把这项任务提交给 Hadoop MapReduce 和 
Spark,这样就可以解决这个瓶颈问题。 
查看KYLIN-3471了解更多信息.&lt;/p&gt;
+&lt;h3 id=&quot;master-node-task-coordinator-and-cluster-manager&quot;&gt;•  
Master Node (Task Coordinator and Cluster Manager)&lt;/h3&gt;
+&lt;p&gt;Coordinator monitors Historical nodes, dispatches segments and 
monitor workload.&lt;br /&gt;
+Overlord monitors Middle Manager, dispatches tasks to Middle Manager, and 
assists releasing of segments.&lt;/p&gt;
 
-&lt;h3 id=&quot;cube-&quot;&gt;改进使用全局字典的 cube 
构建性能&lt;/h3&gt;
-&lt;p&gt;全局字典 (Global Dictionary) 是 bitmap 精确去重计数的必
要条件。如果去重列具有非常高的基数,则 GD 
可能非常大。在 cube 构建阶段,Kylin 需要通过 GD 
将非整数值转换为整数。尽管 GD 
已被分成多个切片,可以分开加载到内
存,但是由于去重列的值是乱序的。Kylin 需要反复载å…
¥å’Œè½½å‡º(swap in/out)切片,这会导致构建任务非常缓慢。&lt;br 
/&gt;
-该增强功能引入了一个新步骤,为每个数据块从全局字å…
¸ä¸­æž„建一个缩小的字典。 随后每个任务只需要加
载缩小的字典,从而避免频繁的载å…
¥å’Œè½½å‡ºã€‚性能可以比以前快3倍。查看 KYLIN-3491 
了解更多信息.&lt;/p&gt;
+&lt;h3 id=&quot;external-dependency&quot;&gt;External Dependency&lt;/h3&gt;
+&lt;p&gt;At the same time, Druid has 3 replaceable external 
dependencies.&lt;/p&gt;
 
-&lt;h3 id=&quot;topn-count-distinct--cube-&quot;&gt;改进含 TOPN, COUNT 
DISTINCT 的 cube 大小的估计&lt;/h3&gt;
-&lt;p&gt;Cube 的大小在构建时是预先估计的,并被后续几
个步骤使用,例如决定 MR / Spark 作业的分区数,计算 HBase 
region 切割等。它的准确与否会对构建性能产生很大影响。 
当存在 COUNT DISTINCT,TOPN 的度量时候,因
为它们的大小是灵活的,因
此估计值可能跟真实值有很大偏差。 
在过去,用户需要调整若干个参数以使尺寸估计更接近实际
尺寸,这对普通用户有点困难。&lt;br /&gt;
-现在,Kylin 将æ 
¹æ®æ”¶é›†çš„统计信息自动调整大小估计。这可以使估计值与实é™
…大小更接近。查看 KYLIN-3453 了解更多信息。&lt;/p&gt;
+&lt;h3 id=&quot;deep-storage-distributed-storage&quot;&gt;•  Deep Storage 
(distributed storage)&lt;/h3&gt;
+&lt;p&gt;Druid uses Deep storage to transfer data files between 
nodes.&lt;/p&gt;
 
-&lt;h3 id=&quot;hadoop-30hbase-20&quot;&gt;支持Hadoop 3.0/HBase 
2.0&lt;/h3&gt;
-&lt;p&gt;Hadoop 3和 HBase 2开始被许多用户采用。现在 Kylin 
提供使用新的 Hadoop 和 HBase API 编译的新二进制包
。我们已经在 Hortonworks HDP 3.0 和 Cloudera CDH 6.0 
上进行了测试&lt;/p&gt;
+&lt;h3 id=&quot;metadata-storage&quot;&gt;•  Metadata Storage&lt;/h3&gt;
+&lt;p&gt;Metadata Storage stores the metadata about segment positions and task 
output.&lt;/p&gt;
 
-&lt;p&gt;&lt;strong&gt;下载&lt;/strong&gt;&lt;/p&gt;
+&lt;h3 
id=&quot;zookeeper-cluster-management-and-task-coordination&quot;&gt;•        
Zookeeper (cluster management and task coordination)&lt;/h3&gt;
+&lt;p&gt;Druid uses Zookeeper (ZK) to ensure consistency of the cluster 
status.&lt;br /&gt;
+&lt;img src=&quot;/images/blog/Kylin-On-Durid/2 druid_architecture.png&quot; 
alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 2 Druid Architecture&lt;/p&gt;
 
-&lt;p&gt;要下载Apache Kylin v2.5.0源代码或二进制包,请访问&lt;a 
href=&quot;http://kylin.apache.org/download&quot;&gt;下载页面&lt;/a&gt; 
.&lt;/p&gt;
+&lt;h2 id=&quot;data-source-and-segment&quot;&gt;Data Source and 
Segment&lt;/h2&gt;
+&lt;p&gt;Druid stores data in Data Source. Data Source is equivalent to Table 
in RDBMS. Data Source is divided into multiple Chunks based on timestamps, and 
data within the same time range will be organized into the same Chunk. Each 
Chunk consists of multiple Segments, and each Segment is a physical data file 
and an atomic storage unit. Due to performance consideration, size of a Segment 
file is recommended to be 500MB.&lt;br /&gt;
+&lt;img src=&quot;/images/blog/Kylin-On-Durid/3 data_source_segment.png&quot; 
alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 3 Data Source &amp;amp; Segment&lt;/p&gt;
 
-&lt;p&gt;&lt;strong&gt;升级&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;As Druid has features of both OLAP and Time-series database, its 
schema includes 3 types of columns: Timestamp, Dimension and Measures 
(Metrics). Timestamp column can be used for trimming Segments, and 
Dimension/Measures are similar to Kylin’s.&lt;br /&gt;
+&lt;img src=&quot;/images/blog/Kylin-On-Durid/4 druid_schema.png&quot; 
alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 4 Druid Schema&lt;/p&gt;
 
-&lt;p&gt;参考&lt;a 
href=&quot;/docs/howto/howto_upgrade.html&quot;&gt;升级指南&lt;/a&gt;.&lt;/p&gt;
+&lt;h3 id=&quot;druids-advantage&quot;&gt;Druid’s Advantage&lt;/h3&gt;
+&lt;ol&gt;
+  &lt;li&gt;Real-time data ingestion: data can be instantly queried within 
sub-seconds after ingested, which is Druid’s most unique feature.&lt;/li&gt;
+  &lt;li&gt;Support of detail and aggregate queries.&lt;/li&gt;
+  &lt;li&gt;Columnar storage that avoids unnecessary IO.&lt;/li&gt;
+  &lt;li&gt;Support of inverted-order index with good filtering 
performance.&lt;/li&gt;
+  &lt;li&gt;Separation of cold/hot data.&lt;/li&gt;
+&lt;/ol&gt;
 
-&lt;p&gt;&lt;strong&gt;反馈&lt;/strong&gt;&lt;/p&gt;
+&lt;h2 id=&quot;why-did-meituan-develop-kylin-on-druid&quot;&gt;04 Why did 
Meituan develop Kylin on Druid?&lt;/h2&gt;
+&lt;p&gt;Meituan deployed into production an offline OLAP platform with Apache 
Kylin as its core component in 2015. Since then the platform has served almost 
all business lines with fast growing data volume and query executions, and the 
stress on the cluster has increased accordingly. Throughout the time, the tech 
team in Meituan keeps exploring better solutions for some of Kylin’s 
challenges. The major one is Apache HBase, the storage that Kylin relies 
on.&lt;/p&gt;
 
-&lt;p&gt;如果您遇到问题或疑问,请发送邮件至 Apache Kylin dev 
或 user 邮件列表:d...@kylin.apache.org,u...@kylin.apache.org; 
在发送之前,请确保您已通过发送电子邮件至 
dev-subscr...@kylin.apache.org 或 user-subscr...@kylin.apache.org订阅
了邮件列表。&lt;/p&gt;
+&lt;p&gt;Kylin stores its data in HBase by converting the Dimensions and 
Measures into HBase Keys and Values, respectively. As HBase doesn’t support 
secondary index and only has one RowKey index, Kylin’s Dimension values will 
be combined into a fixed sequence to store as RowKey. In this way, filtering on 
a Dimension in the front of the sequence will perform better than those at the 
back. Here’s an example:&lt;/p&gt;
+
+&lt;p&gt;In the testing environment, there are two almost identical Cubes 
(Cube1 and Cube2). They both have the same data source and the same 
Dimensions/Measures. The only difference is the order of the Dimensions in the 
RowKey: Cube1 puts P_LINEORDER.LO_CUSTKEY at the first while Cube2 the 
last.&lt;br /&gt;
+&lt;img src=&quot;/images/blog/Kylin-On-Durid/5 
cube1_rowkey_sequence.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 5 Cube1 RowKey Sequence&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&quot;/images/blog/Kylin-On-Durid/6 
cube2_rowkey_sequence.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 6 Cube2 RowKey Sequence&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Now let’s query each Cube with the same SQL and 
compare the response time.&lt;/strong&gt;&lt;/p&gt;
+
+&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre 
class=&quot;highlight&quot;&gt;&lt;code&gt;select S_SUPPKEY, C_CUSTKEY, 
sum(LO_EXTENDEDPRICE) as m1
+from P_LINEORDER
+    left join SUPPLIER on P_LINEORDER.LO_SUPPKEY = SUPPLIER.S_SUPPKEY
+    left join CUSTOMER on P_LINEORDER.LO_CUSTKEY = CUSTOMER.C_CUSTKEY
+WHERE (LO_ORDERKEY &amp;gt; 1799905 and  LO_ORDERKEY &amp;lt; 1799915)  or 
(LO_ORDERKEY &amp;gt; 1999905 and  LO_ORDERKEY &amp;lt; 1999935)
+GROUP BY S_SUPPKEY, C_CUSTKEY;
+&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+
+&lt;p&gt;&lt;strong&gt;Below shows the time consumed and data 
scanned:&lt;/strong&gt;&lt;br /&gt;
+&lt;img src=&quot;/images/blog/Kylin-On-Durid/7 cube1_query_log.png&quot; 
alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 7 Cube1 Query Log&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&quot;/images/blog/Kylin-On-Durid/8 
cube1_query_log.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 8 Cube1 Query Log&lt;/p&gt;
+
+&lt;p&gt;The test result shows that the same SQL query can perform 200x time 
differently. The primary reason for the difference is that the query has to 
scan a larger range of data in the HTable of Cube2.&lt;/p&gt;
+
+&lt;p&gt;In addition, Kylin’s multiple Dimension values are stored in a 
Key’s corresponding Value, so when querying on a single Dimension, 
unnecessary Dimensions are read as well, generating unnecessary IO.&lt;/p&gt;
+
+&lt;p&gt;To summarize, the limitation of HBase impacts the user’s 
experience, especially among business groups.&lt;/p&gt;
+
+&lt;p&gt;Kylin’s query performance and user experience can be greatly 
improved with pure columnar storage and multiple indexes on Dimensions. As 
analyzed above, Druid happens to meet the requirements of columnar + 
multi-index. So the Meituan Kylin team decided to try replacing HBase with 
Druid.&lt;/p&gt;
+
+&lt;p&gt;Why not just use Druid then? Meituan’s engineers shared their 
thoughts:&lt;br /&gt;
+1.     Druid’s native query language is in its own specific JSON format, 
which is not as easy to pick up as SQL. Although the Druid community added SQL 
support later on, the support is not complete and does not meet the data 
analysts’ requirement of complex SQL queries. On the contrary, Kylin natively 
supports ANSI SQL, uses Apache Calcite for semantic parsing, and supports SQL 
features such as join, sub query, window functions, etc. In addition, it 
provides standard interfaces including ODBC/JDBC, and can directly connect with 
BI tools such as Tableau, Power BI, Superset, and Redash.&lt;/p&gt;
+
+&lt;ol&gt;
+  &lt;li&gt;
+    &lt;p&gt;Druid can support only single-table query. Multi-table joins are 
very common in practice, but they cannot be supported by Druid. Kylin, however, 
supports Star Schema and Snowflake Schema, satisfying multi-table join 
requirements.&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;Druid cannot support exact distinct count, but Kylin can support 
approximation, based upon HyperLogLog, and exact deduplication, based upon 
Bitmap. For scenarios that require exact values, Kylin is almost the only 
option.&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;Druid rollup can only pre-calculate Base Cuboids. Kylin can 
specify richer combinations of Dimensions to match query patterns, reducing 
calculation at query time.&lt;/p&gt;
+  &lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;From the experiences of utilizing Druid and Kylin, we recognize the 
management and operational challenges in using Druid as the OLAP 
engine:&lt;/p&gt;
+
+&lt;ol&gt;
+  &lt;li&gt;
+    &lt;p&gt;Druid doesn’t provide Web GUI for business users. Users have to 
use a less-friendly API to construct a new model in Druid. Kylin, on the other 
hand, provides an easy-to-use Web GUI. Business users can simply create a new 
model with a few mouse clicks, and then query it with SQL. After a brief 
training, business users can then use self-service.&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;Druid doesn’t provide an ops-friendly console for cluster 
monitoring and management, so  workload increases. Kylin is based on a Hadoop 
platform, which has complete monitoring and management capabilities with tools 
like Ambari or Cloudera Manager.&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;Druid has to be set up on a dedicated cluster and cannot utilize 
an existing Hadoop cluster’s computing resources. Nowadays, an enterprise has 
typically deployed a Hadoop cluster and is using standard resource management 
tools (YARN/Mesos/Kubernets) to unify management of computing resources. 
Alternatively, Druid would need separate deployment and operations. Kylin’s 
data processing is based on MapReduce or Spark, which can share a resource on 
the Hadoop cluster and allow dynamic resource allocations. This maximizes 
resource efficiency without extra operational effort.&lt;/p&gt;
+  &lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;Therefore, it appears to be a promising OLAP solution to combine 
Druid’s excellent columnar storage with Kylin’s usability, compatibility, 
and completeness. Druid has columnar storage, inverted index, better filtering 
performance than HBase, native OLAP features, and good secondary aggregation 
capabilities. Meituan’s tech team decided to try replacing HBase with Druid 
as the storage for Kylin.&lt;/p&gt;
+
+&lt;h2 id=&quot;section&quot;&gt;05&lt;/h2&gt;
+&lt;p&gt;### Kylin on Druid Design&lt;br /&gt;
+At v1.5, Apache Kylin introduced plugable architecture and de-coupled 
computing and storage components, which makes the replacement of HBase 
possible. Here is a brief introduction to the main design concept of Kylin on 
Druid based on Meituan engineer Kaisen Kang’s design doc. (Graphics 9 and 10 
are from reference[1], and text are from reference[1] and [3])&lt;/p&gt;
+
+&lt;h3 id=&quot;process-of-building-cube&quot;&gt;Process of Building 
Cube&lt;/h3&gt;
+&lt;ol&gt;
+  &lt;li&gt;Add steps of counting Druid Segments and updating Druid Rules 
before generating Cuiboid data files.&lt;/li&gt;
+  &lt;li&gt;Generate Cuboid files with MapReduce, using the same building 
process used previously.&lt;/li&gt;
+  &lt;li&gt;Replace the original step, “convert to HFile”, with the step 
called “convert to Druid Segment”, which converts Cuboid files to the Druid 
columnar format and outputs to a specific HDFS path (line 1 in Graphic 9) 
.&lt;/li&gt;
+  &lt;li&gt;Publish the metadata of the Druid Segment to the Druid metadata 
store (line 2 in Graphic 9).&lt;/li&gt;
+  &lt;li&gt;Druid Coordinator periodically checks new Segments in the metadata 
store (line 3), and if it finds a new Segment, it’ll notify the Historical 
node (line 4). Upon notification, Historical node will pull Segment data files 
from HDFS to local and load (line 5).&lt;/li&gt;
+  &lt;li&gt;Once all Druid Segments are loaded, Cube building is done. &lt;br 
/&gt;
+&lt;img src=&quot;/images/blog/Kylin-On-Durid/9 
process_of_building_cube.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 9 Process of Building Cube&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;h3 id=&quot;process-of-querying-cube&quot;&gt;Process of Querying 
Cube&lt;/h3&gt;
+&lt;ol&gt;
+  &lt;li&gt;When Kylin Query Server initiates a query, Calcite parses the 
query as Druid query plan (scan or groupby) and sends the request to Druid 
Broker.&lt;/li&gt;
+  &lt;li&gt;Druid Broker parses the request, finds the corresponding 
Historical nodes, dispatches the request to the nodes, and aggregates the 
returned results.&lt;/li&gt;
+  &lt;li&gt;Kylin Query Server obtains the return from Druid Broker via HTTP 
and converts it to Tuple and hands over to Calcite for traversing.&lt;br /&gt;
+&lt;img src=&quot;/images/blog/Kylin-On-Durid/9 10 
process_of_querying_cube.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
+Graphic 10 Process of Querying Cube&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;h3 id=&quot;schema-mapping&quot;&gt;Schema Mapping&lt;/h3&gt;
+&lt;ol&gt;
+  &lt;li&gt;One Kylin Cube maps to one Druid Data Source.&lt;/li&gt;
+  &lt;li&gt;One Kylin Segment maps to one or more Druid Segments.&lt;/li&gt;
+  &lt;li&gt;The Kylin time partition column maps to the Druid timestamp 
column.&lt;/li&gt;
+  &lt;li&gt;One Kylin Cuboid maps to one Druid dimension column.&lt;/li&gt;
+  &lt;li&gt;Kylin dimension columns map to Druid dimension columns.&lt;/li&gt;
+  &lt;li&gt;Kylin measure columns map to Druid measure columns.&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;h2 id=&quot;summary&quot;&gt;06 Summary&lt;/h2&gt;
+&lt;p&gt;In this article, we first analyzed features and pros/cons of both 
Kylin and Druid, and the reasons for poor performance of Hbase in Kylin in some 
cases. Then we searched solutions and found the feasible option of using Druid 
as the Kylin storage engine. At last, we illustrated the Kylin-on-Druid 
architecture and the processes developed by Meituan.&lt;/p&gt;
+
+&lt;p&gt;Stay tuned for our next article about how to use Kylin on Druid, how 
it performs, and how it can be improved.&lt;/p&gt;
+
+&lt;h2 id=&quot;reference&quot;&gt;07 Reference&lt;/h2&gt;
+
+&lt;ol&gt;
+  &lt;li&gt;
+    
&lt;p&gt;https://issues.apache.org/jira/projects/KYLIN/issues/KYLIN-3694&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;https://github.com/apache/kylin/tree/kylin-on-druid&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;https://blog.bcmeng.com/post/kylin-on-druid.html&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;http://druid.io/docs/latest/design&lt;/p&gt;
+  &lt;/li&gt;
+&lt;/ol&gt;
 
-&lt;p&gt;&lt;em&gt;非常感谢所有贡献Apache 
Kylin的朋友!&lt;/em&gt;&lt;/p&gt;
 </description>
-        <pubDate>Thu, 20 Sep 2018 13:00:00 -0700</pubDate>
-        <link>http://kylin.apache.org/cn/blog/2018/09/20/release-v2.5.0/</link>
-        <guid 
isPermaLink="true">http://kylin.apache.org/cn/blog/2018/09/20/release-v2.5.0/</guid>
+        <pubDate>Wed, 12 Dec 2018 09:30:00 -0800</pubDate>
+        
<link>http://kylin.apache.org/blog/2018/12/12/why-did-meituan-develop-kylin-on-druid-part1-of-2/</link>
+        <guid 
isPermaLink="true">http://kylin.apache.org/blog/2018/12/12/why-did-meituan-develop-kylin-on-druid-part1-of-2/</guid>
         
         
         <category>blog</category>
@@ -160,6 +307,70 @@
       </item>
     
       <item>
+        <title>Apache Kylin v2.5.0 正式发布</title>
+        <description>&lt;p&gt;近日Apache Kylin 社区很高å…
´åœ°å®£å¸ƒï¼ŒApache Kylin 2.5.0 正式发布。&lt;/p&gt;
+
+&lt;p&gt;Apache Kylin 
是一个开源的分布式分析引擎,旨在为极大数据集提供 SQL 
接口和多维分析(OLAP)的能力。&lt;/p&gt;
+
+&lt;p&gt;这是继2.4.0 后的一个新功能版本。该版本引å…
¥äº†å¾ˆå¤šæœ‰ä»·å€¼çš„æ”¹è¿›ï¼Œå®Œæ•´çš„æ”¹åŠ¨åˆ—è¡¨è¯·å‚è§&lt;a 
href=&quot;https://kylin.apache.org/docs/release_notes.html&quot;&gt;release 
notes&lt;/a&gt;;这里挑一些主要改进做说明:&lt;/p&gt;
+
+&lt;h3 id=&quot;all-in-spark--cubing-&quot;&gt;All-in-Spark 的 Cubing 
引擎&lt;/h3&gt;
+&lt;p&gt;Kylin 的 Spark 引擎将使用 Spark 运行 cube 
计算中的所有分布式作业,包括获取各个维度的不同值,将 
cuboid 文件转换为 HBase HFile,合并 segment,合并词å…
¸ç­‰ã€‚默认的 Spark é…
ç½®ä¹Ÿç»è¿‡ä¼˜åŒ–,使得用户可以获得开箱即用的体验。相å…
³å¼€å‘任务是 KYLIN-3427, KYLIN-3441, KYLIN-3442.&lt;/p&gt;
+
+&lt;p&gt;Spark 任务管理也有所改进:一旦 Spark 
任务开始运行,您就可以在Web控制台上获得作业链接;如果您丢弃该作业,Kylin
 将立刻终止 Spark 作业以及时释放资源;如果重新启动 
Kylin,它可以从上一个作业恢复,而不是重新提交新作业.&lt;/p&gt;
+
+&lt;h3 id=&quot;mysql--kylin-&quot;&gt;MySQL 做 Kylin å…
ƒæ•°æ®çš„存储&lt;/h3&gt;
+&lt;p&gt;在过去,HBase 是 Kylin 元数据存储的唯一选择。 
在某些情况下 HBase不适用,例如使用多个 HBase 集群来为 Kylin 
提供跨区域的高可用,这里复制的 HBase 
集群是只读的,所以不能做元数据存储。现在我们引入了 
MySQL Metastore 
以满足这种需求。此功能现在处于测试阶段。更多内容参见 
KYLIN-3488。&lt;/p&gt;
+
+&lt;h3 id=&quot;hybrid-model-&quot;&gt;Hybrid model 图形界面&lt;/h3&gt;
+&lt;p&gt;Hybrid 是一种用于组装多个 cube 的高级模型。 
它可用于满足 cube 的 schema 要发生改变的情
况。这个功能过去没有图形界面,因
此只有一小部分用户知道它。现在我们在 Web 
界面上开启了它,以便更多用户可以尝试。&lt;/p&gt;
+
+&lt;h3 id=&quot;cube-planner&quot;&gt;默认开启 Cube planner&lt;/h3&gt;
+&lt;p&gt;Cube planner 可以极大地优化 cube 结构,减少构建的 
cuboid 
数量,从而节省计算/存储资源并提高查询性能。它是在v2.3中引å
…¥çš„,但默认情
况下没有开启。为了让更多用户看到并尝试它,我们默认在v2.5中启用它。
 算法将在第一次构建 segment 的时候,根据数据统计自动优化 
cuboid 集合.&lt;/p&gt;
+
+&lt;h3 id=&quot;segment-&quot;&gt;改进的 Segment 剪枝&lt;/h3&gt;
+&lt;p&gt;Segment(分区)修剪可以有效地减少磁盘和网络I / 
O,因此大大提高了查询性能。 过去,Kylin 只按分区列 
(partition date column) 的值进行 segment 的修剪。 
如果查询中没有将分区列作为过滤条件,那么修剪将不起作用,会扫描所有segment。.&lt;br
 /&gt;
+现在从v2.5开始,Kylin 将在 segment 
级别记录每个维度的最小/最大值。 在扫描 segment 
之前,会将查询的条件与最小/最大索引进行比较。 
如果不匹配,将跳过该 segment。 
检查KYLIN-3370了解更多信息。&lt;/p&gt;
+
+&lt;h3 id=&quot;yarn-&quot;&gt;在 YARN 上合并字典&lt;/h3&gt;
+&lt;p&gt;当 segment 合并时,它们的词å…
¸ä¹Ÿéœ€è¦åˆå¹¶ã€‚在过去,字典合并发生在 Kylin 的 JVM 
中,这需要使用大量的本地内存和 CPU 资源。 在极端情
况下(如果有几个并发作业),可能会导致 Kylin 进程崩溃。 
因此,一些用户不得不为 Kylin 任务节点分配更多内
存,或运行多个任务节点以平衡工作负载。&lt;br /&gt;
+现在从v2.5开始,Kylin 将把这项任务提交给 Hadoop MapReduce 和 
Spark,这样就可以解决这个瓶颈问题。 
查看KYLIN-3471了解更多信息.&lt;/p&gt;
+
+&lt;h3 id=&quot;cube-&quot;&gt;改进使用全局字典的 cube 
构建性能&lt;/h3&gt;
+&lt;p&gt;全局字典 (Global Dictionary) 是 bitmap 精确去重计数的必
要条件。如果去重列具有非常高的基数,则 GD 
可能非常大。在 cube 构建阶段,Kylin 需要通过 GD 
将非整数值转换为整数。尽管 GD 
已被分成多个切片,可以分开加载到内
存,但是由于去重列的值是乱序的。Kylin 需要反复载å…
¥å’Œè½½å‡º(swap in/out)切片,这会导致构建任务非常缓慢。&lt;br 
/&gt;
+该增强功能引入了一个新步骤,为每个数据块从全局字å…
¸ä¸­æž„建一个缩小的字典。 随后每个任务只需要加
载缩小的字典,从而避免频繁的载å…
¥å’Œè½½å‡ºã€‚性能可以比以前快3倍。查看 KYLIN-3491 
了解更多信息.&lt;/p&gt;
+
+&lt;h3 id=&quot;topn-count-distinct--cube-&quot;&gt;改进含 TOPN, COUNT 
DISTINCT 的 cube 大小的估计&lt;/h3&gt;
+&lt;p&gt;Cube 的大小在构建时是预先估计的,并被后续几
个步骤使用,例如决定 MR / Spark 作业的分区数,计算 HBase 
region 切割等。它的准确与否会对构建性能产生很大影响。 
当存在 COUNT DISTINCT,TOPN 的度量时候,因
为它们的大小是灵活的,因
此估计值可能跟真实值有很大偏差。 
在过去,用户需要调整若干个参数以使尺寸估计更接近实际
尺寸,这对普通用户有点困难。&lt;br /&gt;
+现在,Kylin 将æ 
¹æ®æ”¶é›†çš„统计信息自动调整大小估计。这可以使估计值与实é™
…大小更接近。查看 KYLIN-3453 了解更多信息。&lt;/p&gt;
+
+&lt;h3 id=&quot;hadoop-30hbase-20&quot;&gt;支持Hadoop 3.0/HBase 
2.0&lt;/h3&gt;
+&lt;p&gt;Hadoop 3和 HBase 2开始被许多用户采用。现在 Kylin 
提供使用新的 Hadoop 和 HBase API 编译的新二进制包
。我们已经在 Hortonworks HDP 3.0 和 Cloudera CDH 6.0 
上进行了测试&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;下载&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;要下载Apache Kylin v2.5.0源代码或二进制包,请访问&lt;a 
href=&quot;http://kylin.apache.org/download&quot;&gt;下载页面&lt;/a&gt; 
.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;升级&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;参考&lt;a 
href=&quot;/docs/howto/howto_upgrade.html&quot;&gt;升级指南&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;反馈&lt;/strong&gt;&lt;/p&gt;
+
+&lt;p&gt;如果您遇到问题或疑问,请发送邮件至 Apache Kylin dev 
或 user 邮件列表:d...@kylin.apache.org,u...@kylin.apache.org; 
在发送之前,请确保您已通过发送电子邮件至 
dev-subscr...@kylin.apache.org 或 user-subscr...@kylin.apache.org订阅
了邮件列表。&lt;/p&gt;
+
+&lt;p&gt;&lt;em&gt;非常感谢所有贡献Apache 
Kylin的朋友!&lt;/em&gt;&lt;/p&gt;
+</description>
+        <pubDate>Thu, 20 Sep 2018 13:00:00 -0700</pubDate>
+        <link>http://kylin.apache.org/cn/blog/2018/09/20/release-v2.5.0/</link>
+        <guid 
isPermaLink="true">http://kylin.apache.org/cn/blog/2018/09/20/release-v2.5.0/</guid>
+        
+        
+        <category>blog</category>
+        
+      </item>
+    
+      <item>
         <title>Use Star Schema Benchmark for Apache Kylin</title>
         <description>&lt;h2 id=&quot;background&quot;&gt;Background&lt;/h2&gt;
 
@@ -957,61 +1168,6 @@ kylin.engine.spark.rdd-partition-cut-mb=
         
         
         <category>blog</category>
-        
-      </item>
-    
-      <item>
-        <title>Apache Kylin v2.0.0 Beta Announcement</title>
-        <description>&lt;p&gt;The Apache Kylin community is pleased to 
announce the &lt;a href=&quot;http://kylin.apache.org/download/&quot;&gt;v2.0.0 
beta package&lt;/a&gt; is ready for download and test.&lt;/p&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;Download link: &lt;a 
href=&quot;http://kylin.apache.org/download/&quot;&gt;http://kylin.apache.org/download/&lt;/a&gt;&lt;/li&gt;
-  &lt;li&gt;Source code: 
https://github.com/apache/kylin/tree/kylin-2.0.0-beta&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;p&gt;It has been more than 2 month since the v1.6.0 release. The community 
has been working hard to deliver some long wanted features, hoping to move 
Apache Kylin to the next level.&lt;/p&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;Support snowflake data model (&lt;a 
href=&quot;https://issues.apache.org/jira/browse/KYLIN-1875&quot;&gt;KYLIN-1875&lt;/a&gt;)&lt;/li&gt;
-  &lt;li&gt;Support TPC-H queries (&lt;a 
href=&quot;https://issues.apache.org/jira/browse/KYLIN-2467&quot;&gt;KYLIN-2467&lt;/a&gt;)&lt;/li&gt;
-  &lt;li&gt;Spark cubing engine (&lt;a 
href=&quot;https://issues.apache.org/jira/browse/KYLIN-2331&quot;&gt;KYLIN-2331&lt;/a&gt;)&lt;/li&gt;
-  &lt;li&gt;Job engine HA (&lt;a 
href=&quot;https://issues.apache.org/jira/browse/KYLIN-2006&quot;&gt;KYLIN-2006&lt;/a&gt;)&lt;/li&gt;
-  &lt;li&gt;Percentile measure (&lt;a 
href=&quot;https://issues.apache.org/jira/browse/KYLIN-2396&quot;&gt;KYLIN-2396&lt;/a&gt;)&lt;/li&gt;
-  &lt;li&gt;Cloud tested (&lt;a 
href=&quot;https://issues.apache.org/jira/browse/KYLIN-2351&quot;&gt;KYLIN-2351&lt;/a&gt;)&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;p&gt;You are very welcome to give the v2.0.0 beta a try, and please do 
send feedbacks to &lt;a 
href=&quot;&amp;#109;&amp;#097;&amp;#105;&amp;#108;&amp;#116;&amp;#111;:&amp;#100;&amp;#101;&amp;#118;&amp;#064;&amp;#107;&amp;#121;&amp;#108;&amp;#105;&amp;#110;&amp;#046;&amp;#097;&amp;#112;&amp;#097;&amp;#099;&amp;#104;&amp;#101;&amp;#046;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#100;&amp;#101;&amp;#118;&amp;#064;&amp;#107;&amp;#121;&amp;#108;&amp;#105;&amp;#110;&amp;#046;&amp;#097;&amp;#112;&amp;#097;&amp;#099;&amp;#104;&amp;#101;&amp;#046;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt;.&lt;/p&gt;
-
-&lt;hr /&gt;
-
-&lt;h2 id=&quot;install&quot;&gt;Install&lt;/h2&gt;
-
-&lt;p&gt;The v2.0.0 beta requires a refresh install at the moment. It cannot 
be upgraded from v1.6.0 due to the incompatible metadata. However the 
underlying cube is backward compatible. We are working on an upgrade tool to 
transform the metadata, so that a smooth upgrade will be possible.&lt;/p&gt;
-
-&lt;hr /&gt;
-
-&lt;h2 id=&quot;run-tpc-h-benchmark&quot;&gt;Run TPC-H Benchmark&lt;/h2&gt;
-
-&lt;p&gt;Steps to run TPC-H benchmark on Apache Kylin can be found here: &lt;a 
href=&quot;https://github.com/Kyligence/kylin-tpch&quot;&gt;https://github.com/Kyligence/kylin-tpch&lt;/a&gt;&lt;/p&gt;
-
-&lt;hr /&gt;
-
-&lt;h2 id=&quot;spark-cubing-engine&quot;&gt;Spark Cubing Engine&lt;/h2&gt;
-
-&lt;p&gt;Apache Kylin v2.0.0 introduced a new cubing engine based on Apache 
Spark that can be selected to replace the original MR engine. Initial tests 
showed that the spark engine could cut the build time to 50% in most 
cases.&lt;/p&gt;
-
-&lt;p&gt;To enable the Spark cubing engine, check &lt;a 
href=&quot;/docs16/tutorial/cube_spark.html&quot;&gt;this 
tutorial&lt;/a&gt;.&lt;/p&gt;
-
-&lt;hr /&gt;
-
-&lt;p&gt;&lt;em&gt;Great thanks to everyone who 
contributed!&lt;/em&gt;&lt;/p&gt;
-</description>
-        <pubDate>Sat, 25 Feb 2017 12:00:00 -0800</pubDate>
-        <link>http://kylin.apache.org/blog/2017/02/25/v2.0.0-beta-ready/</link>
-        <guid 
isPermaLink="true">http://kylin.apache.org/blog/2017/02/25/v2.0.0-beta-ready/</guid>
-        
-        
-        <category>blog</category>
         
       </item>
     

Added: kylin/site/images/blog/Kylin-On-Durid/1 kylin_architecture.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/1%20kylin_architecture.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/1 kylin_architecture.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/10 process_of_querying_cube.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/10%20process_of_querying_cube.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/10 
process_of_querying_cube.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/2 druid_architecture.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/2%20druid_architecture.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/2 druid_architecture.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/3 data_source_segment.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/3%20data_source_segment.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/3 data_source_segment.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/4 druid_schema.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/4%20druid_schema.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/4 druid_schema.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/5 cube1_rowkey_sequence.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/5%20cube1_rowkey_sequence.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/5 cube1_rowkey_sequence.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/6 cube2_rowkey_sequence.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/6%20cube2_rowkey_sequence.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/6 cube2_rowkey_sequence.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/7 cube1_query_log.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/7%20cube1_query_log.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/7 cube1_query_log.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/8 cube1_query_log.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/8%20cube1_query_log.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/8 cube1_query_log.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: kylin/site/images/blog/Kylin-On-Durid/9 process_of_building_cube.png
URL: 
http://svn.apache.org/viewvc/kylin/site/images/blog/Kylin-On-Durid/9%20process_of_building_cube.png?rev=1849691&view=auto
==============================================================================
Binary file - no diff available.

Propchange: kylin/site/images/blog/Kylin-On-Durid/9 process_of_building_cube.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream


Reply via email to