Kylin 安装和使用

版本兼容性

Kylin Hadoop Hive HBase Spark Kafka Java HDP CDH
2.3 2.7+ 0.13 – 1.2.1+ 1.1+ 2.1.1+ 1.7+ 2.2 – 2.6 5.7 – 5.11
2.4 2.7+ 0.13 – 1.2.1+ 1.1+ 2.1.1+ 0.10.0+ 1.7+ 2.2 – 2.6 5.7 – 5.11
2.5, 2.6 2.7+, 3.1+ 0.13 – 1.2.1+ 1.1+, 2.0 2.3.0+ 1.0.0+ 1.8+ 2.2 – 2.6, 3.0 5.7 – 5.11, 6.0

Hadoop 环境

Kylin 依赖于 Hadoop 集群处理大量的数据集。需要准备一个配置好 HDFS,YARN,MapReduce,Hive,HBase,Zookeeper 和其他服务的 Hadoop 集群供 Kylin 运行。

Kylin 可以在 Hadoop 集群的任意节点上启动。方便起见,可以在 master 节点上运行 Kylin。为了更好的稳定性,建议将 Kylin 部署在一个干净的 Hadoop client 节点上,该节点上 Hive,HBase,HDFS 等命令行已安装好且 client 配置(如 core-site.xmlhive-site.xmlhbase-site.xml 及其他)也已经合理的配置且其可以自动和其它节点同步。

运行 Kylin 的 Linux 用户要有访问 Hadoop 集群的权限,包括创建/写入 HDFS 文件夹,Hive 表,HBase 表和提交 MapReduce 任务的权限。

单机安装

  1. 下载安装包
> wget https://www.apache.org/dyn/closer.cgi/kylin/apache-kylin-2.6.3/apache-kylin-2.6.3-bin-hbase1x.tar.gz
  1. 解压安装包,配置环境变量 $KYLIN_HOME 指向 Kylin 文件夹。
> tar -zxvf apache-kylin-2.6.3-bin-hbase1x.tar.gz
> mv apache-kylin-2.6.3-bin-hbase1x apache-kylin-2.6.3
> cd apache-kylin-2.6.3
> export KYLIN_HOME=`pwd`
> export PATH=$PATH:$KYLIN_HOME/bin

Kylin 目录结构

从 v2.6.1 开始, Kylin 不再包含 Spark 二进制包。需要另外下载 Spark,然后设置 SPARK_HOME 系统变量。

bin             shell 脚本,用于启动/停止 Kylin,备份/恢复 Kylin 元数据,以及一些检查端口、获取 Hive/HBase 依赖的方法等
conf            Hadoop 任务的 XML 配置文件,这些文件的作用可参考配置页面
lib             供外面应用使用的 jar 文件,例如 Hadoop 任务 jar, JDBC 驱动, HBase coprocessor 等
meta_backups    执行 bin/metastore.sh backup 后的默认的备份目录
sample_cube     用于创建样例 Cube 和表的文件
spark           自带的 spark
tomcat          自带的 tomcat,用于启动 Kylin 服务
tool            用于执行一些命令行的 jar 文件

  1. 检查运行环境

Kylin 运行在 Hadoop 集群上,对各个组件的版本、访问权限及 CLASSPATH 等都有一定的要求,为了避免遇到各种环境问题,可以运行 $KYLIN_HOME/bin/check-env.sh 脚本来进行环境检测,如果环境存在任何的问题,脚本将打印出详细报错信息。如果没有报错信息,代表环境适合 Kylin 运行。

  1. 启动 Kylin
> $KYLIN_HOME/bin/kylin.sh start
Retrieving hadoop conf dir...
KYLIN_HOME is set to .../apache-kylin-2.6.3
......
A new Kylin instance is started by root. To stop it, run 'kylin.sh stop'
Check the log at $KYLIN_HOME/logs/kylin.log
Web UI is at http://<hostname>:7070/kylin
  1. 使用 Kylin

Kylin 启动后可以通过浏览器 [http://<hostname>:7070/kylin] 进行访问。

其中 <hostname> 为具体的机器名、IP 地址或域名,默认端口为 7070。

初始用户名和密码是 ADMIN/KYLIN

服务器启动后,可以通过查看 $KYLIN_HOME/logs/kylin.log 获得运行时日志。

  1. 停止 Kylin
> $KYLIN_HOME/bin/kylin.sh stop
Retrieving hadoop conf dir...
KYLIN_HOME is set to .../apache-kylin-2.6.3
Stopping Kylin: 25964
Stopping in progress. Will check after 2 secs again...
Kylin with pid 25964 has been stopped.

可以运行 ps -ef | grep kylin 来查看 Kylin 进程是否已停止。


HDFS 目录结构

Kylin 会在 HDFS 上生成文件,根目录是 /kylin/ 然后会使用 Kylin 集群的元数据表名作为第二层目录名,默认为 kylin_metadata (可以在 conf/kylin.properties 中定制)

通常 /kylin/kylin_metadata 目录下会有这么几种子目录:

  1. cardinality — Kylin 加载 Hive 表时,会启动一个 MR 任务来计算各个列的基数,输出结果会暂存在此目录。可以安全清除。
  2. coprocessor — Kylin 用于存放 HBase coprocessor jar 的目录;请勿删除。
  3. kylin-job_id — Cube 计算过程的数据存储目录,请勿删除。如需要清理,请遵循 storage cleanup guide
  4. resources — Kylin 默认会将元数据存放在 HBase,但对于太大的文件(如字典或快照),会转存到 HDFS 的该目录下,请勿删除。如需要清理,请遵循 cleanup resources from metadata
  5. jdbc-resources — 性质同上,只在使用 MySQL 做元数据存储时候出现。

集群安装

Kylin 实例是无状态的服务,运行时的状态信息存储在 HBase metastore 中。 出于负载均衡的考虑,可以启用多个共享一个 metastore 的 Kylin 实例,使得各个节点分担查询压力且互为备份,从而提高服务的可用性。

集群模式设置

如果需要将多个 Kylin 节点组成集群,请确保他们使用同一个 Hadoop 集群、HBase 集群。然后在每个节点的配置文件 $KYLIN_HOME/conf/kylin.properties 中执行下述操作:

  • 配置相同的 kylin.metadata.url 值,即配置所有的 Kylin 节点使用同一个 HBase metastore。
  • 配置 Kylin 节点列表 kylin.server.cluster-servers,包括所有节点(包括当前节点),当事件变化时,接收变化的节点需要通知其他所有节点(包括当前节点)。
  • 配置 Kylin 节点的运行模式 kylin.server.mode,参数值可选 all, job, query 中的一个,默认值为 all
    • job 模式代表该服务仅用于任务调度,不用于查询;
    • query 模式代表该服务仅用于查询,不用于构建任务的调度;
    • all 模式代表该服务同时用于任务调度和 SQL 查询。
    • 注意:默认情况下只有一个实例用于构建任务的调度(即 kylin.server.mode 设置为 all 或者 job 模式)。

任务引擎高可用

从 v2.0 开始, Kylin 支持多个任务引擎一起运行,相比于默认单任务引擎的配置,多引擎可以保证任务构建的高可用。

使用多任务引擎,可以在多个 Kylin 节点上配置它的角色为 joball。为了避免它们之间产生竞争,需要启用分布式任务锁,请在 kylin.properties 里配置:

kylin.job.scheduler.default=2
kylin.job.lock=org.apache.kylin.storage.hbase.util.ZookeeperJobLock

将所有任务和查询节点的地址注册到 kylin.server.cluster-servers

安装负载均衡器

为了将查询请求发送给集群而非单个节点,可以部署一个负载均衡器,如 Nginx, F5 或 cloudlb 等,使得客户端和负载均衡器通信代替和特定的 Kylin 实例通信。

读写分离部署

为了达到更好的稳定性和最佳的性能,建议进行读写分离部署,将 Kylin 部署在两个集群上:

  • 一个 Hadoop 集群用作 Cube 构建,这个集群可以是一个大的、与其它应用共享的集群;
  • 一个 HBase 集群用作 SQL 查询,通常这个集群是专门为 Kylin 配置的,节点数不用像 Hadoop 集群那么多,HBase 的配置可以针对 Kylin Cube 只读的特性而进行优化。

这种部署策略是适合生产环境的最佳部署方案,关于如何进行读写分离部署,请参考 Deploy Apache Kylin with Standalone HBase Cluster

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注

13 + 18 =