由于Kylin的本身架构(广播特性)和业务特点通常不适用于单套Kylin集群的节点过多,通常大家采用拆分Kylin集群但是共用底层的Hbase集群和计算集群的方式进行部署。本文主要根据目前咱们的实践经验对于此种场景集群配置进行分享,希望对大家有所帮助。
Kylin的版本为社区上最新的3.x版本。
Kylin集群:
当前有两套Kylin集群(kylin-cluster01,kylin-cluster02);
部署方式:
(1)、采用计算集群和存储集群分离的方式进行部署;
(2)、这两套Kylin集群均使用同一套存储集群(Hbase01),即两个Kylin集群共用一套HBase集群;
(3)、这两套Kylin集群均使用同一套计算集群(Hadoop01),即两套Kylin集群均使用同一套计算Hadoop集群.
Kylin集群的配置主要是配置在$KYLIN_HOME/conf/kylin.properties文件, 本文所述的配置均是在此配置文件中配置,
$KYLIN_HOME为Kylin的安装目录。
HBase存储相关配置
kylin.metadata.url=BIGDATA_KYLIN:kylin_meadata@hbas
e
tablename一定不要与kylin.storage.hbase.table-name-prefix中的前缀配置一样,否则使用tool删除将会删除meta表
kylin.metadata.url :指定元数据存储方式和路径。两个Kylin集群的此配置一定要**不相同**,值的格式为:namespace:tablename@store_type。此配置分为两部分,@为分隔符:
(1)、@后的部分表示此Kylin集群使用什么作为存储,可以配置为:hbase、hdfs、ifile、jdbc。咱们用hbase,所以咱们后部分固定为@hbase。
(2)、@前的部分有至少如下几个用途:
a、Kylin集群的元数据在hbase中的存储表名以及表对应的namespace,namespace可以不配配置,不配做则为tablename@hbase,这个tablename一定不要与kylin.storage.hbase.table-name-prefix中的前缀一样,否则使用工具类删除数据的时候可能会误删除meta表;
b、与kylin.env.hdfs-working-dir的值拼接成计算集群和存储集群的Kylin HDFS工作目录,拼接方式为:ylin.env.hdfs-working-dir的值+”/“+ @之前的部分(冒号 : 变为中横线 —) ;
c、与kylin.env.hdfs-metastore-bigcell-dir拼接为bigcell-dir的存储路径,拼接方式为:kylin.env.hdfs-metastore-bigcell-dir的值+”/“+ @之前的部分(冒号 : 变为中横线 —);
d、如果kylin.server.cluster-name 集群名没有设置值,则@前面部分还会作为cluster-name的值。
(3)、配置例子:
kylin-cluster01:
kylin.metadata.url=BIGDATA_KYLIN:kylin01_meadata@hbase
kylin-cluster02:
kylin.metadata.url=BIGDATA_KYLIN:kylin02_meadata@hbase
kylin.env.hdfs-metastore-bigcell-dir=/user/prod_kylin/kylin_engine2/
kylin.env.hdfs-metastore-bigcell-dir是大的字典存储的目录,所以一定要配置一个Hbase集群的某个HDFS目录。如果此配置不配,将会从kylin.env.hdfs-working-dir获取值但是会将schemal替换成存储集群(hbase)的schemal
两个Kylin集群不要配成一样的目录。
kylin.storage.hbase.cluster-fs=hdfs://storagepre/hbase
kylin.storage.hbase.cluster-fs 指明 HBase 集群hbase存储的 HDFS 根目录值为hbase-site.xml中“hbase.rootdir”的值。
因为共用一个HBbase集群,故两个集群此处配置一致。
kylin.storage.hbase.namespace=BIGDATA_KYLIN
kylin.storage.hbase.table-name-prefix=KYLIN_
(1)、定义:
kylin.storage.hbase.namespace 指明应在hbase中table的namsespace,建议每个kylin集群配置不一样
kylin.storage.hbase.table-name-prefix 指明segment对应在hbase中table name的前缀,建议每个kylin集群配置不一样。
(2)、配置例子:
kylin-cluster01 :
kylin.storage.hbase.namespace=BIGDATA_KYLIN01
kylin.storage.hbase.table-name-prefix=KYLIN01_
kylin-cluster02 :
kylin.storage.hbase.namespace=BIGDATA_KYLIN02
kylin.storage.hbase.table-name-prefix=KYLIN02_
(1)、 定义:
- kylin.env.hdfs-working-dir 指定 Kylin 服务所用的 HDFS 路径,每个Kylin集群的此配置值也尽量不要相同。当然每个集群真实的工作目录还会拼接上 kylin.storage.hbase.cluster-fs的值,参考kylin.storage.hbase.cluster-fs配置。配置相同对集群运维可能会造成一些不必要的麻烦。
- kylin.env.hdfs-working-dir可能还会作为kylin.env.hdfs-metastore-bigcell-dir值,如果kylin.env.hdfs-metastore-bigcell-dir没有配置值的话,但是会把schemal自动换成存储集群的。
(2)、配置例子:
kylin-cluster01 配置的值可为 hdfs://ns00/user/kylin/kylin_cluster01/
kylin-cluster02 配置的值可为 hdfs://ns00/user/kylin/kylin_cluster02/
kylin.engine.livy-conf.livy-key.file=hdfs://ns00/user/kylin/kylin_engine/BIGDATA_KYLIN-kylin_meadata_test/livy/kylin-job-3.0.0-1-SNAPSHOT.jar
(1)、定义:
kylin.engine.livy-conf.livy-key.file 当需要使用spark livy 构建时,配置kylin 构建jar包在HDFS上的位置。此处的jar包配置需要每个集群互不影响,配置不同的目录,否则升级会互相影响,不用spark livy构建可以忽略此配置。
(2)、配置例子:
kylin-cluster01 配置的值可为 hdfs://ns00/user/kylin/kylin_cluster00/ /BIGDATA_KYLIN-kylin_meadata_test/livy/kylin-job-3.0.0-1-SNAPSHOT.jar
kylin-cluster02 配置的值可为 hdfs://ns00/user/kylin/kylin_cluster02/ /BIGDATA_KYLIN-kylin_meadata_test/livy/kylin-job-3.0.0-1-SNAPSHOT.jar
kylin.source.hive.database-for-flat-table=bigdata_kylin
kylin.source.hive.databasedir-for-flat-table=hdfs://ns00/user/prod_kylin/kylin/hive/bigdata_kylin
(1)、定义:
a、kylin.source.hive.database-for-flat-table为构建时flat-table的hive database name,两个集群需要使用不同的database;
b、kylin.source.hive.databasedir-for-flat-table 对应的hive database在hdfs上的路径,根据实际路径填写,由于database不同,此路径肯定也不相同。
(2)、配置例子:
kylin-cluster01 :
kylin.source.hive.database-for-flat-table=bigdata_kylin01
kylin.source.hive.databasedir-for-flat-table=hdfs://ns00/user/prod_kylin/kylin/hive/bigdata_kylin01
kylin-cluster02 :
kylin.source.hive.database-for-flat-table=bigdata_kylin02
kylin.source.hive.databasedir-for-flat-table=hdfs://ns00/user/prod_kylin/kylin/hive/bigdata_kylin02
(1)、定义:
kylin.env.zookeeper-base-path Kylin 服务所用的 ZooKeeper 父路径,默认值为 /kylin,两个集群一定要不相同相同,否则运维起来比较麻烦。另外每个集群真实的zookeeper的路径还会拼接上kylin.server.cluster-name的值。
(2)、配置例子:
kylin-cluster01 :
kylin.env.zookeeper-base-path=/kylin01
kylin-cluster02 :
kylin.env.zookeeper-base-path=/kylin02
(1)、定义:
Kyllin集群的名称,如果不配做则获取kylin.metadata.url @前半部分的值,建议明确配置且每个集群配置不要一样。此值除了会作为集群名称标识外,还会作为zookeeper的一部分具体见kylin.env.zookeeper-base-path配置。
(2)、配置例子:
kylin-cluster01 :
kylin.server.cluster-name=BIGDATA_KYLIN:kylin_cluster01_meadata
kylin-cluster02 :
kylin.server.cluster-name=BIGDATA_KYLIN:kylin_cluster02_meadata
后续在持续更新其他配置,上面的这些配置是在多Kylin集群共享同一个Hbase存储和Hadoop集群时需要注意的配置,希望对大家Kylin集群运维有所帮助。