搭建开发环境

    跟随这个教程,您可以通过运行一个具体测试样例构建 Kylin 测试 cubes,且您能针对已构建的 cube 进一步运行其它测试样例。

    Off-Hadoop-CLI 安装需要您有一个有 hadoop 客户端的机器(或一个 hadoop 沙箱)以及本地开发机器。为了简化操作,我们强烈建议您从 hadoop 沙箱上运行 Kylin 开始。在下面的教程中,我们将使用 Hortonworks®Sandbox2.4.0.0-169,您可以从 Hortonworks 下载页面下载它,展开“Hortonworks Sandbox Archive”链接,然后搜索“HDP® 2.4 on Hortonworks Sandbox”进行下载。建议您为沙箱虚拟机提供足够的内存,首选 8G 或更多。
    提示:使用HDP-2.4.0.0.169沙箱并使用10GB或者更多内存进行部署会更好。一些新版本的HDP沙箱使用docker部署它们的集群服务并且封装在虚拟机里面。你需要上传你的项目到docker容器中来运行集成测试,这不太方便。更高的内存将减少虚拟机杀掉测试进程的可能性。

    启动完成之后,你可以使用root账户登陆。

    在 Hortonworks sandbox 中, ambari 会帮助您运行 hadoop:

    然后重置ambari的admin用户密码为:

    1. ambari-admin-password-reset

    上述命令执行成功后您可以以admin的身份登陆到 ambari 主页 http://yoursandboxip:8080 去检查所有组件的状态。默认情况下 ambari 使 HBase 失效,您需要手动启动 HBase 服务。

    对于 hadoop 分布式,基本上启动 hadoop 集群,确保 HDFS,YARN,Hive,HBase 运行着即可。

    注意:

    • 为YARN resource manager 分配 3-4GB 内存.

    安装 Maven

    最新的 maven 下载地址:http://maven.apache.org/download.cgi,我们创建一个符号,以便 mvn 可以在任何地方运行。

    1. cd ~
    2. 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
    3. tar -xzvf apache-maven-3.2.5-bin.tar.gz
    4. ln -s /root/apache-maven-3.2.5/bin/mvn /usr/bin/mvn

    在像 /usr/local/spark 这样的本地文件夹下手动安装 Spark;你需要确认所需要的 Spark 的版本,以及从 Spark 下载页面获取下载链接。 Kylin 2.3 - 2.4 需要 Spark 2.1, Kylin 2.5 需要 Spark 2.3; 例如:

    1. wget -O /tmp/spark-2.1.2-bin-hadoop2.7.tgz https://archive.apache.org/dist/spark/spark-2.1.2/spark-2.1.2-bin-hadoop2.7.tgz
    2. cd /usr/local
    3. tar -zxvf /tmp/spark-2.1.2-bin-hadoop2.7.tgz
    4. ln -s spark-2.1.2-bin-hadoop2.7 spark

    为 hbase 客户端创建本地临时文件夹(如果其不存在):

    1. chmod 777 /hadoop/hbase/local/jars

    编译

    首先将 Kylin 工程下载到本地:

    将 Kylin 工件安装到 maven 仓库:

    1. mvn clean install -DskipTests

    必须修改本地配置以指向 hadoop 沙箱(或 CLI)机器。你可以选择以下两种方式的其中一种:

    第一种方式:修改配置文件

    • examples/test_case_data/sandbox/kylin.properties
      • 找到 sandbox 并替换成您的 hadoop hosts(如果您使用的是 HDP 沙箱,这步可以跳过)
      • 找到 kylin.job.use-remote-cli 并修改为 “true”(在代码库中其默认值为 false,假定其运行在 hadoop CLI 上)
    • examples/test_case_data/sandbox
      • 遍历每一个 xml 配置文件,找到所有的 sandboxsandbox.hortonworks.com,替换成您的 hadoop hosts;(如果您使用的是 HDP 沙箱,这步可以跳过)

    第二种方式:替换host

    • 更新您的 hosts 文件,将sandbox 和 映射为沙箱机器的 IP 。

    运行单元测试

    运行单元测试来测试每一个 classes 基本功能的有效性。

    1. mvn test -fae -Dhdp.version=<hdp-version> -P sandbox

    在真正运行集成测试前,需要为测试数据的填充运行一些端到端的 cube 构建作业,同时验证 cube 过程。然后是集成测试。

    其可能需要一段时间(也许两个小时),请保持耐心。

    1. mvn verify -fae -Dhdp.version=<hdp-version> -P sandbox

    关于测试想要了解更多,请参考.

    本地运行 Kylin Web 服务器

    拷贝 server/src/main/webapp/WEB-INF 到 webapp/app/WEB-INF

    1. cp -r server/src/main/webapp/WEB-INF webapp/app/WEB-INF

    为 Kylin web GUI 下载 JS。npmNode.js 的一部分,请搜索有关如何在您的操作系统上安装它的信息。

    如果在bower install的过程当中遇到问题,可以尝试命令:

    1. git config --global url."git://".insteadOf https://

    注意,如果是在 Windows 上,安装完 bower,需要将 “bower.cmd” 的路径加入系统环境变量 ‘PATH’ 中,然后运行:

    1. bower.cmd --allow-root install

    在 IDE,运行 org.apache.kylin.rest.DebugTomcat。将工作目录设置为 /server 文件夹,使用 “kylin-server” 的 classpath。在运行之前,请在IDE安装Scala插件,以保证能够编译spark代码。对于 IntelliJ IDEA 2017 或之前的用户,需要修改 “server/kylin-server.iml” 文件,将所有的 “PROVIDED” 替换为 “COMPILE”;对于 IntelliJ IDEA 2018 用户,请勾选 “Include dependencies with ‘Provided’ scope”,否则可能会抛出 “java.lang.NoClassDefFoundError: org/apache/catalina/LifecycleListener” 错误。

    调节 VM options,例如:

    1. -Dhdp.version=2.4.0.0-169 -DSPARK_HOME=/usr/local/spark -Dkylin.hadoop.conf.dir=/workspace/kylin/examples/test_case_data/sandbox -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m
    1. HADOOP_USER_NAME=root

    查看 Kylin Web http://localhost:7070/kylin(用户名:ADMIN,密码:KYLIN)

    如果你正在为 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

    2. 去 Preference => Code Style => Java,将 “Scheme” 设为默认,并设置 “Class count to use import with ‘*’” 和 “Names count to use static import with ‘*’” 为 99。

    3. 禁用 intellij IDEA 的 “Optimize imports on the fly”

      Disable_Optimize_On_The_Fly

    4. 提交代码前格式化代码。

    每一个源文件都应该包括以下的 Apache License 头部

    当打包时 checkstyle 插件将会检查头部规则。license 文件在 dev-support/checkstyle-apache-header.txt。为了方便开发人员,请将头部添加为 ,并将其设置为 Kylin 项目的默认值。