kylin-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KYLIN-3498) Chinese translation of community, development docs
Date Thu, 23 Aug 2018 01:16:00 GMT

    [ https://issues.apache.org/jira/browse/KYLIN-3498?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16589544#comment-16589544 ] 

ASF GitHub Bot commented on KYLIN-3498:
---------------------------------------

shaofengshi closed pull request #205: KYLIN-3498 Chinese translation of community, development docs
URL: https://github.com/apache/kylin/pull/205
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/website/_config.yml b/website/_config.yml
index d52449cfe7..5ea233ec3f 100644
--- a/website/_config.yml
+++ b/website/_config.yml
@@ -27,7 +27,7 @@ encoding: UTF-8
 timezone: America/Dawson 
 
 exclude: ["README.md", "Rakefile", "*.scss", "*.haml", "*.sh", "Dockerfile", "Makefile"]
-include: [_docs,_docs16,_docs20,_docs21,_docs23,_dev]
+include: [_docs,_docs16,_docs20,_docs21,_docs23,_dev,community]
 
 # Build settings
 markdown: kramdown
@@ -76,3 +76,7 @@ collections:
     output: true
   dev:
     output: true
+  dev-cn:
+    output: true
+  community:
+    output: true
\ No newline at end of file
diff --git a/website/_data/development-cn.yml b/website/_data/development-cn.yml
new file mode 100644
index 0000000000..d1b2331b53
--- /dev/null
+++ b/website/_data/development-cn.yml
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Development menu items, for English one, dev-cn.yml is for Chinese one
+# The development menu is constructed in dev_nav.html with these data
+
+- title: 开发指南
+  dev:
+    - index
+    - dev_env
+    - coding_naming_convention
+    - howto_test
+    - howto_contribute
+    - howto_docs
+    - howto_package
+    - howto_hbase_branches
+    - howto_release
+    - plugin_arch
+    - new_metadata
+    - web_tech
+    - about_temp_files
diff --git a/website/_dev/about_temp_files.cn.md b/website/_dev/about_temp_files.cn.md
new file mode 100644
index 0000000000..dcf95a1d3c
--- /dev/null
+++ b/website/_dev/about_temp_files.cn.md
@@ -0,0 +1,29 @@
+---
+layout: dev-cn
+title:  关于临时文件
+categories: development
+permalink: /cn/development/about_temp_files.html
+---
+
+在我们查看代码时,我们发现 Kylin 在下列位置留下了大量垃圾文件:
+
+* 客户端的本地文件系统
+* HDFS
+* hadoop 节点的本地文件系统。
+
+开了一个单子来追踪这个 issue:
+[https://issues.apache.org/jira/browse/KYLIN-926](https://issues.apache.org/jira/browse/KYLIN-926)
+
+为了将来的开发,请:
+
+* 每当您想在本地创建临时文件时,请选择
+  File.createTempFile 或使用文件夹:
+  BatchConstants.CFG_KYLIN_LOCAL_TEMP_DIR(/tmp/kylin),不要随意使用
+  /tmp 中的另一个文件夹,它会变得一团糟,看起来不专业。
+* 每当您在本地创建临时文件时,请记得在使用之后删除它
+  使用它。最好使用 FileUtils.forceDelete,因为它也适用于
+  删除文件夹。如果 Kylin 异常退出,请尽量避免使用 deleteOnExit 方法。
+* 每当您想要在 HDFS 中创建文件,请尝试在
+  kylin.hdfs.working.dir 或 BatchConstants.CFG_KYLIN_HDFS_TEMP_DIR 下创建文件,以及
+  记得在它不再有用之后删除它。尽量避免投掷
+  一切到 hdfs:///tmp 并将其留作垃圾。
diff --git a/website/_dev/coding_naming_convention.cn.md b/website/_dev/coding_naming_convention.cn.md
new file mode 100644
index 0000000000..fca6de83f5
--- /dev/null
+++ b/website/_dev/coding_naming_convention.cn.md
@@ -0,0 +1,62 @@
+---
+layout: dev-cn
+title:  编码和命名惯例
+categories: development
+permalink: /cn/development/coding_naming_convention.html
+---
+
+## 编码惯例
+
+团队合作中编码管理是非常重要的。它不仅使得代码整齐及整洁,它也节省了许多的工作。不同的代码惯例(自动格式化)将会导致不必要的代码改动使得在代码复审和合并时需要更多的努力。
+
+对于 Java 代码,我们使用 Eclipse 默认的格式化配置,其中一个改动允许长行。
+
+- 对于 Eclipse 开发者,无需手动设置。代码格式化配置 `.settings/org.eclipse.jdt.core.prefs` 在 git 仓库。当项目被引入时,您的 IDE 应该自动配置。
+- 对于 intellij IDEA 开发者,您需要安装 "Eclipse Code Formatter" 并手动将 Eclipse 格式化配置加载到您的 IDE。详细内容请看[搭建开发环境](dev_env.html)。
+- 我们在 maven 中有 *checkstyle plugin* 能强制进行规范检查。
+
+对于 JavaScript,XML 和其它编码,请使用空格来缩进。作为常规,请保持代码格式与现有行一致。目前没有其他的强制措施。
+
+
+
+## 配置命名惯例
+
+Kylin 配置名称(在 `kylin.properties` 中的那些)
+
+- 惯例是 `dot.separated.namespace.config-name-separated-by-dash`,所有的字符都是小写。
+- 基本原理:点分隔前缀用于命名空间,如 java 包名。最后一级与类名相同,但要小写并以短划线分隔。结果与常见的 hadoop 配置名称一致,即。`dfs.namenode.servicerpc-bind-host`。
+- 正面例子:`kylin.metadata.url`; `kylin.snapshot.max-mb`
+- 反面例子:`kylin.cube.customEncodingFactories`,应该为 `kylin.cube.custom-encoding-factories`
+- 名称的命名空间(或包)应映射来自配置中使用的 Java 项目和包。 下面是当前名称空间的列表。
+  - kylin.env
+  - kylin.metadata
+  - kylin.snapshot
+  - kylin.dictionary
+  - kylin.cube
+  - kylin.job
+  - kylin.engine
+  - kylin.engine.mr
+  - kylin.engine.spark
+  - kylin.source
+  - kylin.source.hive
+  - kylin.source.kafka
+  - kylin.storage
+  - kylin.storage.hbase
+  - kylin.storage.partition
+  - kylin.query
+  - kylin.security
+  - kylin.server
+  - kylin.web
+
+
+
+## 配置文件命名惯例
+
+对于配置文件如日志配置,spring 配置,mapreduce job 配置等。
+
+- 惯例是 `words-separated-by-dash.ext`,所有的字符要小写。
+- 基本原理:要和 hadoop 配置文件命名一致,即。hdfs-site.xml
+- 正面例子:`kylin-server-log4j.properties`
+- 反面例子:`kylin_hive_conf.xml`,应该为 `kylin-hive-conf.xml`
+
+
diff --git a/website/_dev/dev_env.cn.md b/website/_dev/dev_env.cn.md
new file mode 100644
index 0000000000..8a9a191d0b
--- /dev/null
+++ b/website/_dev/dev_env.cn.md
@@ -0,0 +1,182 @@
+---
+layout: dev-cn
+title:  搭建开发环境
+categories: development
+permalink: /cn/development/dev_env.html
+---
+
+开发者想要在他们的开发机器上运行 Kylin 测试用例或应用。
+
+跟随这个教程,您可以通过运行一个具体测试样例构建 Kylin 测试 cubes,且您能针对已构建的 cube 进一步运行其它测试样例
+
+## Hadoop 客户端环境
+
+Off-Hadoop-CLI 安装需要您有一个有 hadoop 客户端的机器(或一个 hadoop 沙箱)以及本地开发机器。为了简化操作,我们强烈建议您从 hadoop 沙箱上运行 Kylin 开始。在下面的教程中,我们将使用 Hortonworks®Sandbox2.4.0.0-169,您可以从 Hortonworks 下载页面下载它,展开“Hortonworks Sandbox Archive”链接,然后搜索“HDP® 2.4 on Hortonworks Sandbox”进行下载。建议您为沙箱虚拟机提供足够的内存,首选 8G 或更多。
+
+### 启动 Hadoop
+
+在 Hortonworks sandbox 中, ambari 会帮助您运行 hadoop:
+
+{% highlight Groff markup %}
+ambari-agent start
+ambari-server start
+{% endhighlight %}
+	
+上述命令执行成功后您可以到 ambari 主页 <http://yoursandboxip:8080> 去检查所有组件的状态。默认情况下 ambari 使 HBase 失效,您需要手动启动 `HBase` 服务。
+![start hbase in ambari](https://raw.githubusercontent.com/KylinOLAP/kylinolap.github.io/master/docs/installation/starthbase.png)
+
+对于 hadoop 分布式,基本上启动 hadoop 集群,确保 HDFS,YARN,Hive,HBase 运行着即可。
+
+
+## 开发机器的环境
+
+
+### 安装 Maven
+
+最新的 maven 下载地址:<http://maven.apache.org/download.cgi>,我们创建一个符号,以便 `mvn` 可以在任何地方运行。
+
+{% highlight Groff markup %}
+cd ~
+wget http://xenia.sote.hu/ftp/mirrors/www.apache.org/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz
+tar -xzvf apache-maven-3.2.5-bin.tar.gz
+ln -s /root/apache-maven-3.2.5/bin/mvn /usr/bin/mvn
+{% endhighlight %}
+
+### 安装 Spark
+
+在像 /usr/local/spark 这样的本地文件夹下手动安装 spark-2.1.2-bin-hadoop2.7
+
+{% highlight Groff markup %}
+wget -O /tmp/spark-2.1.2-bin-hadoop2.7.tgz http://d3kbcqa49mib13.cloudfront.net/spark-2.1.2-bin-hadoop2.7.tgz
+cd /usr/local
+tar -zxvf /tmp/spark-2.1.2-bin-hadoop2.7.tgz
+ln -s spark-2.1.2-bin-hadoop2.7 spark
+{% endhighlight %}
+
+
+为 hbase 客户端创建本地临时文件夹(如果其不存在):
+
+{% highlight Groff markup %}
+mkdir -p /hadoop/hbase/local/jars
+chmod 777 /hadoop/hbase/local/jars
+{% endhighlight %}
+
+### 编译
+
+首先将 Kylin 工程下载到本地:
+
+{% highlight Groff markup %}
+git clone https://github.com/apache/kylin.git
+{% endhighlight %}
+	
+将 Kylin 工件安装到 maven 仓库
+
+{% highlight Groff markup %}
+mvn clean install -DskipTests
+{% endhighlight %}
+
+### 修改本地配置
+
+必须修改本地配置以指向 hadoop 沙箱(或 CLI)机器。 
+
+* 在 **examples/test_case_data/sandbox/kylin.properties** 中
+   * 找到 `sandbox` 并替换成您的 hadoop hosts(如果您使用的是 HDP 沙箱,这步可以跳过)
+   * 找到 `kylin.job.use-remote-cli` 并修改为 "true"(在代码库中其默认值为 false,假定其运行在 hadoop CLI 上)
+   * 找到 `kylin.job.remote.cli.username` 和 `kylin.job.remote.cli.password`,填写用于登录 hadoop 集群执行 hadoop 命令的用户名和密码;如果您使用的是 HDP 沙箱,默认用户名使 `root` 密码是 `hadoop`。
+
+* 在 **examples/test_case_data/sandbox** 中
+   * 遍历每一个 xml 配置文件,找到所有的 `sandbox` 和 `sandbox.hortonworks.com`,替换成您的 hadoop hosts;(如果您使用的是 HDP 沙箱,这步可以跳过)
+
+host 替换的替代方法是更新您的 `hosts` 文件,来解决 `sandbox` 和 `sandbox.hortonworks.com` 映射为沙箱机器的 IP 的问题。
+
+### 运行单元测试
+运行单元测试来测试每一个 classes 基本功能的有效性。
+
+{% highlight Groff markup %}
+mvn test -fae -Dhdp.version=<hdp-version> -P sandbox
+{% endhighlight %}
+
+### 运行集成测试
+在真正运行集成测试前,需要为测试数据的填充运行一些端到端的 cube 构建作业,同时验证 cube 过程。然后是集成测试。
+
+其可能需要一段时间(也许一小时),请保持耐心。
+ 
+{% highlight Groff markup %}
+mvn verify -fae -Dhdp.version=<hdp-version> -P sandbox
+{% endhighlight %}
+
+关于测试想要了解更多,请参考[如何测试](/cn/development/howto_test.html).
+
+### 本地运行 Kylin Web 服务器
+
+拷贝 server/src/main/webapp/WEB-INF 到 webapp/app/WEB-INF 
+
+{% highlight Groff markup %}
+cp -r server/src/main/webapp/WEB-INF webapp/app/WEB-INF 
+{% endhighlight %}
+
+为 Kylin web GUI 下载 JS。`npm` 是 `Node.js` 的一部分,请搜索有关如何在您的操作系统上安装它的信息。
+
+{% highlight Groff markup %}
+cd webapp
+npm install -g bower
+bower --allow-root install
+{% endhighlight %}
+
+注意,如果是在 Windows 上,安装完 bower,需要将 "bower.cmd" 的路径加入系统环境变量 'PATH' 中,然后运行:
+
+{% highlight Groff markup %}
+bower.cmd --allow-root install
+{% endhighlight %}
+
+在 IDE,运行 `org.apache.kylin.rest.DebugTomcat` 将工作目录设置为 /server 文件夹。(默认情况下 Kylin 服务器将会监听 7070 端口;如果您想要使用另一个端口,请在运行 `DebugTomcat` 时将其指定为参数)
+
+查看 Kylin Web `http://localhost:7070/kylin`(用户名:ADMIN,密码:KYLIN)
+
+对于 IntelliJ IDEA 用户,需要修改 "server/kylin-server.iml" 文件,将所有的 "PROVIDED" 替换为 "COMPILE",否则可能会抛出 "java.lang.NoClassDefFoundError: org/apache/catalina/LifecycleListener" 错误。
+
+## 安装 IDE 编码格式化工具
+
+如果你正在为 Kylin 编写代码,你应该确保你的代码符合预期的格式。
+
+对于 Eclipse 用户,只需在提交代码之前格式化代码。
+
+对于 intellij IDEA 用户,您还需要执行一些额外步骤:
+
+1. 安装 "Eclipse Code Formatter" 并在 core-common/.settings 中使用 "org.eclipse.jdt.core.prefs" 和 "org.eclipse.jdt.ui.prefs" 来配置 "Eclipse Java Formatter config file" 和 "Import order"
+
+	![Eclipse_Code_Formatter_Config](/images/develop/eclipse_code_formatter_config.png)
+
+2. 去 Preference => Code Style => Java,将 "Scheme" 设为默认,并设置 "Class count to use import with '\*'" 和 "Names count to use static import with '\*'" 为 99。
+
+	![Kylin_Intellj_Code_Style](/images/develop/kylin-intellij-code-style.png)
+
+3. 禁用 intellij IDEA 的 "Optimize imports on the fly"
+
+	![Disable_Optimize_On_The_Fly](/images/develop/disable_import_on_the_fly.png)
+
+3. 提交代码前格式化代码。
+
+## 设置 IDE license 头部模板
+
+每一个源文件都应该包括以下的 Apache License 头部
+{% highlight Groff markup %}
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endhighlight %}
+
+当打包时 checkstyle 插件将会检查头部规则。license 文件在 `dev-support/checkstyle-apache-header.txt`。为了方便开发人员,请将头部添加为 `Copyright Profile`,并将其设置为 Kylin 项目的默认值。
+![Apache License Profile](/images/develop/intellij_apache_license.png)
\ No newline at end of file
diff --git a/website/_dev/howto_contribute.cn.md b/website/_dev/howto_contribute.cn.md
new file mode 100644
index 0000000000..28da6f0d22
--- /dev/null
+++ b/website/_dev/howto_contribute.cn.md
@@ -0,0 +1,116 @@
+---
+layout: dev-cn
+title:  如何贡献
+categories: development
+permalink: /cn/development/howto_contribute.html
+---
+
+Apache Kylin 一直寻求的不只是代码的贡献,还寻求使用文档,性能报告,问答等方面的贡献。所有类型的贡献都为成为 Kylin Committer 铺平了道路。每个人都有机会,尤其是那些有分析和解决方案背景的,因为缺少来自于用户和解决方案视角的内容。
+
+
+## 源分支
+代码和文档都在 Git 源代码控制之下。注意不同分支的用途。
+
+* `master`: 新功能的主开发分支
+* `2.[n].x`: 一些主要版本的维护分支
+* `document`: 文档分支
+
+## 组件及拥有者
+Apache Kylin 有几个子组件。为了更好地帮助社区的发展,我们为每个组件安排了一个或多个组件所有者。 
+
+- 组件所有者是志愿者(组件领域的专家)。所有者需要成为 Apache Kylin 提交者或 PMC。 
+
+- 所有者将尝试审查其组件范围内的补丁。
+
+- 所有者可以根据他的愿望和社区需求进行轮换。
+
+- 在提名或投票新提交者时,提名者需要说明候选人可以成为哪个组件的所有者。
+
+- 如果您已经是 Apache Kylin 提交者或 PMC 成员并希望成为组件所有者的志愿者,请给 dev 列表写信,我们将为您注册。 
+
+- 所有项目计划,决策仍由 Apache Kylin PMC 管理。
+
+- 如果您认为组件列表需要更新(添加,删除,重命名等),请给 dev 列表写信,我们将对其进行审核。
+
+组件所有者列在了这个 Apache Kylin [JIRA components page](https://issues.apache.org/jira/projects/KYLIN?selectedItem=com.atlassian.jira.jira-projects-plugin:components-page) 页面中的 Description 字段位置。所有者列在“Description”字段中而不是“Component Lead”字段中,因为后者仅允许我们列出一个人,然而其鼓励组件具有多个所有者。
+
+## 选择一个任务
+这里有新创建的任务等待被完成,由 JIRA 追踪。为了让其容易被搜索,这里有一些过滤条件。
+
+* 由李扬管理的[任务列表](https://issues.apache.org/jira/issues/?filter=12339895) 。
+* 由 Ted Yu 创建的[任务列表](https://issues.apache.org/jira/issues/?filter=12341496),重要的小的 bugs 且其中一些很容易被修复。
+* 您也可以在 Kylin JIRA 中搜索标签 “newbie”。
+
+在做大任务之前别忘了在[邮箱列表](/community/index.html)中讨论。
+
+如果为 bug 或功能创建了新的 JIRA,请记住为社区提供足够的信息:
+
+* 问题或功能的良好摘要
+* 详细说明,可能包括:
+	- 这个问题发生的环境 
+	- 重现问题的步骤
+	- 错误跟踪或日志文件(作为附件)
+	- model 或 cube 的元数据
+* 相关组件:我们将根据此选择安排审核人员。
+* 受影响的版本:您正在使用的 Kylin 版本。
+
+## 进行代码更改
+* [搭建开发环境](/cn/development/dev_env.html)
+* 提出 JIRA,描述功能/提升/bug
+* 在邮件列表或 issue 评论中与其他人讨论,确保提议的更改符合其他人正在做的事情以及为项目规划的内容
+* 在您的 fork 中进行修改
+	* 目前没有严格的代码样式,但一般规则与现有文件保持一致。例如,对 java 文件使用 4 空格缩进。
+	* 尽可能为代码更改添加测试用例。
+	* 确保“mvn clean package”和“mvn test”能够获得成功。
+	* 充分的单元测试和集成测试是代码更改的必要部分。 
+* [运行测试](/cn/development/howto_test.html) 以确保您的更改质量良好且不会破坏任何内容。如果您的补丁生成不正确或您的代码不符合代码指南,则可能会要求您重做某些工作。
+* 生成补丁并将其附加到相关的 JIRA。
+
+## 生成 Patch
+* 使用 `submit-patch.py`(推荐)创建 patches,上传到 jira 并可选择在 Review Board 上创建/更新评论。 Patch 名称自动格式化为(JIRA).(分支名称).(补丁号).patch,遵循 Yetus 的命名规则。
+
+```
+$ ./dev-support/submit-patch.py -jid KYLIN-xxxxx -b master -srb
+```
+
+* 用 -h 标志可以了解此脚本的详细用法信息。最有用的选项是:
+	* -b BRANCH, --branch BRANCH : 指定用于生成 diff 的基本分支。如果未指定,则使用跟踪分支。如果没有跟踪分支,则会抛出错误。
+	* -jid JIRA_ID, --jira-id JIRA_ID : 如果使用,则从 jira 中的附件推断下一个补丁版本并上传新补丁。脚本将要求 jira 用户名/密码进行身份验证。如果未设置,则将补丁命名为 .patch。
+* 默认情况下,它还会创建/更新 review board。要跳过该操作,请使用 -srb 选项。它使用 jira 中的“Issue Links”来确定审核请求是否已存在。如果没有审核请求,则创建一个新请求并使用 jira 摘要,patch 说明等填充所有必填字段。此外,还将此评论的链接添加到 jira。
+* 安装需要的 python 依赖,从 master 分支执行 `pip install -r dev-support/python-requirements.txt`。
+
+* 或者,您也可以手动生成 patch。请首先使用 `git rebase -i`,将较小的提交组合(squash)为一个较大的提交。然后使用 `git format-patch` 命令生成 patch,有关详细指南,请参阅[如何使用 Git 创建和应用补丁](https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/)。
+
+## 代码审查
+审核人员需要从以下角度审核 patch:
+
+* _功能性_:patch 必须解决问题,并在提交审核之前已经过贡献者的验证。
+* _测试范围_:更改必须由 UT 或集成测试覆盖,否则无法维护。执行案例包括 GUI,shell 脚本等。
+* _性能_:改变不应该降低 Kylin 的性能。
+* _元数据兼容性_:更改应支持旧元数据定义。否则,需要元数据迁移工具和文档。
+* _API 兼容性_:更改不应该破坏公共 API 的功能和行为;如果需要用新 API 替换旧 API,请在那里打印警告消息。
+* _文档_:如果需要同时更新 Kylin 文档,请创建另一个 JIRA,并将“Document”作为要跟踪的组件。在 JIRA 文档中,附加“文档”分支的文档更改 patch。
+
+不符合上述规则的补丁可能无法合并。
+
+## Patch +1 政策
+
+在提交之前,适合单个组件范围的修补程序至少需要一个组件所有者的 +1。如果所有者不在 — 在忙或其他 — 两个非所有者(即两个提交者)的 +1,就足够了。
+
+跨组件的 patch 在提交之前至少需要两个 +1s,最好由 x-component patch 涉及的组件所有者的 +1。
+
+任何人都可以在 patch 上 -1,任何 -1 都可以否决补丁;在解决 -1 的理由之前,它不能被提交。
+
+
+## 应用 Patch
+* Committer 将审核 JIRA 中的 Pull Requests 和 Patches 的正确性,性能,设计,编码风格,测试覆盖率
+* 必要时进行讨论和修改;
+* committer 将代码合并到目标分支中
+	* 对于 git patch,请使用“git am -s -3 patch-file”命令进行应用;
+	* 如果是来自 github Pull Request,则需要添加“This closing#”作为提交消息的一部分。这将允许 ASF Git bot 关闭 PR。
+	* 使用 `git rebase` 确保合并结果是提交的简化。
+
+
+## 进行文档更改
+查看[如何写文档](/cn/development/howto_docs.html).
+
diff --git a/website/_dev/howto_docs.cn.md b/website/_dev/howto_docs.cn.md
new file mode 100644
index 0000000000..0d1665a8ba
--- /dev/null
+++ b/website/_dev/howto_docs.cn.md
@@ -0,0 +1,199 @@
+---
+layout: dev-cn
+title:  如何写文档
+categories: development
+permalink: /cn/development/howto_docs.html
+---
+
+我们以 MD 格式编写文档并使用 [Jekyll](http://jekyllrb.com) 转换为 HTML。Jekyll 生成的 HTML 上传到 apache SVN 并成为 Kylin 网站。所有 MD 源文件都在 git 中管理,因此可以清楚地跟踪所有更改和贡献者。
+
+## 工作前
+
+在您添加或修改文档前请安装以下工具:  
+
+1. 首先,确保 Ruby 和 Gem 能在您的机器上工作  
+	* 对于 Mac 用户,请参考[这个](https://github.com/sstephenson/rbenv#homebrew-on-mac-os-x)来搭建 ruby 环境。
+	* 对于 Windows 用户,使用 [ruby installer](http://rubyinstaller.org/downloads/)。
+	* 对于 China 用户,考虑使用一个[本地 gem 仓库](https://ruby.taobao.org/)以防止网络问题。
+
+2. 然后,安装 [Jekyll](http://jekyllrb.com),以及需要的插件
+	* `gem install jekyll jekyll-multiple-languages kramdown rouge`  
+	* __注意__:一些特定的 jekyll 和 jekyll-multiple-languages 版本不能一起使用(使用 jekyll 3.0.1 和 jekyll-multiple-languages 2.0.3 时我遇到一个 "undefined method" 错误)。这种情况下,`jekyll 2.5.3` 和 `jekyll-multiple-languages 1.0.8` 是已知可运行的版本。
+        * 例如. 使用 `gem install jekyll --version "=2.5.3"` 来安装具体的版本。
+	* __注意__:对于 Mac 用户,如果 gem 安装时遇到类似这样的错误 'ERROR:  While executing gem ... (Gem::FilePermissionError)'。您可以使用 'brew install ruby' 的方式解决这个问题,然后重启您的终端。
+3. 您可以选择任何 markdown 编辑器
+
+下面是一个可以工作的 gem 列表。如果 jekyll 安装成为问题,请坚持使用这些版本。
+
+```
+$ gem list
+
+...
+jekyll (2.5.3)
+jekyll-coffeescript (1.0.1)
+jekyll-gist (1.4.0)
+jekyll-multiple-languages (1.0.8)
+jekyll-paginate (1.1.0)
+jekyll-sass-converter (1.4.0)
+jekyll-watch (1.3.1)
+json (1.8.1)
+kramdown (1.9.0)
+...
+rouge (1.10.1)
+...
+```
+
+## 使用 Docker 为文档编译
+
+最新版的 kylin 发布提供了 dockerfile,来减少构建复杂性使用 docker 和 Makefile 能调用 docker 命令。
+
+```
+$ pwd
+/Users/<username>/kylin/website
+$ make docker.build
+docker build -f Dockerfile -t kylin-document:latest .
+Sending build context to Docker daemon  82.44MB
+Step 1/3 : FROM jekyll/jekyll:2.5.3
+ ---> e81842c29599
+Step 2/3 : RUN gem install jekyll-multiple-languages -v 1.0.11
+ ---> Using cache
+ ---> e9e8b0f1d388
+Step 3/3 : RUN gem install rouge -v 3.0.0
+ ---> Using cache
+ ---> 1bd42c6b93c0
+Successfully built 1bd42c6b93c0
+Successfully tagged kylin-document:latest
+$ make runserver
+docker run --volume="/Users/<username>/kylin/website:/srv/jekyll" -p 4000:4000 --rm -it kylin-document:latest jekyll server --watch
+Configuration file: /srv/jekyll/_config.yml
+            Source: /srv/jekyll
+       Destination: /srv/jekyll/_site
+      Generating...
+...
+```
+
+## 关于 Jekyll
+Jekyll 是一个用于从源文本和主题生成静态 HTML 网站的 Ruby 脚本,HTML 在部署到 Web 服务器之前生成。Jekyll 恰好也是 GitHub 页面背后的引擎。
+
+Apache Kylin 的网站和文档使用 Jekyll 来管理和生成,可在 [http://kylin.apache.org](http://kylin.apache.org) 上看到最终内容。
+
+## Multi-Language
+要草拟中文版文档或翻译现有文档,只需添加或复制该文档,名称以 .cn.md 作为后缀。它将在 /cn 文件夹下生成与 html 同名的文件。
+要添加其他语言,请更新 _config.yml 并遵循与中文版相同的模式。  
+
+# Kylin 文档结构以及导航菜单
+
+[作为 Jekyll 源的 Kylin 网站](https://github.com/apache/kylin/tree/document/website)是在 `doucment` 分支下维护的。
+
+1. __Home Page__:_"index.md"_ 文档的主页
+2. __Getting Started__:_"gettingstarted"_ 生成 Apache Kylin 的文档,包括 FAQ,术语
+3. __Installation__:_"install"_ Apache Kylin 安装指南
+4. __Tutorial__:_"tutorial"_ 关于用户如何使用 Apache Kylin 的教程
+5. __How To__:_"howto"_ 更细节的帮助指南
+6. __Development__:_"development"_ 为了开发者贡献,集成其它应用和扩展 Apache Kylin
+7. __Others__:其它文档。
+
+菜单由 Jekyll 集合管理:
+
+* ___data/docs.yml__:英文版本菜单结构  
+* ___data/docs-cn.yml__:中文版本菜单结构   
+* __add new menu item__:添加新的条目:在相关文件夹下创建新文档,例如 howto_example.md。添加如下的前标记: 
+
+```
+---
+layout: docs
+title:  How to expamle
+categories: howto
+permalink: /docs/howto/howto_example.html
+version: v0.7.2
+since: v0.7.2
+---
+```
+
+将链接更改为完全链接
+然后将条目添加到 docs.yml,如:
+
+```
+- title: How To
+  docs:
+  - howto/howto_contribute
+  - howto/howto_jdbc
+  - howto/howto_example
+```
+
+# 如何编写文档
+使用任何 markdown 编辑器打开文档,草拟内容并在本地预览。
+
+样例文档:
+
+```
+---
+layout: docs
+title:  How to example
+categories: howto
+permalink: /docs/howto/howto_example.html
+version: v0.7.2
+since: v0.7.2
+---
+
+## This is example doc
+The quick brown fox jump over the lazy dog.
+
+```
+
+# 如何添加图片
+所有的图片请放到 _images_ 文件夹下,在你的文件中,请使用以下样式引入图片:  
+
+```
+![](/images/Kylin-Web-Tutorial/2 tables.png)
+
+```
+
+# 如何添加连接
+使用站点链接的相对路径,例如
+
+```
+[REST API](docs/development/rest_api.html). 
+
+```
+
+# 如何添加代码高亮
+我们使用 [Rouge](https://github.com/jneen/rouge) 突出显示代码语法。
+查看此 doc 的源代码以获取更多详细信息示例。
+
+# 如何在本地预览
+您可以在 markdown 编辑器中预览,要检查网站上的确切内容,请从 `website` 文件夹中运行 Jekyll:
+
+```
+jekyll server
+
+```
+然后在浏览器中访问 http://127.0.0.1:4000。
+
+## 如何发布到网站(只适用于 committer)  
+
+### 搭建
+
+1. `cd website`
+2. `svn co https://svn.apache.org/repos/asf/kylin/site _site`
+
+___site__ 文件夹是工作目录,将由 maven 或 git 随时删除,请确保只有当你想要发布到网站时从 svn 检出。
+
+### 本地运行  
+在创建一个 PR 或推送到 git 仓库之前,您可以通过以下方式在本地预览更改:
+
+1. `cd website`
+2. `jekyll s`
+3. 在您的浏览器打开 [http://127.0.0.1:4000](http://127.0.0.1:4000)
+
+### 推到网站 
+
+1. 拷贝 jekyll 生成的 `_site` 到 svn 的 `website/_site`
+2. `cd website/_site`
+3. `svn status`
+4. 您需要使用 `svn add` 添加任意新的文件
+5. `svn commit -m 'UPDATE MESSAGE'`
+
+在几分钟内,svnpubsub 应该开始且您将能够在 [http://kylin.apache.org](http://kylin.apache.org/) 看到结果。
+
+
diff --git a/website/_dev/howto_docs.md b/website/_dev/howto_docs.md
index 8867b59e39..a2ce143091 100644
--- a/website/_dev/howto_docs.md
+++ b/website/_dev/howto_docs.md
@@ -75,8 +75,6 @@ Configuration file: /srv/jekyll/_config.yml
 ## About Jekyll
 Jekyll is a Ruby script to generate a static HTML website from source text and themes, the HTML is generated before being deployed to the web server. Jekyll also happens to be the engine behind GitHub Pages.
 
-Here are good reference about basic usage of Jekyll: [Learning Jekyll By Example](http://learn.andrewmunsell.com/learn/jekyll-by-example/tutorial)
-
 Apache Kylin's website and documentation is using Jekyll to manage and generate final content which avaliable at [http://kylin.apache.org](http://kylin.apache.org).
 
 ## Multi-Language
diff --git a/website/_dev/howto_hbase_branches.cn.md b/website/_dev/howto_hbase_branches.cn.md
new file mode 100644
index 0000000000..4b0319a08b
--- /dev/null
+++ b/website/_dev/howto_hbase_branches.cn.md
@@ -0,0 +1,23 @@
+---
+layout: dev-cn
+title:  如何维护 HBase 分支
+categories: development
+permalink: /cn/development/howto_hbase_branches.html
+---
+
+### Kylin 不同版本的 HBase 分支 
+
+因为 HBase API 基于版本和供应商的不同,因此必须针对不同的 HBase 版本维护不同的代码分支。
+
+分支设计为
+
+- `master` 分支编译的是 HBase 0.98,也是开发的主要分支。 所有错误修复和新功能仅提交给 `master`。
+- `master-hbase1.x` 分支编译的是 HBase 1.x。通过在 `master` 上应用一个 patch 来创建此分支。换句话说,`master-hbase1.x` = `master` + `a patch to support HBase 1.x`.
+- 同样的,有 `master-cdh5.7` = `master-hbase1.x` + `a patch to support CDH 5.7`。
+- 在 `master-hbase1.x` 和 `master-cdh5.7` 上不会直接发生代码更改(除非分支上最后一次提交采用了 HBase 调用)。
+
+有一个脚本有助于保持这些分支同步:`dev-support/sync_hbase_cdh_branches.sh`。
+
+
+
+
diff --git a/website/_dev/howto_package.cn.md b/website/_dev/howto_package.cn.md
new file mode 100644
index 0000000000..71aff08f18
--- /dev/null
+++ b/website/_dev/howto_package.cn.md
@@ -0,0 +1,39 @@
+---
+layout: dev-cn
+title:  如何打二进制包
+categories: development
+permalink: /cn/development/howto_package.html
+---
+
+### 生成二进制包
+本文档讲述的是如何从源码构建二进制包
+
+#### 下载源码
+您可以从 github 仓库下载 Apache Kylin 源码。
+
+```
+git clone https://github.com/apache/kylin kylin
+```
+
+#### 构建二进制包
+
+为了生成二进制包,需要预先准备好 **maven** 和 **npm**。
+
+**(可选)** 如果您在代理服务器后面,在运行 ./script/package.sh 之前,需要将代理信息告知 npm 和 bower:
+
+```
+export http_proxy=http://your-proxy-host:port
+npm config set proxy http://your-proxy-host:port
+```
+
+##### 为 HBase 1.x 打包
+```
+cd kylin
+build/script/package.sh
+```
+
+##### 为 CDH 5.7 打包
+```
+cd kylin
+build/script/package.sh -P cdh5.7
+```
diff --git a/website/_dev/howto_release.cn.md b/website/_dev/howto_release.cn.md
new file mode 100644
index 0000000000..5613c4c095
--- /dev/null
+++ b/website/_dev/howto_release.cn.md
@@ -0,0 +1,486 @@
+---
+layout: dev-cn
+title:  如何发布
+categories: development
+permalink: /cn/development/howto_release.html
+---
+
+_本教程只适用于 Apache Kylin Committers。_  
+_以在 Mac OS X 上的 Shell 命令作为样例。_  
+_对于中国用户,请谨慎使用代理以避免潜在的防火墙问题。_  
+
+## 建立账户
+确保您有可使用的账号且对以下应用有权限:
+
+* Apache 账户: [https://id.apache.org](https://id.apache.org/)    
+* Apache Kylin git repo (main cobe base): [https://github.com/apache/kylin](https://github.com/apache/kylin)  
+* Apache Kylin svn 仓库 (只针对网站): [https://svn.apache.org/repos/asf/kylin](https://svn.apache.org/repos/asf/kylin)  
+* Apache Nexus (maven 仓库): [https://repository.apache.org](https://repository.apache.org)  
+* Apache Kylin dist 仓库: [https://dist.apache.org/repos/dist/dev/kylin](https://dist.apache.org/repos/dist/dev/kylin)  
+
+## 设置 GPG 签名密钥  
+按照 [http://www.apache.org/dev/release-signing](http://www.apache.org/dev/release-signing) 上的说明创建密钥对  
+安装 gpg (以 Mac OS X 为例):  
+`brew install gpg`
+
+生成 gpg 密钥:  
+参考: [https://www.gnupg.org/gph/en/manual/c14.html](https://www.gnupg.org/gph/en/manual/c14.html)  
+_生成的所有新 RSA 密钥应至少为 4096 位。不要生成新的 DSA 密钥_  
+`gpg --full-generate-key`  
+
+验证您的密钥:  
+`gpg --list-sigs YOUR_NAME`
+
+获取密钥的指纹:
+`gpg --fingerprint YOUR_NAME`
+
+它将显示指纹,如 "Key fingerprint = XXXX XXXX ...",然后在 [https://id.apache.org/](https://id.apache.org/) 上的"OpenPGP Public Key Primary Fingerprint"字段处将指纹添加到您的 apache 帐户;等待几个小时,密钥将添加到 [https://people.apache.org/keys/](https://people.apache.org/keys/),例如:
+[https://people.apache.org/keys/committer/lukehan.asc](https://people.apache.org/keys/committer/lukehan.asc)
+
+生成 ASCII Amromed 键:  
+`gpg -a --export YOUR_MAIL_ADDRESS > YOUR_NAME.asc &`
+
+上传密钥到公共服务器:  
+`gpg --send-keys YOUR_KEY_HASH`
+
+或通过 web 提交密钥:  
+打开并提交到 [http://pool.sks-keyservers.net:11371](http://pool.sks-keyservers.net:11371) (您可以选择任意一个有效的公钥服务器)
+
+一旦您的密钥提交到服务器,您可以通过使用以下命令验证:  
+`gpg --recv-keys YOUR_KEY_HASH`
+举例:  
+`gpg --recv-keys 027DC364`
+
+按照 KEYS 文件中的说明将公钥添加到 KEYS 文件:  
+_KEYS 文件位于:_ __${kylin}/KEYS__  
+例如:  
+`(gpg --list-sigs YOURNAME && gpg --armor --export YOURNAME) >> KEYS`
+
+提交您的改动。
+
+## 准备 release 的工件  
+__开始前:__
+
+* 如上所述设置签名密钥。
+* 确保您使用的是 JDK 1.8。
+* 确保您使用的是 GIT 2.7.2 或更高版本。
+* 确保您使用的是正确的 release 版本号。
+* 确保每个“resolved”的 JIRA 案例(包括重复案例)都分配了修复版本。
+* 确保你在干净的目录工作
+
+__在 Maven 中配置 Apache 存储库服务器__
+如果您是第一次发布,您需要在 ~/.m2/settings.xml 中服务器授权信息;如果该文件不存在,从 $M2_HOME/conf/settings.xml 拷贝一个模板;
+
+在“服务器”部分中,确保添加以下服务器,并将 #YOUR_APACHE_ID#, #YOUR_APACHE_PWD#, #YOUR_GPG_PASSPHRASE# 替换为您的 ID,密码和口令:
+{% highlight bash %}
+  <servers>
+    <!-- To publish a snapshot of some part of Maven -->
+    <server>
+      <id>apache.snapshots.https</id>
+      <username>#YOUR_APACHE_ID#</username>
+      <password>#YOUR_APACHE_PWD#</password>
+    </server>
+    <!-- To stage a release of some part of Maven -->
+    <server>
+      <id>apache.releases.https</id>
+      <username>#YOUR_APACHE_ID#</username>
+      <password>#YOUR_APACHE_PWD#</password>
+    </server>
+    
+    <!-- To publish a website of some part of Maven -->
+    <server>
+      <id>apache.website</id>
+      <username>#YOUR_APACHE_ID#</username>
+      <password>#YOUR_APACHE_PWD#</password>
+      <!-- Either
+      <privateKey>...</privateKey>
+      --> 
+      <filePermissions>664</filePermissions>
+      <directoryPermissions>775</directoryPermissions>
+    </server>
+    
+    <!-- To stage a website of some part of Maven -->
+    <server>
+      <id>stagingSite</id> 
+      <!-- must match hard-coded repository identifier in site:stage-deploy -->
+      <username>#YOUR_APACHE_ID#</username>
+      <filePermissions>664</filePermissions>
+      <directoryPermissions>775</directoryPermissions>
+    </server>
+    <server>
+      <id>gpg.passphrase</id>
+      <passphrase>#YOUR_GPG_PASSPHRASE#</passphrase>
+    </server>
+  </servers>
+{% endhighlight %}
+
+__修复许可证问题__
+{% highlight bash %}
+# Set passphrase variable without putting it into shell history
+$ read -s GPG_PASSPHRASE
+
+# Make sure that there are no junk files in the sandbox
+$ git clean -xf
+$ mvn clean
+
+# Make sure all unit tests are passed
+$ mvn test
+
+# Check the `org.apache.kylin.common.KylinVersion` class, ensure the value of `CURRENT_KYLIN_VERSION` is the release version. 
+
+# Fix any license issues as reported by target/rat.txt
+$ mvn -Papache-release -DskipTests -Dgpg.passphrase=${GPG_PASSPHRASE} install
+{% endhighlight %}
+
+可选的,当 dry-run 成功了,将安装变为部署:
+{% highlight bash %}
+$ mvn -Papache-release -DskipTests -Dgpg.passphrase=${GPG_PASSPHRASE} deploy
+{% endhighlight %}
+
+__准备__
+
+创建一个以 release 后命名的发布分支,例如,v0.7.2-release,并将其推到 Apache。  
+{% highlight bash %}
+$ git checkout -b vX.Y.Z-release
+$ git push -u origin vX.Y.Z-release
+{% endhighlight %}
+
+如果任何步骤失败,请清理(见下文),解决问题,然后从头重新开始。  
+{% highlight bash %}
+# Set passphrase variable without putting it into shell history
+$ read -s GPG_PASSPHRASE
+
+# Make sure that there are no junk files in the sandbox
+$ git clean -xf
+$ mvn clean
+
+# Optionally, do a dry run of the release:prepare step, which sets version numbers.
+$ mvn -DdryRun=true -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=(X.Y.Z+1)-SNAPSHOT -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests" release:prepare 2>&1 | tee /tmp/prepare-dry.log
+{% endhighlight %}
+
+__查看 dry run 输出:__
+
+* 在 `target` 目录中应该是这 8 个文件,其中包括:
+  * apache-kylin-X.Y.Z-SNAPSHOT-src.zip
+  * apache-kylin-X.Y.Z-SNAPSHOT-src.zip.asc
+  * apache-kylin-X.Y.Z-SNAPSHOT-src.zip.md5
+  * apache-kylin-X.Y.Z-SNAPSHOT-src.zip.sha1
+* 移除 .zip, .zip.asc, .zip.md5 和 zip.sha1 文件因为不需要。
+* 注意文件名以 `apache-kylin-` 开始
+* 在源发行版 `.tar.gz` 中,检查所有文件是否属于名为 `apache-kylin-X.Y.Z-src` 的目录。
+* 该目录必须包含 `NOTICE`, `LICENSE`, `README.md` 文件
+* 按[此](https://httpd.apache.org/dev/verification.html)检查 PGP
+
+__运行真实的 release:__
+现在真正开始 release  
+{% highlight bash %}
+# Prepare sets the version numbers, creates a tag, and pushes it to git.
+$ mvn -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=(X.Y.Z+1)-SNAPSHOT -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests" release:prepare
+
+# Perform checks out the tagged version, builds, and deploys to the staging repository
+$ mvn -DskipTests -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests" release:perform
+{% endhighlight %}
+
+__一个失败的 release 尝试后进行清理:__
+{% highlight bash %}
+# Make sure that the tag you are about to generate does not already
+# exist (due to a failed release attempt)
+$ git tag
+
+# If the tag exists, delete it locally and remotely
+$ git tag -d kylin-X.Y.Z
+$ git push origin :refs/tags/kylin-X.Y.Z
+
+# Remove modified files
+$ mvn release:clean
+
+# Check whether there are modified files and if so, go back to the
+# original git commit
+$ git status
+$ git reset --hard HEAD
+{% endhighlight %}
+
+__关闭 Nexus 仓库中的阶段性工件:__
+
+* 输入 [https://repository.apache.org/](https://repository.apache.org/) 并登陆
+* 在 `Build Promotion` 下,点击 `Staging Repositories`
+* 在 `Staging Repositories` 选项卡中,应该有一个包含配置文件 `org.apache.kylin` 的行
+* 浏览工件树并确保存在 .jar,.pom,.asc 文件
+* 选中行第一列中的复选框,点击 'Close' 按钮发布仓库到
+  [https://repository.apache.org/content/repositories/orgapachekylin-1006](https://repository.apache.org/content/repositories/orgapachekylin-1006)
+  (或相似的 URL)
+
+__上传到临时区域:__  
+通过 subversion 将工件上传到临时区域,https://dist.apache.org/repos/dist/dev/kylin/apache-kylin-X.Y.Z-rcN:
+{% highlight bash %}
+# Create a subversion workspace, if you haven't already
+$ mkdir -p ~/dist/dev
+$ pushd ~/dist/dev
+$ svn co https://dist.apache.org/repos/dist/dev/kylin
+$ popd
+
+## Move the files into a directory
+$ cd target
+$ mkdir ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN
+$ mv apache-kylin-* ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN
+
+## Check in
+$ cd ~/dist/dev/kylin
+$ svn add apache-kylin-X.Y.Z-rcN
+$ svn commit -m 'Upload release artifacts to staging' --username <YOUR_APACHE_ID>
+{% endhighlight %}
+
+__一个失败的 release 尝试后进行清理:__
+{% highlight bash %}
+# Make sure that the tag you are about to generate does not already
+# exist (due to a failed release attempt)
+$ git tag
+
+# If the tag exists, delete it locally and remotely
+$ git tag -d kylin-X.Y.Z
+$ git push origin :refs/tags/kylin-X.Y.Z
+
+# Remove modified files
+$ mvn release:clean
+
+# Check whether there are modified files and if so, go back to the
+# original git commit
+$ git status
+$ git reset --hard HEAD
+{% endhighlight %}
+
+# 验证 release
+{% highlight bash %}
+# Check unit test
+$ mvn test
+
+# Check that the signing key (e.g. 2AD3FAE3) is pushed
+$ gpg --recv-keys key
+
+# Check keys
+$ curl -O https://dist.apache.org/repos/dist/release/kylin/KEYS
+
+## Sign/check md5 and sha1 hashes
+ _(Assumes your O/S has 'md5' and 'openssl' commands.)_
+function checkHash() {
+  cd "$1"
+  for i in *.{zip,asc}; do
+    if [ ! -f $i ]; then
+      continue
+    fi
+    if [ -f $i.md5 ]; then
+      if [ "$(cat $i.md5)" = "$(md5 -q $i)" ]; then
+        echo $i.md5 present and correct
+      else
+        echo $i.md5 does not match
+      fi
+    fi
+    if [ -f $i.sha1 ]; then
+      if [ "$(cat $i.sha1)" = "$(openssl sha1 $i | cut -d ' ' -f 2)" ]; then
+        echo $i.sha1 present and correct
+      else
+        echo $i.sha1 does not match
+      fi
+    fi
+  done
+};
+$ checkHash apache-kylin-X.Y.Z-rcN
+{% endhighlight %}
+
+## Apache 投票过程  
+
+__在 Apache Kylin dev 邮件列表上投票__  
+在 dev 邮件列表上进行 release 投票,使用由 Maven release plugin 生成的 commit id,其消息看起来像 "[maven-release-plugin] prepare release kylin-x.x.x":
+
+{% highlight text %}
+To: dev@kylin.apache.org
+Subject: [VOTE] Release apache-kylin-X.Y.Z (RC[N])
+
+Hi all,
+
+I have created a build for Apache Kylin X.Y.Z, release candidate N.
+
+Changes highlights:
+...
+
+Thanks to everyone who has contributed to this release.
+Here’s release notes:
+https://github.com/apache/kylin/blob/XXX/docs/release_notes.md
+
+The commit to be voted upon:
+
+https://github.com/apache/kylin/commit/xxx
+
+Its hash is xxx.
+
+The artifacts to be voted on are located here:
+https://dist.apache.org/repos/dist/dev/kylin/apache-kylin-X.Y.Z-rcN/
+
+The hashes of the artifacts are as follows:
+src.tar.gz.md5 xxx
+src.tar.gz.sha1 xxx
+
+A staged Maven repository is available for review at:
+https://repository.apache.org/content/repositories/orgapachekylin-XXXX/
+
+Release artifacts are signed with the following key:
+https://people.apache.org/keys/committer/lukehan.asc
+
+Please vote on releasing this package as Apache Kylin X.Y.Z.
+
+The vote is open for the next 72 hours and passes if a majority of
+at least three +1 PPMC votes are cast.
+
+[ ] +1 Release this package as Apache Kylin X.Y.Z
+[ ]  0 I don't feel strongly about it, but I'm okay with the release
+[ ] -1 Do not release this package because...
+
+
+Here is my vote:
+
++1 (binding)
+
+
+{% endhighlight %}
+
+投票完成后,发出结果:  
+{% highlight text %}
+Subject: [RESULT] [VOTE] Release apache-kylin-X.Y.Z (RC[N])
+To: dev@kylin.apache.org
+
+Thanks to everyone who has tested the release candidate and given
+their comments and votes.
+
+The tally is as follows.
+
+N binding +1s:
+
+N non-binding +1s:
+
+No 0s or -1s.
+
+Therefore I am delighted to announce that the proposal to release
+Apache-Kylin-X.Y.Z has passed.
+
+Luke
+
+{% endhighlight %}
+
+## 发布  
+成功发布投票后,我们需要推动发行到镜像,以及其他任务。
+
+在 JIRA 中,搜索
+[all issues resolved in this release](https://issues.apache.org/jira/issues/?jql=project%20%3D%20KYLIN%20),
+并进行批量更新,将它们的状态更改为“关闭”,
+并加上更改的评论
+"Resolved in release X.Y.Z (YYYY-MM-DD)"
+(填写适当的发布号和日期)。  
+__取消 "Send mail for this update"。__
+
+标记 JIRA 系统中发布的版本,[管理版本](https://issues.apache.org/jira/plugins/servlet/project-config/KYLIN/versions)。
+
+推广分阶段的 nexus 工件。
+
+* 转到 [https://repository.apache.org/](https://repository.apache.org/) 并登陆
+* 在 "Build Promotion" 下点击 "Staging Repositories"
+* 在 "orgapachekylin-xxxx" 行中,选中框
+* 点击 "Release" 按钮
+
+将工件检入 svn。
+{% highlight bash %}
+# Get the release candidate.
+$ mkdir -p ~/dist/dev
+$ cd ~/dist/dev
+$ svn co https://dist.apache.org/repos/dist/dev/kylin
+
+# Copy the artifacts. Note that the copy does not have '-rcN' suffix.
+$ mkdir -p ~/dist/release
+$ cd ~/dist/release
+$ svn co https://dist.apache.org/repos/dist/release/kylin
+$ cd kylin
+$ cp -rp ../../dev/kylin/apache-kylin-X.Y.Z-rcN apache-kylin-X.Y.Z
+$ svn add apache-kylin-X.Y.Z
+
+# Check in.
+svn commit -m 'checkin release artifacts'
+{% endhighlight %}
+
+Svnpubsub 将会发布到
+[https://dist.apache.org/repos/dist/release/kylin](https://dist.apache.org/repos/dist/release/kylin) 并会在 24 小时内传播到
+[http://www.apache.org/dyn/closer.cgi/kylin](http://www.apache.org/dyn/closer.cgi/kylin)。
+
+如果现在有超过 2 个版本,请清除最旧的版本:
+
+{% highlight bash %}
+cd ~/dist/release/kylin
+svn rm apache-kylin-X.Y.Z
+svn commit -m 'Remove old release'
+{% endhighlight %}
+
+旧版本将保留在 [release archive](http://archive.apache.org/dist/kylin/).
+
+在 JIRA 中发布相同版本,检查最新发布版本的更改日志。
+
+## 构建和上传二进制包
+发布后,您需要生成二进制包并将它们放入到 VPN 发布库中;
+
+* 使用 `git fetch --all --prune --tags` 来同步您本地和远程的仓库。
+* Git 检出当前发布的标签;
+* 通过参考[此文档](howto_package.html)制作二进制包;
+* 使用 gpg 对生成的二进制包进行签名,例如:
+  {% highlight bash %}
+  gpg --armor --output apache-kylin-1.5.0-bin.tar.gz.asc --detach-sig apache-kylin-1.5.0-bin.tar.gz
+  {% endhighlight %}
+* 生成二进制包的 md5 文件,例如:
+  {% highlight bash %}
+  md5sum < apache-kylin-1.5.0-bin.tar.gz > apache-kylin-1.5.0-bin.tar.gz.md5
+  {% endhighlight %}
+* 将二进制包,签名文件和 md5 文件推送到 svn __dev__ 仓库,然后运行 `svn mv <files-in-dev> <files-in-release>` 命令将他们移动到 svn __release__ 仓库。
+* 对于不同的 Hadoop/HBase 版本,您可能需要上述步骤;
+* 添加文件,然后将更改提交 svn。 
+
+
+## 更新源码
+发布后,您需要手动更新一些源代码:
+
+* 更新 `KylinVersion` 类,将 `CURRENT_KYLIN_VERSION` 的值更改为当前开发版本。
+
+## 发布网站  
+更多细节参考[如何写文档](howto_docs.html)。
+
+## 发送通知邮件到邮件列表
+发送一个邮件主题如 "[Announce] Apache Kylin x.y.z released" 到以下列表:
+
+* Apache Kylin Dev 邮箱列表: dev@kylin.apache.org
+* Apache Kylin User 邮箱列表: user@kylin.apache.org
+* Apache Announce 邮箱列表: announce@apache.org
+  请注意始终使用您的 Apache 邮件地址发送;
+
+这是一个公告电子邮件的样本(通过研究 Kafka):
+
+{% highlight text %} 
+The Apache Kylin team is pleased to announce the immediate availability of the 2.1.0 release. 
+
+This is a major release after 2.0, with more than 100 bug fixes and enhancements; All of the changes in this release can be found in:
+https://kylin.apache.org/docs21/release_notes.html
+
+You can download the source release and binary packages from Apache Kylin's download page: https://kylin.apache.org/download/
+
+Apache Kylin is an open source Distributed Analytics Engine designed to provide SQL interface and multi-dimensional analysis (OLAP) on Apache Hadoop, supporting extremely large datasets.
+
+Apache Kylin lets you query massive data set at sub-second latency in 3 steps:
+1. Identify a star schema or snowflake schema data set on Hadoop.
+2. Build Cube on Hadoop.
+3. Query data with ANSI-SQL and get results in sub-second, via ODBC, JDBC or RESTful API.
+
+Thanks everyone who have contributed to the 2.1.0 release.
+
+We welcome your help and feedback. For more information on how to
+report problems, and to get involved, visit the project website at
+https://kylin.apache.org/
+
+{% endhighlight %}
+
+# 感谢  
+本指南起草于 [Apache Calcite](http://calcite.apache.org) Howto doc 的参考资料,非常感谢。
+
diff --git a/website/_dev/howto_release.md b/website/_dev/howto_release.md
index 9b0a116f85..0117b28286 100644
--- a/website/_dev/howto_release.md
+++ b/website/_dev/howto_release.md
@@ -13,7 +13,7 @@ _For people in China, please aware using proxy to avoid potential firewall issue
 Make sure you have avaliable account and privilege for following applications:
 
 * Apache account: [https://id.apache.org](https://id.apache.org/)    
-* Apache Kylin git repo (main cobe base): [https://git-wip-us.apache.org/repos/asf/kylin.git](https://git-wip-us.apache.org/repos/asf/kylin.git)  
+* Apache Kylin git repo (main cobe base): [https://github.com/apache/kylin](https://github.com/apache/kylin)  
 * Apache Kylin svn repo (for website only): [https://svn.apache.org/repos/asf/kylin](https://svn.apache.org/repos/asf/kylin)  
 * Apache Nexus (maven repo): [https://repository.apache.org](https://repository.apache.org)  
 * Apache Kylin dist repo: [https://dist.apache.org/repos/dist/dev/kylin](https://dist.apache.org/repos/dist/dev/kylin)  
@@ -422,7 +422,7 @@ svn commit -m 'Remove old release'
 The old releases will remain available in the
 [release archive](http://archive.apache.org/dist/kylin/).
 
-Release same version in JIRA, check [Change Log](https://issues.apache.org/jira/browse/KYLIN/?selectedTab=com.atlassian.jira.jira-projects-plugin:changelog-panel) for the latest released version.
+Release same version in JIRA, check Change Log.
 
 ## Build and upload binary package
 After publish the release, you need generate the binary packages and then put them to the svn release repository;
diff --git a/website/_dev/howto_test.cn.md b/website/_dev/howto_test.cn.md
new file mode 100644
index 0000000000..5610695eaf
--- /dev/null
+++ b/website/_dev/howto_test.cn.md
@@ -0,0 +1,70 @@
+---
+layout: dev-cn
+title:  "如何测试"
+categories: development
+permalink: /cn/development/howto_test.html
+---
+
+一般来说,应该有单元测试来涵盖个别 classes;必须有集成测试来涵盖端到端的场景,如构建,合并和查询。单元测试必须独立运行(不需要外部沙箱)。
+
+## 测试 v1.5 及以上
+
+* `mvn clean test` 运行单元测试,它的测试覆盖范围有限。
+    * 单元测试没有额外的依赖且能在任何机器上运行
+    * 单元测试不覆盖端到端的场景,如构建,合并和查询。
+    * 单元测试只需几分钟即可完成。
+* `dev-support/test_all_against_hdp_2_4_0_0_169.sh` 运行集成测试,有很好的覆盖率。
+    * 集成测试 __最好运行在 Hadoop 沙箱上__。我们建议您在沙箱中检出一个代码副本,并在其中直接运行 test_all_against_hdp_2_2_4_2_2.sh。如果您不想在沙箱上添加代码,请参阅 __更多关于 V1.5 UT/IT 分离__ 的内容。
+    * 正如名称所示,脚本仅适用于 hdp 2.2.4.2,但您可以从中理解集成测试是如何运行的。
+    * 集成测试从生成随机数据开始,然后构建 cube、合并 cube,最后查询结果并与 H2 DB 进行比较。
+    * 集成测试需要一到两个小时才能完成。
+* `nohup dev-support/test_all_against_hdp_2_4_0_0_169.sh < /dev/null 2>&1 > nohup.out &` 以无人值守的方式运行集成测试。
+
+## 测试 v1.3 及以下
+
+* `mvn test` 运行单元测试,它的测试覆盖范围有限。
+    * v1.3 及以下版本的特殊之处在于,hadoop / hbase 迷你集群用于覆盖单元测试中的查询。
+* 运行以下命令来进行集成测试。
+    * `mvn clean package -DskipTests`
+    * `mvn test  -Dtest=org.apache.kylin.job.BuildCubeWithEngineTest -Dhdp.version=2.2.0.0-2041 -DfailIfNoTests=false -P sandbox`
+    * `mvn test  -Dtest=org.apache.kylin.job.BuildIIWithEngineTest -Dhdp.version=2.2.0.0-2041 -DfailIfNoTests=false -P sandbox`
+    * `mvn test  -fae -P sandbox`
+    * `mvn test  -fae  -Dtest=org.apache.kylin.query.test.IIQueryTest -Dhdp.version=2.2.0.0-2041 -DfailIfNoTests=false -P sandbox`
+
+## 更多关于 V1.5 UT/IT 分离
+
+运行 `mvn verify -Dhdp.version=2.2.4.2-2` (假定您运行在沙箱上) 是运行完整的所有测试套件所需的全部内容。
+
+它将按顺序执行以下步骤:
+ 
+    1. Build Artifacts 
+    2. Run all UTs (takes few minutes) 
+    3. Provision cubes on the sandbox environment for IT uasge (takes 1~2 hours) 
+    4. Run all ITs (takes few tens of minutes) 
+    5. verify jar stuff 
+
+如果您的代码改动很小那么只需要运行 UT,使用: 
+`mvn test`
+如果您的沙箱已经配置,并且您的代码更改不会影响沙箱配置的结果,(并且您不想等待数小时的配置),只需运行以下命令来单独运行 UT 和 IT: 
+`mvn test`
+`mvn failsafe:integration-test`
+
+### Cube 配置
+
+测试用的 cube 配置确实会运行 kylin cube 作业,以在沙箱中准备样例 cube。这些准备好的 cubes 将会被集成测试使用,当前准备步骤与 maven 预集成测试阶段绑定,且其包含运行 BuildCubeWithEngine(需要 HBase),BuildCubeWithStream(需要 Kafka) 以及 BuildIIWithStream(需要 Kafka)。您可以在沙箱或进行开发的计算机中运行 mvn 命令。对于后者情况您需要在 __$KYLIN_HOME/examples/test_case_data/sandbox/kylin.properties__ 中设置 kylin.job.use-remote-cli=true。
+尝试将 `-DfastBuildMode=true` 附加到 mvn verify 命令,通过跳过增量 Cubing 来加速配置。 
+
+## 更多关于 v1.3 迷你集群
+
+Kylin v1.3 (以下) 用于将尽可能多的单元测试用例从沙箱移动到 HBase 迷你集群,这样用户就可以在没有 hadoop 沙箱的情况下在本地轻松运行测试。在根 pom.xml 中创建了两个 maven profiles,“default”和“sandbox”。默认配置文件将启动 HBase 迷你集群以准备测试数据并运行单元测试(迷你集群不支持的测试用例已添加到“exclude”列表中)。如果您想继续使用 Sandbox 运行测试,只需运行 `mvn test -P sandbox`。
+
+### 当使用 "default" 配置文件, Kylin 将会
+
+* 启动 HBase 迷你集群并用动态的 HBase 配置更新 KylinConfig
+* 创建 Kylin 源数据表并引入 6 个样例 cube 表
+* 从本地的 tar 包导入 hbase 数据:`examples/test_case_data/minicluster/hbase-export.tar.gz` (hbase-export.tar.gz 将会在运行完成 BuildCubeWithEngineTest 后更新)
+* 完成所有测试用例后,关闭迷你集群并清理 KylinConfig 缓存
+
+### 为了确保迷你集群能成功运行, 您需要
+
+* 确保正确设置了 JAVA_HOME 
diff --git a/website/_dev/howto_test.md b/website/_dev/howto_test.md
index 1d52ef2cf6..64abdaa854 100644
--- a/website/_dev/howto_test.md
+++ b/website/_dev/howto_test.md
@@ -33,7 +33,6 @@ In general, there should be unit tests to cover individual classes; there must b
 
 ## More on v1.5 UT/IT separation
 
-From Kylin v1.5 you can run UT(Unit test), environment cube provision and IT (Integration test) separately. 
 Running `mvn verify -Dhdp.version=2.2.4.2-2`  (assume you're on your sandbox) is all you need to run a complete all the test suites.
 
 It will execute the following steps sequentially:
@@ -52,7 +51,7 @@ If your sandbox is already provisioned and your code change will not affect the
 
 ### Cube Provision
 
-Environment cube provision is indeed running kylin cubing jobs to prepare example cubes in the sandbox. These prepared cubes will be used by the ITs. Currently provision step is bound with the maven pre-integration-test phase, and it contains running BuildCubeWithEngine (HBase required), BuildCubeWithStream(Kafka required) and BuildIIWithStream(Kafka Required). You can run the mvn commands on you sandbox or your develop computer. For the latter case you need to set kylin.job.use-remote-cli=true in __$KYLIN_HOME/examples/test_case_data/sandbox/kylin.properties__. 
+Test cube provision is indeed running kylin cubing jobs to prepare example cubes in the sandbox. These prepared cubes will be used by the ITs. Currently provision step is bound with the maven pre-integration-test phase, and it contains running BuildCubeWithEngine (HBase required), BuildCubeWithStream(Kafka required) and BuildIIWithStream(Kafka Required). You can run the mvn commands on you sandbox or your develop computer. For the latter case you need to set kylin.job.use-remote-cli=true in __$KYLIN_HOME/examples/test_case_data/sandbox/kylin.properties__. 
 Try appending `-DfastBuildMode=true` to mvn verify command to speed up provision by skipping incremental cubing. 
 
 ## More on v1.3 Mini Cluster
diff --git a/website/_dev/index.cn.md b/website/_dev/index.cn.md
new file mode 100644
index 0000000000..41fb74c86a
--- /dev/null
+++ b/website/_dev/index.cn.md
@@ -0,0 +1,36 @@
+---
+layout: dev-cn
+title: 开发快速指南
+permalink: /cn/development/index.html
+---
+
+Apache Kylin 一直寻求的不只是代码的贡献,还寻求使用文档,性能报告,问答等方面的贡献。所有类型的贡献都为成为 Kylin Committer 铺平了道路。每个人都有机会,尤其是那些有分析和解决方案背景的,因为缺少来自于用户和解决方案视角的内容。
+
+### 如何贡献
+查看[如何贡献](/cn/development/howto_contribute.html)文档。
+
+### 源仓库
+Apache Kylin™ 源码使用 Git version control 进行版本控制:
+Commits [总结](https://github.com/apache/kylin/commits/master)  
+源仓库:[https://github.com/apache/kylin ](https://github.com/apache/kylin )  
+Gitbox 的镜像:[https://gitbox.apache.org/repos/asf?p=kylin.git ](https://gitbox.apache.org/repos/asf?p=kylin.git )
+
+### CI 和代码分析
+使用 JDK 1.7(过时)的 master 分支上的 UT:[Kylin-Master-JDK-1.7](https://builds.apache.org/job/Kylin-Master-JDK-1.7/) 
+使用 JDK 1.8 的 master 分支上的 UT:[Kylin-Master-JDK-1.8](https://builds.apache.org/job/Kylin-Master-JDK-1.8/) 
+Hadoop 沙箱 (HDP 2.4) 中的集成测试:[http://34.226.50.254:8081/](http://34.226.50.254:8081/)
+静态代码分析:[SonarCube dashboard](https://builds.apache.org/analysis/overview?id=org.apache.kylin%3Akylin)
+
+[![Build Status](https://travis-ci.org/apache/kylin.svg?branch=master)](https://travis-ci.org/apache/kylin)[![Codacy Badge](https://api.codacy.com/project/badge/Grade/74f0139786cd4e8a8ce69bb0c17c2e71)](https://www.codacy.com/app/kyligence-git/kylin?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=apache/kylin&amp;utm_campaign=Badge_Grade)
+[![Quality Gate](https://sonarcloud.io/api/badges/gate?key=org.apache.kylin%3Akylin)](https://sonarcloud.io/dashboard/index/org.apache.kylin%3Akylin)[![SonarCloud Coverage](https://sonarcloud.io/api/badges/measure?key=org.apache.kylin%3Akylin&metric=coverage)](https://sonarcloud.io/component_measures/metric/coverage/list?id=org.apache.kylin%3Akylin)[![SonarCloud Bugs](https://sonarcloud.io/api/badges/measure?key=org.apache.kylin%3Akylin&metric=bugs)](https://sonarcloud.io/component_measures/metric/reliability_rating/list?id=org.apache.kylin%3Akylin)[![SonarCloud Vulnerabilities](https://sonarcloud.io/api/badges/measure?key=org.apache.kylin%3Akylin&metric=vulnerabilities)](https://sonarcloud.io/component_measures/metric/security_rating/list?id=org.apache.kylin%3Akylin)
+
+### Issue 追踪  
+在 Apache JIRA 上的 "Kylin" 项目追踪 issues([浏览](http://issues.apache.org/jira/browse/KYLIN))。
+
+### 路标
+- 支持 Hadoop 3.0(纠偏编码)
+- Spark Cubing 增强
+- 连接更多的源(JDBC,SparkSQL)
+- 无 Cubing 的特设查询 
+- 更好的存储(Druid,Kudu,等)
+- 使用 Lambda 架构实时分析
diff --git a/website/_dev/new_metadata.cn.md b/website/_dev/new_metadata.cn.md
new file mode 100644
index 0000000000..8fe616e7ef
--- /dev/null
+++ b/website/_dev/new_metadata.cn.md
@@ -0,0 +1,30 @@
+---
+layout: dev-cn
+title:  "新的元数据模型"
+categories: development
+permalink: /cn/development/new_metadata.html
+---
+
+Kylin 正在进行循环代码重构,它将对元数据引入以下两个更改:
+
+* 从 "cube_desc" 抽象一个 "model_desc" 层
+
+定义一个 cube 前,用户将需要首先定义一个模型("model_desc");模型定义了哪个是事实表,哪些是维度表以及它们是如何 join 的;
+
+在定义模型时,当用户定义 cube(“cube_desc”)时,他/她只需要为维度指定表/列名称,因为已经定义了 join 条件;
+
+这种抽象是扩展元数据以实现非 cube 查询(即将推出);
+
+* 支持来自多个 hive 数据库的数据表;
+
+用户有这样的场景:表来自多个 hive 数据库,表名可能相同;为了支持这种情况,Kylin 将使用数据库名称 + 表名作为表的唯一名称;并且当在 Kylin 中查询时,用户需要在 SQL 中指定数据库名称(如果它不是“default”)。 
+
+这里有一个样例;事实表 "test_kylin_fact" 来自于默认的 hive 数据库,您不需要指定数据库名称;然而维度表来自于 "edw",在查询中您需要使用 "edw.test_cal_dt":
+
+{% highlight Groff markup %}
+select test_cal_dt.Week_Beg_Dt, sum(price) as c1, count(1) as c2 
+ from test_kylin_fact
+ inner JOIN edw.test_cal_dt as test_cal_dt
+ ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt 
+ where test_kylin_fact.lstg_format_name='ABIN' 
+{% endhighlight %}
diff --git a/website/_dev/new_metadata.md b/website/_dev/new_metadata.md
index d52aa618d2..71e3bd284b 100644
--- a/website/_dev/new_metadata.md
+++ b/website/_dev/new_metadata.md
@@ -17,7 +17,7 @@ This abstraction is to extend the meta data to fulfill non-cube queries (coming
 
 * Support data tables from multiple hive databases;
 
-User has the case that tables are from multiple hive database, and the table name might be the same; To support this case Kylin will use the database name + table name as the unique name for tables; And user need to specify the database name (if it is not "default") in SQL when query Kylin. 
+User has the case that tables are from multiple hive database, and the table name might be the same; To support this case Kylin will use the database name + table name as the unique name for tables; And user need to specify the database name (if it is not "default") in SQL when query in Kylin. 
 
 Here is a sample; the fact table "test_kylin_fact" is from default hive database, you don't need to specify the db name; while lookup table is from "edw", you need use "edw.test_cal_dt" in the query:
 
diff --git a/website/_dev/plugin_arch.cn.md b/website/_dev/plugin_arch.cn.md
new file mode 100644
index 0000000000..ef7e521881
--- /dev/null
+++ b/website/_dev/plugin_arch.cn.md
@@ -0,0 +1,42 @@
+---
+layout: dev-cn
+title:  插件架构
+categories: development
+permalink: /cn/development/plugin_arch.html
+---
+
+插件架构旨在使 Kylin 在计算框架,数据源和 cube 存储方面具有可扩展性。从 v1 开始,Kylin 与作为计算框架的 Hadoop MapReduce,作为数据源的 Hive,作为存储的 HBase 紧密结合。这样的问题出现了:Kylin 可以使用 Spark 作为 cube 引擎,或者可以使用像 Cassandra 那样不同的存储。我们希望对不同的选择持开放态度,并确保 Kylin 用最好的技术堆栈进化。这就是 Kylin v2 中引入插件架构的原因。
+
+![Plugin Architecture Overview](/images/develop/plugin_arch_overview.png)
+
+## 如何运行
+
+cube 元数据定义了 cube 所依赖的引擎,源和存储的类型。工厂模式用于构造每个依赖项的实例。适配器模式用于将部件连接在一起。
+
+例如一个 cube 描述可能包含:
+
+- fact_table: `SOME_HIVE_TABLE`
+- engine_type: `2` (MR Engine v2)
+- storage_type: `2` (HBase Storage v2)
+
+基于元数据,工厂创建 MR 引擎,Hive 数据源和 HBase 存储。
+
+![Plugin Architecture Factory Pattern](/images/develop/plugin_arch_factory_pattern.png)
+
+引擎就像一个主板,源和存储必须由输入和输出接口定义。数据源和存储必须适应接口,以便连接到引擎主板。
+
+![Plugin Architecture Adaptor Pattern](/images/develop/plugin_arch_adaptor_pattern.png)
+
+一旦上面的对象图被创建和连接,引擎就可以驱动 cube 构建过程。
+
+## 插件架构的好处
+
+- 自由
+	- Zoo 打破了,不再与 Hadoop 绑定
+	- 免费使用更好的引擎或存储
+- 可扩展性
+	- 接受任意输入,例如 Kafka
+	- 拥抱下一代分布式平台,例如 Spark
+- 灵活性
+	- 为不同的数据集选择不同的引擎
+
diff --git a/website/_dev/web_tech.cn.md b/website/_dev/web_tech.cn.md
new file mode 100644
index 0000000000..89deb39e62
--- /dev/null
+++ b/website/_dev/web_tech.cn.md
@@ -0,0 +1,46 @@
+---
+layout: dev-cn
+title:  "Kylin Web 摘要"
+categories: development
+permalink: /cn/development/web_tech.html
+---
+
+### 项目依赖
+* npm: 用于开发阶段安装 grunt 和 bower
+* grunt: 构建并安装 kylin web
+* bower: 管理 kylin 技术依赖
+
+### 技术依赖
+* Angular JS: kylin web 的基础支持
+* ACE: sql 和 json 编辑器
+* D3 JS: 绘制报表图表和 cube 图表
+* Bootstrap: css 库
+
+### 支持的用例:
+
+###### Kylin web 支持 BI 工作流中各种角色的需求 
+
+* 分析师:运行查询和检出结果
+* Modeler:cube 设计,cube/job 操作和监视器
+* 管理员:系统操作。
+
+### 技术概览 
+Kylin web 是一个基于 restful 服务构建的单页应用程序。Kylin web 使用 nodejs 中的工具来管理项目,并使用 AngularJS 来启用单页 Web 应用程序。Kylin web 使用来自 js 开源社区的流行技术,使其易于追赶和贡献。 
+
+### 强调:
+* 查询实用功能:
+    * 表和列名称的 SQL 自动建议
+    * 远程/本地查询保存
+    * 数据网格通过简单的 BI 操作能支持百万级数据
+    * 数据导出
+    * 简单的数据可视化(折线图,柱状图,饼图)
+* Cube 管理:
+    * 精心设计的 cube 创建流程
+    * cube 关系结构的可视化
+    * 精心设计的 cube 访问管理
+* Job 管理:
+    * Job 步骤和日志监视器
+    * 杀死
+    * 恢复
+* 有用的管理工具。
+* 精致的外观和感觉。
diff --git a/website/_includes/dev_nav.cn.html b/website/_includes/dev_nav.cn.html
new file mode 100644
index 0000000000..43d48a6abf
--- /dev/null
+++ b/website/_includes/dev_nav.cn.html
@@ -0,0 +1,33 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<div class="col-md-4 col-lg-4 col-xs-12 col-sm-12 aside1 visible-sm visible-xs visible-md visible-lg" id="nside1" style=" margin-top: 5em;float:right;">
+    <ul class="nav nav-pills nav-stacked">
+    {% for section in site.data.development-cn %}
+    <li><a href="#{{ section | first }}" data-toggle="collapse" class="navtitle">{{ section.title }}</a></li>
+    <div class="collapse in">
+  	<div class="list-group" id="list1">
+    <ul>
+    {% include dev_ul.cn.html items=section.dev %}
+        <ul>
+  </div>
+</div>
+    {% endfor %}
+
+    </ul>
+</div>
\ No newline at end of file
diff --git a/website/_includes/dev_ul.cn.html b/website/_includes/dev_ul.cn.html
new file mode 100644
index 0000000000..4f2877d6b8
--- /dev/null
+++ b/website/_includes/dev_ul.cn.html
@@ -0,0 +1,27 @@
+{% assign items = include.items %}
+
+
+
+{% for item in items %}
+   
+  {% assign item_url = item | prepend:"/cn/development/" | append:".html" %}
+
+  {% if item_url == page.url %}
+    {% assign c = "current" %}
+  {% else %}
+    {% assign c = "" %}
+  {% endif %}
+
+
+
+  {% for p in site.dev %}
+    {% if p.url == item_url %}
+      <li class="navlist">
+        <a href="{{ p.url }}" class="list-group-item-lay pjaxlink">{{p.title}}</a></li>      
+      {% break %}
+    {% endif %}
+  {% endfor %}
+
+{% endfor %}
+
+
diff --git a/website/_includes/header.cn.html b/website/_includes/header.cn.html
index 0631a33efd..278bd11328 100644
--- a/website/_includes/header.cn.html
+++ b/website/_includes/header.cn.html
@@ -43,8 +43,8 @@
             <li><a href="/cn">首页</a></li>
             <li><a href="/cn/docs" >文档</a></li>
             <li><a href="/cn/download">下载</a></li>
-            <li><a href="/community" >社区</a></li>
-            <li><a href="/development" >开发</a></li>
+            <li><a href="/cn/community" >社区</a></li>
+            <li><a href="/cn/development" >开发</a></li>
             <li><a href="/blog">博客</a></li>
             <li><a href="/" >English</a></li>           
         </ul>
diff --git a/website/_includes/home_header.cn.html b/website/_includes/home_header.cn.html
index c648477c1a..b5db6cc891 100644
--- a/website/_includes/home_header.cn.html
+++ b/website/_includes/home_header.cn.html
@@ -42,8 +42,8 @@
             <li><a href="/cn">首页</a></li>
             <li><a href="/cn/docs" >文档</a></li>
             <li><a href="/cn/download">下载</a></li>
-            <li><a href="/community" >社区</a></li>
-            <li><a href="/development" >开发</a></li>
+            <li><a href="/cn/community" >社区</a></li>
+            <li><a href="/cn/development" >开发</a></li>
             <li><a href="/blog">博客</a></li>
             <li><a href="/" >English</a></li>           
         </ul>
diff --git a/website/_layouts/community-cn.html b/website/_layouts/community-cn.html
index d6a9f0ec82..c8e4af2d77 100644
--- a/website/_layouts/community-cn.html
+++ b/website/_layouts/community-cn.html
@@ -19,11 +19,11 @@
 <!DOCTYPE html>
 <html>
 
-  {% include head.html %}
+  {% include head.cn.html %}
 
   <body>
 
-    {% include header.html %}
+    {% include header.cn.html %}
 <main id="main" >
   <div >
     <div id="zero" class=" main community" >
diff --git a/website/_layouts/dev-cn.html b/website/_layouts/dev-cn.html
new file mode 100644
index 0000000000..4745a14b05
--- /dev/null
+++ b/website/_layouts/dev-cn.html
@@ -0,0 +1,47 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<!doctype html>
+<html>
+	{% include head.cn.html %}
+	<body>
+		{% include header.cn.html %}
+		
+		<div class="container">
+			<div class="row"  style="clear:both;">
+				
+				<div class="col-md-8 col-lg-8 col-xs-12 col-sm-12 aside2" style="float: right;">
+					<div id="container" class="docs">
+						<div id="pjax">
+							<h1 class="post-title">{{ page.title }}</h1>
+							<article class="post-content" >
+							{{ content }}
+							</article>
+						</div>
+					</div>
+				</div>
+				{% include dev_nav.cn.html %}
+			</div>
+		</div>		
+		{% include footer.html %}
+
+	<script src="/assets/js/jquery-1.9.1.min.js"></script> 
+	<script src="/assets/js/bootstrap.min.js"></script> 
+	<script src="/assets/js/main.js"></script>
+	</body>
+</html>
diff --git a/website/_layouts/powered-cn.html b/website/_layouts/powered-cn.html
new file mode 100644
index 0000000000..df5f00dff3
--- /dev/null
+++ b/website/_layouts/powered-cn.html
@@ -0,0 +1,50 @@
+<!--
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<!DOCTYPE html>
+<html>
+
+  {% include head.cn.html %}
+
+  <body>
+
+    {% include header.cn.html %}
+<main id="main" >
+  <div >
+    <div id="zero" class=" main powered" >
+
+      <header style=" padding:2em 0 0 0">
+        <div class="container" >
+          <h4 class="index-title"><span>Apache Kylin™ 技术支持</span></h4>
+        </div>
+      </header>
+      <div class="container" >
+        {{ content }}
+      </div>
+    </div>
+  </div>
+</main>
+
+    {% include footer.html %}
+
+  <script src="/assets/js/jquery-1.9.1.min.js"></script> 
+  <script src="/assets/js/bootstrap.min.js"></script> 
+  <script src="/assets/js/main.js"></script>
+  </body>
+
+</html>
diff --git a/website/community/index.cn.md b/website/community/index.cn.md
new file mode 100644
index 0000000000..21d5fe92f6
--- /dev/null
+++ b/website/community/index.cn.md
@@ -0,0 +1,174 @@
+---
+layout: community-cn
+title: 社区
+permalink: /cn/community/index.html
+---
+<div class="container" >
+	<div class="row">
+		<div class="col-sm-6 col-md-6">
+		    <h2> Apache Kylin™ 技术支持 </h2>
+			<p>想要了解更多关于谁使用 Apache Kylin™,请参考 <a href="/cn/community/poweredby.html">技术支持</a> 页面。</p>
+		</div>
+
+		<div class="col-sm-6 col-md-6">
+		    <h2>社交媒体 </h2>
+		    <p>Kylin 官方的 Twitter 账号: <a href="https://twitter.com/ApacheKylin">@ApacheKylin</a></p>
+		</div>
+	</div>
+
+	<div class="row">
+		<div class="col-sm-6 col-md-6">
+		    <h2> Apache Kylin 邮件列表 </h2>
+
+		    <p>这是为这个工程建立的邮件列表。对于每一个列表,都有订阅、取消订阅和归档链接。</p>
+
+
+		    <p>  
+		    	<span>用户邮件列表</span>
+		    	<span>
+		    		<a href="mailto:user-subscribe@kylin.apache.org">订阅</a>
+		    	</span>
+		    	<span>
+		    		<a href="mailto:user-unsubscribe@kylin.apache.org">取消订阅</a>
+		    	</span>
+		    	<span>
+		    	    <a href="mailto:user@kylin.apache.org">提交</a>
+		    	</span>
+		    	<span>
+		    	    <a href="http://mail-archives.apache.org/mod_mbox/kylin-user/">mail-archives.apache.org</a>
+		    	</span>
+		    </p>
+
+		    <p>  
+		    	<span>开发者邮件列表</span>
+		    	<span>
+		    		<a href="mailto:dev-subscribe@kylin.apache.org">订阅</a>
+		    	</span>
+		    	<span>
+		    		<a href="mailto:dev-unsubscribe@kylin.apache.org">取消订阅</a>
+		    	</span>
+		    	<span>
+		    	    <a href="mailto:dev@kylin.apache.org">提交</a>
+		    	</span>
+		    	<span>
+		    	    <a href="http://mail-archives.apache.org/mod_mbox/kylin-dev//">mail-archives.apache.org</a>
+		    	</span>
+		    </p>
+
+		    <p>  
+		    	<span>Issues 邮件列表</span>
+		    	<span>
+		    		<a href="mailto:issues-subscribe@kylin.apache.org">订阅</a>
+		    	</span>
+		    	<span>
+		    		<a href="mailto:issues-unsubscribe@kylin.apache.org">取消订阅</a>
+		    	</span>
+		    	<span>N/A</span>
+		    	<span>
+		    	    <a href="http://mail-archives.apache.org/mod_mbox/kylin-issues/">mail-archives.apache.org</a>
+		    	</span>
+		    </p>
+
+		    <p>  
+		    	<span>Commits 邮件列表</span>
+		    	<span>
+		    		<a href="mailto:commits-subscribe@kylin.apache.org">订阅</a>
+		    	</span>
+		    	<span>
+		    		<a href="mailto:commits-unsubscribe@kylin.apache.org">取消订阅</a>
+		    	</span>
+		        <span>N/A</span>
+		    	<span>
+		    	    <a href="http://mail-archives.apache.org/mod_mbox/kylin-commits/">mail-archives.apache.org</a>
+		    	</span>
+		    </p>
+		</div>
+
+		<div class="col-sm-6 col-md-6">
+		    <h2>社区活动报告</h2>
+
+		    <p><a href="https://github.com/apache/kylin/pulse">Git Pulse</a></p>
+		    <p><a href="https://reporter.apache.org/?kylin">Apache 委员会报告</a></p>
+		</div>
+	</div>
+
+	<div class="row">
+		<div class="col-sm-6 col-md-6">
+		    <h2> 邮件列表档案 </h2>
+		    <p>为方便起见,有一个论坛风格的邮件列表存档,它不是官方 Apache 档案的一部分:</p>
+
+		    <p><a href="http://apache-kylin.74782.x6.nabble.com">Nabble 上的开发者列表档案</a></p>
+		</div>
+
+		<div class="col-sm-6 col-md-6">
+		    <h2>Apache Kylin 团队</h2>
+		    <p>一个成功的项目需要很多人扮演不同的角色。一些成员编写代码,提供项目指导或写文档。其他人作为有价值的测试人员,提交补丁和建议。</p>
+		</div>
+	</div>
+</div>
+
+<div class="kylin-member">
+	<div class="container">
+		<h2> PMC Members & Committer</h2>
+		<div class="clearfix">
+		{% for c in site.data.contributors %} 
+		  <div class="col-sm-6 col-md-4">
+		  	<div class="members-card">
+			  	<a href="http://github.com/{{ c.githubId }}"> 
+			  		<img class="github-pic" src="{% unless c.avatar %}http://github.com/{{ c.githubId }}.png{% else %}{{ c.avatar }}{% endunless %}">
+			  	</a>  
+			  	<p class="members-name"> {{ c.name }} </p> 
+				<p class="member-role">Org: {{ c.org }} </p>
+			  	<p class="members-role">Role : {{ c.role }}</p> 
+			  	<p>Apache ID : <a href="http://home.apache.org/phonebook.html?uid={{ c.apacheId }}" class="apache-id">{{ c.apacheId }}</a> </p>  
+			</div>
+		  </div>
+		{% endfor %}
+		</div>
+
+        <div class="contributors">
+			<p >详细的委员会信息在 <a href="https://projects.apache.org/committee.html?kylin">这里</a>。</p>
+			<p >详细的代码贡献在 <a href="https://github.com/apache/kylin/graphs/contributors">这里</a>。</p>
+
+		    <h5>其他的贡献者</h5>
+		    <table>
+		    <tr>  
+		    	<th>姓名</th>
+		    	<th>Github</th>
+		    	<th></th>
+		    </tr>
+		    <tr>  
+		    	<td>Rui Feng</td>
+		    	<td><a href="https://github.com/fengrui129">fengrui129</a></td>
+		    	<td>网站设计,Kylin Logo</td>
+		    </tr>
+		    <tr>  
+		    	<td>Luffy Xiao</td>
+		    	<td><a href="http://github.com/luffy-xiao">luffy-xiao</a></td>
+		    	<td>Kylin Web 应用,REST 服务</td>
+		    </tr>
+		    <tr>  
+		    	<td>Kejia Wang</td>
+		    	<td><a href="https://github.com/Kejia-Wang">Kejia-Wang</a></td>
+		    	<td>Web 应用, 网站</td>
+		    </tr>
+		    <tr>  
+		    	<td>Yue Yang</td>
+		    	<td></td>
+		    	<td>Web 应用 UI 设计</td>
+		    </tr>
+		    </table>
+		</div>
+	</div>
+</div>
+
+<div class="container credits">
+  <h2> 荣誉</h2>
+  <ul>
+  	<li>感谢 <a href="https://www.ebayinc.com/">eBay Inc.</a> 将这个项目贡献到开源社区,首先在 <a href="http://www.ebaytechblog.com/2014/10/20/announcing-kylin-extreme-olap-engine-for-big-data/">eBay Techblog</a>宣布。</li>
+  	<li>感谢 <a href="https://www.jetbrains.com/">JetBrains</a> 为我们提供 <a href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a> 的免费 license。</li>
+  	<li>感谢 <a href="vikash_agarwal@hotmail.com">Vikash Agarwal</a>,他的文章 <a href="http://www.drdobbs.com/windows/odbc-driver-development/184416434?pgno=5">ODBC Driver Development</a> 和示例代码介绍了如何从头开始编写 ODBC 驱动程序的基本思想。</li>
+  </ul>
+
+</div>
+
diff --git a/website/community/index.md b/website/community/index.md
index 384aab6eb7..5a62352243 100644
--- a/website/community/index.md
+++ b/website/community/index.md
@@ -88,7 +88,6 @@ permalink: /community/index.html
 		    <h2>Community Activity Report</h2>
 
 		    <p><a href="https://github.com/apache/kylin/pulse">Git Pulse</a></p>
-		    <p><a href="https://github.com/apache/kylin/graphs">Git Graphs</a></p>
 		    <p><a href="https://reporter.apache.org/?kylin">Apache Committee Report</a></p>
 		</div>
 	</div>
@@ -151,12 +150,12 @@ permalink: /community/index.html
 		    <tr>  
 		    	<td>Kejia Wang</td>
 		    	<td><a href="https://github.com/Kejia-Wang">Kejia-Wang</a></td>
-		    	<td>Web aplication, Website</td>
+		    	<td>Web application, Website</td>
 		    </tr>
 		    <tr>  
 		    	<td>Yue Yang</td>
 		    	<td></td>
-		    	<td>Web aplication UI design</td>
+		    	<td>Web application UI design</td>
 		    </tr>
 		    </table>
 		</div>
diff --git a/website/community/poweredby.cn.md b/website/community/poweredby.cn.md
new file mode 100644
index 0000000000..c458bb47b4
--- /dev/null
+++ b/website/community/poweredby.cn.md
@@ -0,0 +1,65 @@
+---
+layout: powered-cn
+title: 技术支持
+permalink: /cn/community/poweredby.html
+---		
+
+__如何在这里列出?__
+发送一个您组织和使用情况的简短描述给[邮件列表](mailto:user@kylin.apache.org)或给 [@apachekylin](https://twitter.com/apachekylin) 或给 twitter 上的 [@lukehq](https://twitter.com/lukehq) 然后我们将会添加您。
+
+__公司 & 组织__
+
+* [Hobsons, Inc.](https://www.hobsons.com/), 2018-08-11
+    * Hobsons 解决方案使教育工作者能够改善大学和职业规划,招生和入学管理,学生成功和建议。Hobsons 使用 Apache Kylin 为教育者提供有关学校表现和学生成功指标的宝贵见解。
+
+* [DiDi](http://www.didiglobal.com/), 2018-06-27
+    * Apache Kylin 作为 Didi 中 OLAP 的特定场景引擎运行。借助聚合缓存功能,它已经为 10 多条业务线和 3000 多个用户提供服务,为我们提供稳定,可靠和高性能的数据服务。想要了解更多请阅读[此博客](https://mp.weixin.qq.com/s/WDaSJHeHvWTDjGkUR7zmfg)。 
+
+* [StrateBI](http://www.stratebi.com/), 2018-05-23
+    * Apache Kylin 已成为我们大数据项目的重要组成部分。我们已成功为数字营销和零售客户部署了 Kylin,其中数据刷新(分钟)和查询延迟(亚秒)的要求非常严格,而数据量仍然非常高(十亿行)。此外,为了尝试及展示 Kylin 功能,我们创建了一些与 [Tableau](http://bigdata.stratebi.com/kylin-tableau/index.htm),[Superset](http://bigdata.stratebi.com/kylin-superset/index.htm) 甚至基于 [Mondrian MDX](http://bigdata.stratebi.com/kylin-olap/index.htm) 的工具集成的演示。
+* [Grow Force](http://www.300.cn/), 2018-01-02
+    * Grow Force 主要在新的数据仓库系统和 BI 报告的数据计算中使用 Kylin。一方面,它提高了我们的开发效率,并且消除了开发人员手动编写 HQL/SQL 语句以查询维度数据的需要;另一方面,它解耦了现有的系统设计。因此,数据计算层主要包括 Spark 的实时计算和 HQL 的离线计算。引入 Kylin 后,整个离线计算可以迁移到 Kylin,大大提高了灵活性。 
+* [ZTE 中兴](http://www.zte.com.cn/), 2017-11-09
+    * Apache Kylin 是 ZTE 大数据平台的基础组件之一。ZTE 使用 Apache Kylin 为电信,政府,银行,金融和其他行业的客户提供 OLAP 功能。
+* [4399.com](http://www.4399.com/), 2017-07-30
+    * Apache Kylin 在 4399.com 上用于 Hadoop 上的大数据分析,它允许我们以亚秒级延迟查询海量数据集。
+* [Wuba (58.com)](https://www.58.com)  (_NYSE:WUBA_), 2017-07-28
+    * Apache Kylin 在 Wuba 的大数据平台上用作 OLAP 引擎,为推荐引擎,搜索引擎,广告引擎,BI 等提供数据分析。每天在 crontab 下构建 100 多个立方体。查询统计信息显示,超过 95% 的查询可以在不到一秒的时间内获得响应,这提供了比传统工具更好的用户体验。并且可以通过添加机器来简单地解决资源瓶颈,这对于管理员来说是特别友好的。
+* [Yahoo! Japan](https://about.yahoo.co.jp/info/en/), 2017-05-22
+    * Yahoo! JAPAN 使用 Apache Kylin 为 Yahoo! Shopping 生成量身定制的报告。Apache Kylin 最大限度地减少了查看报告的延迟。因而,平台团队从提升性能的特定任务中解放出来且其能专注于为用户添加新功能。
+* [Strikingly](https://strikingly.com/), 2017-05-22
+    * Strikingly 采用 Kylin + AWS EMR 解决方案。通过采用 Kylin,查询性能从 5~10 秒提高到只需不到 1 秒,现在可以提供更多的并发请求。当工作负载和数据增加时,我们只需要按需添加 EMR 节点然后容量就得以扩展。这种架构确保我们不必担心未来几年的数据增长。
+* [Qunar](https://www.qunar.com)  (_NASDAQ:QUNR_), 2017-04-18
+    * Apache Kylin 在 Qunar 中用来在 Hadoop 上作为数据分析引擎,它为飞行业务提供了强大的OLAP功能,并具有良好的性能。
+* [Toutiao](https://www.toutiao.com/), 2017-04-17
+    * 作为中国最流行的手机新闻 app,Toutiao 每天有超过 7800 万的活跃用户(数据是 2017 年 2 月收集),我们需要在**万亿级**数据上使用 OLAP 功能,只有 Kylin 才能实现。举个例子,用于视频分析的 Cube 拥有超过 2.4 万亿个源记录,占用 4+ TB 存储空间(源文件超过 100 TB);大多数查询可以在不到 1 秒的时间内完成(相同的查询在 Hive 中需要几个小时)。从另一个角度来看,Kylin 减轻了我们 Hadoop 集群的压力。这就是所谓的“一次构建,多次使用”。
+* [LeEco](http://www.leeco.com/), 2017-04-16
+    * Apache Kylin 已经被用作 LeEco 大数据平台的 OLAP 引擎和数据查询引擎的一部分,LeEco 正在为各种大数据业务提供支持,例如流媒体数据和云数据。
+* [Gome](https://www.gome.com.cn/), 2017-04-14
+    * Apache Kylin 为 Gome 的在线运营顾问提供了完美的解决方案。它不仅提高了分析性能,还提高了生产率。我们在 T + 1 批处理和实时分析中采用了 Kylin。它是我们场景中最好的 OLAP 解决方案。
+* [Sohu](https://www.sohu.com)   (_NASDAQ: SOHU_), 2017-04-13
+    * 在 Sohu,Apache Kylin 是运行在 Hadoop 上的分析引擎,服务于多个业务领域,包括广告分析,流量预测等。
+* [Meizu](https://www.meizu.com), 2017-04-13
+    * Meizu 技术在其统计分析平台和自助服务分析平台上成功地采用了 Apache Kyin,克服了传统 RDBMS 在海量数据上的性能瓶颈。
+* [iQIYI](http://www.iqiyi.com/), 2017-04-13
+    * Apache Kylin 被用作 iQIYI 大数据分析平台的一部分。它为各种 OLAP 场景提供了强大的性能,并简化了数据处理过程。
+* [glispa](https://www.glispa.com/), 2016-09-16  
+    * glispa 在其数据管理平台中使用 Apache Kylin 作为 OLAP 组件。它使我们能够满足对大量数据进行实时分析的延迟要求。这有助于我们的数据科学家和分析师以快速的特设方式理解 DMP 中难以理解的数据。
+* [NetEase](http://www.163.com/)  (_NASDAQ: NTES_), 2015-12-04
+    * Apache Kylin 已作为 NetEase 数据平台的 OLAP 引擎推出,为各种产品和业务提供数据分析,并具有很好的性能。
+* [Baidu Map](http://map.baidu.com/)  (_NASDAQ: BIDU_), 2015-12-04
+    * Apache Kylin 被用来分析百度地图的大量关于用户,渠道及其它的数据,因其自身的预计算、索引技术及 cubes,展现出极快的一面
+* [Exponential](http://www.exponential.com), 2015-11-05
+    * 使用 Kylin 作为其数据平台 LAMBDA 的一个组件,为广告提供财产目录,活动,行为和需求分析。它在处理旧的生成系统的尺寸和速度限制方面表现出色。第一个版本已经投入生产,我们期待将更多数据推送到 kylin 并实现近乎实时的更新。
+* [DreamSoft](http://www.dream-it.cn/), 2015-11-05
+    * DreamSoft 使用 Apache Kylin 作为大数据分析引擎,为来自零售业,制造业,财务业等的客户提供服务。
+* [VIP.com](http://www.vip.com)  (_NYSE: VIPS_), 2015-11-05
+    * Apache Kylin 用于 VIP.com 的大数据自助分析平台。Apache Kylin 为我们提供了一个新选项,使用户体验更加友好,并让我们有机会将 Cube 引回到大数据。
+* [Meituan.com](http://www.meituan.com), 2015-11-05
+    * Apache Kylin 正在为 Meituan 的数据平台提供各种 OLAP 方案,例如流量分析和支付渠道分析。它非常稳定,速度非常快。我们也非常愿意在其他产品上尝试 Kylin。
+* [MiningLAMP](http://www.mininglamp.com), 2015-11-05
+    * Apache Kylin 是 MiningLAMP 的大数据分析产品的一部分,该产品为银行,金融和其他行业的客户提供 OLAP 功能。
+* [JD.com, Inc.](http://www.jd.com)  (_NASDAQ: JD_), 2015-11-05
+    * Apache Kylin 作为数据分析引擎,用于分析 [JOS](http://jos.jd.com) API 访问并报告到 [JCloud](http://www.jcloud.com)。
+* [eBay](http://www.ebay.com)  (_NASDAQ: EBAY_), 2015-11-05
+    * Apache Kylin 在 eBay 用于 Hadoop 上的大数据分析。为各种数据产品提供支持,包括行为分析,流量报告,帐户管理器应用程序和流式仪表板。
\ No newline at end of file
diff --git a/website/community/poweredby.md b/website/community/poweredby.md
index e95e4e26f2..d86ea37aaf 100644
--- a/website/community/poweredby.md
+++ b/website/community/poweredby.md
@@ -18,7 +18,7 @@ __Companies & Organizations__
 * [StrateBI](http://www.stratebi.com/), 2018-05-23
     * Apache Kylin has become an essential part in our Big Data projects. We have deployed Kylin with successful for a digital marketing and retail customers, where requirements for data refreshing (minutes) and query latency (sub-second) were very strict while data volumes remain very high (billion rows). Moreover, in order to try and show Kylin features, we have created some demos integrating it with [Tableau](http://bigdata.stratebi.com/kylin-tableau/index.htm), [Superset](http://bigdata.stratebi.com/kylin-superset/index.htm) or even [Mondrian MDX](http://bigdata.stratebi.com/kylin-olap/index.htm) based tools.
 * [Grow Force](http://www.300.cn/), 2018-01-02
-    * Kyin in Grow Force are mainly in the new data warehouse system and the data computing of BI reports. On one hand, it increases our development efficiency and eliminates the need for the developer to manually write HQL/SQL statement to query dimension data; on the other hand, it decouples the existing system design. The data computing layer thus mainly includes the real-time calculation of Spark and the offline calculation of HQL. After Kylin being introduced, the whole offline calculation can be moved to Kylin, which improves the flexibility greatly. 
+    * Kylin in Grow Force are mainly in the new data warehouse system and the data computing of BI reports. On one hand, it increases our development efficiency and eliminates the need for the developer to manually write HQL/SQL statement to query dimension data; on the other hand, it decouples the existing system design. The data computing layer thus mainly includes the real-time calculation of Spark and the offline calculation of HQL. After Kylin being introduced, the whole offline calculation can be moved to Kylin, which improves the flexibility greatly. 
 * [ZTE 中兴](http://www.zte.com.cn/), 2017-11-09
     * Apache Kylin is one of the foundational components of ZTE's Big Data Platform. ZTE uses Apache Kylin to provide OLAP capabilities to customers in the  telecom, government, banking, finance and other industries.
 * [4399.com](http://www.4399.com/), 2017-07-30
@@ -58,7 +58,7 @@ __Companies & Organizations__
 * [Meituan.com](http://www.meituan.com), 2015-11-05
     * Apache Kylin is powering various OLAP scenarios at Meituan's Data Platform, such as traffic analysis and payment channel analysis. It's quite stable and super fast. We are very willing to try Kylin on other product as well.
 * [MiningLAMP](http://www.mininglamp.com), 2015-11-05
-    * Apache Kylin is part of MiningLAMP's Big Data Analytics product offering OLAP capability for customers from Banking, Finance and others industuies.
+    * Apache Kylin is part of MiningLAMP's Big Data Analytics product offering OLAP capability for customers from Banking, Finance and others industries.
 * [JD.com, Inc.](http://www.jd.com)  (_NASDAQ: JD_), 2015-11-05
     * Apache Kylin as Data Analytics Engine to analysis [JOS](http://jos.jd.com) API access behavior and report in [JCloud](http://www.jcloud.com).
 * [eBay](http://www.ebay.com)  (_NASDAQ: EBAY_), 2015-11-05


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> Chinese translation of community, development docs
> --------------------------------------------------
>
>                 Key: KYLIN-3498
>                 URL: https://issues.apache.org/jira/browse/KYLIN-3498
>             Project: Kylin
>          Issue Type: Improvement
>          Components: Documentation
>            Reporter: Na Zhai
>            Assignee: Na Zhai
>            Priority: Minor
>
> There are many active Chinese users in Kylin community, a Chinese translation of community, development docs will be very helpful to Kylin newbies and experienced Kylin users as well.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message