多套Kylin集群共享Hbase和Hadoop计算集群关键配置最佳实践

由于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_
  • Hadoop计算集群相关配置
    kylin.env.hdfs-working-dir=hdfs://ns00/user/kylin/kylin_engine/
(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 
  • Zookeeper相关配置
    kylin.env.zookeeper-base-path=/kylin
(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
  • Kylin集群相关配置
    kylin.server.cluster-name=BIGDATA_KYLIN:kylin_meadata
(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集群运维有所帮助。

你可能感兴趣的:(kylin,大数据开发)