You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/09/13 08:44:43 UTC

[kylin] branch document updated: Update howto release and streaming tutorial

This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a commit to branch document
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/document by this push:
     new e188ae8  Update howto release and streaming tutorial
e188ae8 is described below

commit e188ae80ce1eee660d543777db33de1ae60c323f
Author: shaofengshi <sh...@apache.org>
AuthorDate: Thu Sep 13 16:44:33 2018 +0800

    Update howto release and streaming tutorial
---
 website/_dev/howto_release.cn.md            |  95 +++++++++++--------------
 website/_dev/howto_release.md               | 106 ++++++++++++----------------
 website/_docs/tutorial/cube_streaming.cn.md |   5 +-
 website/_docs/tutorial/cube_streaming.md    |   5 +-
 4 files changed, 92 insertions(+), 119 deletions(-)

diff --git a/website/_dev/howto_release.cn.md b/website/_dev/howto_release.cn.md
index 5613c4c..9582768 100644
--- a/website/_dev/howto_release.cn.md
+++ b/website/_dev/howto_release.cn.md
@@ -18,6 +18,9 @@ _对于中国用户,请谨慎使用代理以避免潜在的防火墙问题。_
 * 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)  
 
+## 安装使用 Java 8 和 Maven 3.5.3+
+开始之前,确保已经安装了 Java 8,以及 Maven 3.5.3 或更高版本。
+
 ## 设置 GPG 签名密钥  
 按照 [http://www.apache.org/dev/release-signing](http://www.apache.org/dev/release-signing) 上的说明创建密钥对  
 安装 gpg (以 Mac OS X 为例):  
@@ -138,8 +141,12 @@ $ mvn -Papache-release -DskipTests -Dgpg.passphrase=${GPG_PASSPHRASE} deploy
 {% endhighlight %}
 
 __准备__
+检查并确保你可以 ssh 连接到 github:
+{% highlight bash %}
+ssh -T git@github.com
+{% endhighlight %}
 
-创建一个以 release 后命名的发布分支,例如,v0.7.2-release,并将其推到 Apache。  
+基于要当前的开发分支,创建一个以 release 版本号命名的发布分支,例如,v2.5.0-release,并将其推到服务器端。  
 {% highlight bash %}
 $ git checkout -b vX.Y.Z-release
 $ git push -u origin vX.Y.Z-release
@@ -154,22 +161,22 @@ $ read -s GPG_PASSPHRASE
 $ git clean -xf
 $ mvn clean
 
-# Optionally, do a dry run of the release:prepare step, which sets version numbers.
+# 可选的, 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-X.Y.Z-SNAPSHOT-source-release.zip
+  * apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc
+  * apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc.sha256
+  * apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.sha256
+* 移除 .zip.asc.sha256 文件因为不需要。
 * 注意文件名以 `apache-kylin-` 开始
-* 在源发行版 `.tar.gz` 中,检查所有文件是否属于名为 `apache-kylin-X.Y.Z-src` 的目录。
+* 在源发行版 `.zip` 文件中,检查所有文件是否属于名为 `apache-kylin-X.Y.Z-SNAPSHOT` 的目录。
 * 该目录必须包含 `NOTICE`, `LICENSE`, `README.md` 文件
-* 按[此](https://httpd.apache.org/dev/verification.html)检查 PGP
+* 按[此](https://httpd.apache.org/dev/verification.html)检查 PGP。
 
 __运行真实的 release:__
 现在真正开始 release  
@@ -224,31 +231,15 @@ $ cd target
 $ mkdir ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN
 $ mv apache-kylin-* ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN
 
+## Remove the .zip.asc.sha256 file as it is not needed.
+$ rm ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN/apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc.sha256
+
 ## 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
@@ -260,27 +251,23 @@ $ 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.)_
+# Sign/check sha256 hashes
+# (Assumes your O/S has a 'shasum' command.)
 function checkHash() {
   cd "$1"
-  for i in *.{zip,asc}; do
+  for i in *.{pom,gz}; 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
+    if [ -f $i.sha256 ]; then
+      if [ "$(cat $i.sha256)" = "$(shasum -a 256 $i)" ]; then
+        echo $i.sha256 present and correct
       else
-        echo $i.sha1 does not match
+        echo $i.sha256 does not match
       fi
+    else
+      shasum -a 256 $i > $i.sha256
+      echo $i.sha256 created
     fi
   done
 };
@@ -316,9 +303,8 @@ 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
+The hash of the artifact is as follows:
+apache-kylin-X.Y.Z-source-release.zip.sha256 xxx
 
 A staged Maven repository is available for review at:
 https://repository.apache.org/content/repositories/orgapachekylin-XXXX/
@@ -345,7 +331,7 @@ Here is my vote:
 
 投票完成后,发出结果:  
 {% highlight text %}
-Subject: [RESULT] [VOTE] Release apache-kylin-X.Y.Z (RC[N])
+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
@@ -362,12 +348,11 @@ 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),
@@ -429,13 +414,13 @@ svn commit -m 'Remove old release'
 * 通过参考[此文档](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
+  gpg --armor --output apache-kylin-2.5.0-bin.tar.gz.asc --detach-sig apache-kylin-2.5.0-bin.tar.gz
   {% endhighlight %}
-* 生成二进制包的 md5 文件,例如:
+* 生成二进制包的 sha256 文件,例如:
   {% highlight bash %}
-  md5sum < apache-kylin-1.5.0-bin.tar.gz > apache-kylin-1.5.0-bin.tar.gz.md5
+  shasum -a 256 apache-kylin-2.5.0-bin.tar.gz > apache-kylin-2.5.0-bin.tar.gz.sha256
   {% endhighlight %}
-* 将二进制包,签名文件和 md5 文件推送到 svn __dev__ 仓库,然后运行 `svn mv <files-in-dev> <files-in-release>` 命令将他们移动到 svn __release__ 仓库。
+* 将二进制包,签名文件和 sha256 文件推送到 svn __dev__ 仓库,然后运行 `svn mv <files-in-dev> <files-in-release>` 命令将他们移动到 svn __release__ 仓库。
 * 对于不同的 Hadoop/HBase 版本,您可能需要上述步骤;
 * 添加文件,然后将更改提交 svn。 
 
@@ -459,10 +444,10 @@ svn commit -m 'Remove old release'
 这是一个公告电子邮件的样本(通过研究 Kafka):
 
 {% highlight text %} 
-The Apache Kylin team is pleased to announce the immediate availability of the 2.1.0 release. 
+The Apache Kylin team is pleased to announce the immediate availability of the 2.5.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
+This is a major release after 2.4, with more than 100 bug fixes and enhancements; All of the changes in this release can be found in:
+https://kylin.apache.org/docs/release_notes.html
 
 You can download the source release and binary packages from Apache Kylin's download page: https://kylin.apache.org/download/
 
diff --git a/website/_dev/howto_release.md b/website/_dev/howto_release.md
index 0117b28..dd98b4c 100644
--- a/website/_dev/howto_release.md
+++ b/website/_dev/howto_release.md
@@ -18,6 +18,9 @@ Make sure you have avaliable account and privilege for following applications:
 * 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)  
 
+## Install Java 8 and Maven 3.5.3+
+Make sure you have Java 8 and Maven 3.5.3 or above installed.
+
 ## Setup GPG signing keys  
 Follow instructions at [http://www.apache.org/dev/release-signing](http://www.apache.org/dev/release-signing) to create a key pair  
 Install gpg (On Mac OS X as sample):  
@@ -139,7 +142,12 @@ $ mvn -Papache-release -DskipTests -Dgpg.passphrase=${GPG_PASSPHRASE} deploy
 
 __Prepare__
 
-Create a release branch named after the release, e.g. v0.7.2-release, and push it to Apache.  
+Make sure your can ssh connection to github:
+{% highlight bash %}
+ssh -T git@github.com
+{% endhighlight %}
+
+Create a branch for release work from your current development branch, named with this release version, e.g. v2.5.0-release, and then push it to Apache.  
 {% highlight bash %}
 $ git checkout -b vX.Y.Z-release
 $ git push -u origin vX.Y.Z-release
@@ -154,23 +162,23 @@ $ read -s GPG_PASSPHRASE
 $ git clean -xf
 $ mvn clean
 
-# Optionally, do a dry run of the release:prepare step, which sets version numbers.
+# Optionally, do a dry run of the release:prepare step, which sets version numbers. e.g. releaseVersion=2.5.0, developmentVersion=2.5.1-SNAPSHOT, use default tag kylin-2.5.0
 $ 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 %}
 
 __Check the dry run output:__
 
 * In the `target` directory should be these 8 files, among others:
-  * 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
-* Remove the .zip, .zip.asc, .zip.md5 and zip.sha1 file as they are not needed.
+  * apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip
+  * apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc
+  * apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc.sha256
+  * apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.sha256
+* Remove the .zip.asc.sha256 file as it is not needed.
 * Note that the file names start `apache-kylin-`.
-* In the source distro `.tar.gz`, check that all files belong to a directory called
-  `apache-kylin-X.Y.Z-src`.
+* In the source distro `.zip`, check that all files belong to a directory called
+  `apache-kylin-X.Y.Z-SNAPSHOT`.
 * That directory must contain files `NOTICE`, `LICENSE`, `README.md`
-* Check PGP, per [this](https://httpd.apache.org/dev/verification.html)
+* Check PGP, per [this](https://httpd.apache.org/dev/verification.html).
 
 __Run real release:__
 Now, run the release for real.  
@@ -182,25 +190,6 @@ $ mvn -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=(X.Y.Z+1)-SNAPSHOT
 $ mvn -DskipTests -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests" release:perform
 {% endhighlight %}
 
-__Cleaning up after a failed release attempt:__
-{% 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 %}
-
 __Close the staged artifacts in the Nexus repository:__
 
 * Go to [https://repository.apache.org/](https://repository.apache.org/) and login
@@ -208,7 +197,7 @@ __Close the staged artifacts in the Nexus repository:__
 * In the `Staging Repositories` tab there should be a line with profile `org.apache.kylin`
 * Navigate through the artifact tree and make sure the .jar, .pom, .asc files are present
 * Check the box on in the first column of the row, and press the 'Close' button to publish the repository at
-  [https://repository.apache.org/content/repositories/orgapachekylin-1006](https://repository.apache.org/content/repositories/orgapachekylin-1006)
+  [https://repository.apache.org/content/repositories/orgapachekylin-1055](https://repository.apache.org/content/repositories/orgapachekylin-1055)
   (or a similar URL)
 
 __Upload to staging area:__  
@@ -225,6 +214,9 @@ $ cd target
 $ mkdir ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN
 $ mv apache-kylin-* ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN
 
+## Remove the .zip.asc.sha256 file as it is not needed.
+$ rm ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN/apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc.sha256
+
 ## Check in
 $ cd ~/dist/dev/kylin
 $ svn add apache-kylin-X.Y.Z-rcN
@@ -261,27 +253,23 @@ $ 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.)_
+# Sign/check sha256 hashes
+# (Assumes your O/S has a 'shasum' command.)
 function checkHash() {
   cd "$1"
-  for i in *.{zip,asc}; do
+  for i in *.{pom,gz}; 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
+    if [ -f $i.sha256 ]; then
+      if [ "$(cat $i.sha256)" = "$(shasum -a 256 $i)" ]; then
+        echo $i.sha256 present and correct
       else
-        echo $i.sha1 does not match
+        echo $i.sha256 does not match
       fi
+    else
+      shasum -a 256 $i > $i.sha256
+      echo $i.sha256 created
     fi
   done
 };
@@ -306,7 +294,7 @@ 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
+https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12316121&version=12343540
 
 The commit to be voted upon:
 
@@ -317,9 +305,8 @@ 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
+The hashe of the artifact is as follows:
+apache-kylin-X.Y.Z-source-release.zip.sha256 xxx
 
 A staged Maven repository is available for review at:
 https://repository.apache.org/content/repositories/orgapachekylin-XXXX/
@@ -346,7 +333,7 @@ Here is my vote:
 
 After vote finishes, send out the result:  
 {% highlight text %}
-Subject: [RESULT] [VOTE] Release apache-kylin-X.Y.Z (RC[N])
+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
@@ -363,7 +350,6 @@ No 0s or -1s.
 Therefore I am delighted to announce that the proposal to release
 Apache-Kylin-X.Y.Z has passed.
 
-Luke
 
 {% endhighlight %}
 
@@ -411,7 +397,7 @@ Svnpubsub will publish to
 [https://dist.apache.org/repos/dist/release/kylin](https://dist.apache.org/repos/dist/release/kylin) and propagate to
 [http://www.apache.org/dyn/closer.cgi/kylin](http://www.apache.org/dyn/closer.cgi/kylin) within 24 hours.
 
-If there are now more than 2 releases, clear out the oldest ones:
+If there are more than 2 releases, clear out the oldest ones:
 
 {% highlight bash %}
 cd ~/dist/release/kylin
@@ -432,13 +418,13 @@ After publish the release, you need generate the binary packages and then put th
 * Make a binary package by refering to [this doc](howto_package.html);
 * Sign the generated binary package with gpg, e.g,:
   {% highlight bash %}
-  gpg --armor --output apache-kylin-1.5.0-bin.tar.gz.asc --detach-sig apache-kylin-1.5.0-bin.tar.gz
+  gpg --armor --output apache-kylin-2.5.0-bin.tar.gz.asc --detach-sig apache-kylin-2.5.0-bin.tar.gz
   {% endhighlight %}
-* Generate the md5 file for the binary package, e.g,:
+* Generate the sha256 file for the binary package, e.g,:
   {% highlight bash %}
-  md5sum < apache-kylin-1.5.0-bin.tar.gz > apache-kylin-1.5.0-bin.tar.gz.md5
+  shasum -a 256 apache-kylin-2.5.0-bin.tar.gz > apache-kylin-2.5.0-bin.tar.gz.sha256
   {% endhighlight %}
-* Push the binary package, the signature file and the md5 file to the svn __dev__ repo, then run `svn mv <files-in-dev> <files-in-release>` to move them to svn __release__ repo.
+* Push the binary package, the signature file and the sha256 file to the svn __dev__ repo, then run `svn mv <files-in-dev> <files-in-release>` to move them to svn __release__ repo.
 * For different Hadoop/HBase version, you may need repeat the above steps;
 * Add the files and then commit the svn changes. 
 
@@ -452,7 +438,7 @@ After publish the release, you need to manually update some source code:
 Refer to [How to document](howto_docs.html) for more detail.
 
 ## Send announcement mail to mailing list
-Send one mail with subject like "[Announce] Apache Kylin x.y.z released" to following list:
+Send one mail with subject like "[Announce] Apache Kylin X.Y.Z released" to following list:
 
 * Apache Kylin Dev mailing list: dev@kylin.apache.org
 * Apache Kylin User mailing list: user@kylin.apache.org
@@ -462,10 +448,10 @@ Send one mail with subject like "[Announce] Apache Kylin x.y.z released" to foll
 Here is a sample of announcement email (by studying Kafka's):
 
 {% highlight text %} 
-The Apache Kylin team is pleased to announce the immediate availability of the 2.1.0 release. 
+The Apache Kylin team is pleased to announce the immediate availability of the 2.5.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
+This is a major release after 2.4, with more than 100 bug fixes and enhancements; All of the changes in this release can be found in:
+https://kylin.apache.org/docs/release_notes.html
 
 You can download the source release and binary packages from Apache Kylin's download page: https://kylin.apache.org/download/
 
@@ -476,7 +462,7 @@ Apache Kylin lets you query massive data set at sub-second latency in 3 steps:
 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.
+Thanks everyone who have contributed to the 2.5.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
diff --git a/website/_docs/tutorial/cube_streaming.cn.md b/website/_docs/tutorial/cube_streaming.cn.md
index 2433554..92f1035 100644
--- a/website/_docs/tutorial/cube_streaming.cn.md
+++ b/website/_docs/tutorial/cube_streaming.cn.md
@@ -7,7 +7,7 @@ permalink: /cn/docs/tutorial/cube_streaming.html
 Kylin v1.6 发布了可扩展的 streaming cubing 功能,它利用 Hadoop 消费 Kafka 数据的方式构建 cube,您可以查看 [这篇博客](/blog/2016/10/18/new-nrt-streaming/) 以进行高级别的设计。本文档是一步接一步的阐述如何创建和构建样例 cube 的教程;
 
 ## 前期准备
-您需要一个安装了 kylin v1.6.0 或以上版本和可运行的 Kafka(v0.10.0 或以上版本)的 Hadoop 环境;先前的 Kylin 版本有一定的问题因此请首先升级您的 Kylin 实例。
+您需要一个安装了 kylin v1.6.0 或以上版本和可运行的 Kafka(v0.10.0 或以上版本)的 Hadoop 环境。
 
 本教程中我们使用 Hortonworks HDP 2.2.4 Sandbox VM + Kafka v0.10.0(Scala 2.10) 作为环境。
 
@@ -92,7 +92,8 @@ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kylin_st
 ## 定义数据模型
 有了上一步创建的表,现在我们可以创建数据模型了。步骤和您创建普通数据模型是一样的,但有两个要求:
 
-* Streaming Cube 不支持与 lookup 表进行 join;当定义数据模型时,只选择 fact 表,不选 lookup 表;
+* 在 v2.4.0 以前,Streaming Cube 不支持与 lookup 表进行 join;当定义数据模型时,只选择 fact 表,不选 lookup 表;
+* 如果您使用的是 v2.4.0 或更高版本,可以添加多个 lookup 表到模型中, 所有 lookup 表需要是 Hive 表;
 * Streaming Cube 必须进行分区;如果您想要在分钟级别增量的构建 Cube,选择 "MINUTE_START" 作为 cube 的分区日期列。如果是在小时级别,选择 "HOUR_START"。
 
 这里我们选择 13 个 dimension 和 2 个 measure 列:
diff --git a/website/_docs/tutorial/cube_streaming.md b/website/_docs/tutorial/cube_streaming.md
index 0989b04..779b251 100644
--- a/website/_docs/tutorial/cube_streaming.md
+++ b/website/_docs/tutorial/cube_streaming.md
@@ -7,7 +7,7 @@ permalink: /docs/tutorial/cube_streaming.html
 Kylin v1.6 releases the scalable streaming cubing function, it leverages Hadoop to consume the data from Kafka to build the cube, you can check [this blog](/blog/2016/10/18/new-nrt-streaming/) for the high level design. This doc is a step by step tutorial, illustrating how to create and build a sample cube;
 
 ## Preparation
-To finish this tutorial, you need a Hadoop environment which has kylin v1.6.0 or above installed, and also have a Kafka (v0.10.0 or above) running; Previous Kylin version has a couple issues so please upgrade your Kylin instance at first.
+To finish this tutorial, you need a Hadoop environment which has kylin v1.6.0 or above installed, and also have a Kafka (v0.10.0 or above) running.
 
 In this tutorial, we will use Hortonworks HDP 2.2.4 Sandbox VM + Kafka v0.10.0(Scala 2.10) as the environment.
 
@@ -92,7 +92,8 @@ Click "Submit" to save the configurations. Now a "Streaming" table is created.
 ## Define data model
 With the table defined in previous step, now we can create the data model. The step is almost the same as you create a normal data model, but it has two requirement:
 
-* Streaming Cube doesn't support join with lookup tables; When define the data model, only select fact table, no lookup table;
+* Before v2.4.0, Streaming Cube doesn't support join with lookup tables; When define the data model, only select fact table, no lookup table;
+* If with v2.4.0 or above, you can add lookup tables to the data model. All lookup tables need to be Hive tables;
 * Streaming Cube must be partitioned; If you're going to build the Cube incrementally at minutes level, select "MINUTE_START" as the cube's partition date column. If at hours level, select "HOUR_START".
 
 Here we pick 13 dimension and 2 measure columns: