在项目中有时代码开发分为开发环境和生产环境,kylin虽然支持多个project,但是每个project中的model不能同名,就造成了需要多个kylin集群来适配不同的代码环境。又因为kylin依赖hbase,hive,hdfs,zookeeper,spark这些组件,再完整弄一套集群过于麻烦。故此文给出一种解决方案。
所使用的kylin版本为2.6.4
首先kylin的主要配置文件为$KYLIN_HOME/kylin.properties
,本文并不会详解其中的所有配置,只会拿出我们需要的配置进行操作。
注意,安装新kylin的机器上需要配备hbase,hive,hadoop,spark,zookeeper的客户端。且环境变量中各自的*_HOME要配置好。
kylin.metadata.url
此配置为kylin在hbase上存储元数据的路径。
默认值为kylin.metadata.url=kylin_metadata@hbase
。
其中kylin_metadata为kylin在hbase中建的元数据表,在hbase的default的命名空间下。
这里我们可以修改为其他值,与之区分开,例如kylin.metadata.url=cluster01:kylin_metadata@hbase
,这里的cluster_prd为新kylin集群在hbase上存储元数据的命名空间,与之前集群的命名空间default区分开,即元数据存储在不同的位置。
注意:kylin并不会在hbase上创建cluster01的命名空间,需要自己创建,create_namespace 'cluster01'
kylin.env.hdfs-working-dir
此配置是kylin在hdfs上的工作路径。
默认值为kylin.env.hdfs-working-dir=/kylin
。我们可以通过hdfs dfs -ls /kylin
看到此路径中存储的数据。
这里我们设为其他值,例如kylin.env.hdfs-working-dir=/kylin01
。kylin.env.zookeeper-base-path
此配置是kylin在zookeeper上的路径,默认为kylin.env.hdfs-working-dir=/kylin
。
我们修改为kylin.env.hdfs-working-dir=/kylin01
kylin.storage.hbase.namespace
此配置指定 hbase 存储默认的 namespace,默认值为 default。
我们可以修改为kylin.storage.hbase.namespace=cluster01
,注意,需要和第一个配置的命名空间保持一致。kylin.source.hive.database-for-flat-table
此配置指定存放kylin计算时产生的中间表存放在 hive中的 hive 数据库名字,默认值为kylin.source.hive.database-for-flat-table=default
,请确保启动 Kylin 实例的用户有操作该数据库的权限。
我们可以修改为kylin.source.hive.database-for-flat-table=cluster01
。
注意:kylin并不会在hive上创建cluster01的数据库,需要自己创建,create database cluster01;
上面这五个参数配置完即可实现多个kylin共用一套hbase和hadoop。其实其中有些参数并不一定需要修改,例如我们让中间表在hive中存在默认的default数据库下,应该也是可行的。你只需要保证在同一套基础组件环境下,不同的kylin保存在底层组件的数据的路径不同。这样他们之前才能不相互干扰。
此文章如有疏忽,欢迎指正。