kylin调优,项目中错误总结,知识点总结,kylin jdbc driver + 数据库连接池druid + Myba

                       

关于本篇文章的说明:
本篇文章为笔者辛苦劳作用了一整天总结出来的文档,大家阅读转发的时候请不要吝啬写上笔者:涂作权 和 原文地址。

由于笔者所在环境没有人用过kylin,笔者也是自学官网,阅读书籍 将kylin用于实际项目,期间遇到了很多很多关于kylin使用的问题。为了让后面的人在使用kylin实践的时候能够少走弯路,在此生成kylin的调优,错误总结,知识点文档,这篇文档应该是目前网上最全的kylin调优和总结文档了(除了官网)。

以下文章内容主要来自官网,书籍,博文,网友,社区,同学,以及实际项目。

1 调优方案

1.1 调优:如何提高访问连接并发(运维层面)

根据书籍中的介绍,kylin单个的实例,支持的访问连接并发是70个左右,所以,为了让kylin能够支持更多的访问并发,可以通过增加实例的方式实现。将单实例的Kylin变成集群方式,增加query节点的个数。
官网介绍的方式:
http://kylin.apache.org/docs/install/kylin_cluster.html
在这里插入图片描述
说明:
A:假设有3台机器,分别是machine1,machine2,machine3。其中Machine的运行模式是all(即拥有 执行job+执行query的角色  (个人理解)),另外的machine2和machine3为query(主要用于查询)。
B:注意,kylin2.0以后,kylin支持了多个job的方式,具体方式可以参考文档进行相关配置。

1.2 调优:解决kylin预处理过程gc问题(运维层面)

Kylin是基于预处理技术,如果公司资金雄厚,服务器配置高,内存大,那就不要吝啬内存了。给kylin足够的内存分配,能够减少很多问题。

如果处理的好,可以结合任务调度系统,比如azkaban,通过shell的方式将kylin的内存在数据处理空闲的时候,将内存多分配给kylin。

关于此部分的介绍,官网给出的建议是:
http://kylin.apache.org/docs/install/configuration.html

Allocate More Memory for Kylin
There are two sample settings for KYLIN_JVM_SETTINGS are given in $KYLIN_HOME/conf/setenv.sh.
The default setting use relatively less memory. You can comment it and then uncomment the next line to allocate more memory for Kyligence Enterprise. The default configuration is:

Export KYLIN_JVM_SETTINGS="-Xms1024M -Xmx4096M -Xss1024K -XX`MaxPermSize=512M -verbose`gc -XX`+PrintGCDetails -XX`+PrintGCDateStamps -Xloggc`$KYLIN_HOME/logs/kylin.gc.$$ -XX`+UseGCLogFileRotation - XX`NumberOfGCLogFiles=10 -XX`GCLogFileSize=64M"# export KYLIN_JVM_SETTINGS="-Xms16g -Xmx16g -XX`MaxPermSize=512m -XX`NewSize=3g -XX`MaxNewSize=3g -XX`SurvivorRatio=4 -XX`+CMSClassUnloadingEnabled -XX`+CMSParallelRemarkEnabled -XX`+UseConcMarkSweepGC -XX `+CMSIncrementalMode -XX`CMSInitiatingOccupancyFraction=70 -XX`+UseCMSInitiatingOccupancyOnly -XX`+DisableExplicitGC -XX`+HeapDumpOnOutOfMemoryError -verbose`gc -XX`+PrintGCDetails -XX`+PrintGCDateStamps -Xloggc`$KYLIN_HOME/logs/kylin.gc. $$ -XX`+UseGCLogFileRotation -XX`NumberOfGCLogFiles=10 -XX`GCLogFileSize=64M"
  
  
  
  • 1
  • 2

笔者配置:

[xxx conf]# pwd/data/installed/apache-kylin-2.3.1-bin/conf[xxxx conf]# vim setenv.sh
  
  
  
  • 1
  • 2
  • 3

在这里插入图片描述

1.3 调优+错误总结:配置build引擎支持Spark (运维层面)

在kylin中支持以Spark作为预处理的方式,在内存足够的情况下,建议配置build引擎。使用Spark,默认的build引擎使用的是mapreduce.

由于笔者使用的hadoop版本是3.0.1(原生),当前最高版本是:v2.5.2,发现使用Kylin的时候,会报jar冲突问题,因为我环境使用的是3.x的jar包,但是在kylin发行版本目前还使用的是基于hadoop2.x的Spark。所以失败了。

但是,若使用的是CDH,可以使用,apache-kylin-2.5.2-bin-cdh60.tar.gz  for beta版本进行安装试用。

支持Spark的配置:http://kylin.apache.org/docs/tutorial/cube_spark.html,关于具体步骤,本文不进行详细叙述。

1.4 调优:kylin出现reduce阶段内存异常问题(hadoop运维层面)

在kylin执行cube build的过程中,可能会出现内存溢出的问题,这个问题其中一个原因是hadoop的虚拟参数配置不合理导致的。
这里在$HADOOP_HOME/etc/Hadoop/yarn-site.xml 中的配置类似如下:

<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true--><property>    <name>yarn.nodemanager.vmem-check-enabled</name>    <value>false</value></property><!-- 任务每使用1MB物理内存,最多可使用虚拟内存,默认是2.1 --><property>    <name>yarn.nodemanager.vmem-pmem-ratio</name>    <value>5</value></property><!-- 每个节点可用内存,单位MB  --><property>     <name>yarn.nodemanager.resource.memory-mb</name>     <!--<value>16384</value>-->     <value>20480</value>     <discription>每个节点可用内存,单位MB</discription></property><!-- 单个任务可申请最少内存,默认1024MB  --><property>     <name>yarn.scheduler.minimum-allocation-mb</name>     <value>1024</value></property><!-- 单个任务可申请最大内存,默认8192MB  --><property>     <name>yarn.scheduler.maximum-allocation-mb</name>     <!--<value>16384</value>-->     <value>20480</value></property>
  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

yarn.nodemanager.vmem-pmem-ratio :虚拟内存大小的一个系数,通过调整这个参数,可以增大虚拟内存的值,避免kylin在cube build的过程中出现失败。

此外,也要调整:$HADOOP_HOME/etc/Hadoop/mapred-site.xml中如下的值:

<property>     <name>mapreduce.map.java.opts</name>     <!--<value>-Xms3g -Xmx6g</value>-->     <value>-Xms3g -Xmx10g</value></property><property>     <!-- mapreduce.reduce.java.opts 这个值一般是mapreduce.map.java.opts的两倍 -->     <name>mapreduce.reduce.java.opts</name>     <!--<value>-Xms6g -Xmx12g</value>-->     <value>-Xms6g -Xmx16g</value></property><!-- 每个Map任务的物理内存限制,这个值 * yarn.nodemanager.vmem-pmem-ratio  就是虚拟内存的大小--><property>      <name>mapreduce.map.memory.mb</name>      <!--<value>6144</value>-->      <value>10240</value></property><property>      <name>mapreduce.reduce.input.buffer.percent</name>      <value>0.5</value></property><!-- 每个Reduce任务的物理内存限制,一般还是机器内存的80%  --><property>      <name>mapreduce.reduce.memory.mb</name>      <!--<value>12288</value>-->      <value>16384</value></property>
  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

其中官网的介绍是:
在这里插入图片描述

1.5 将cuboid数据转为HFile

这一步启动一个MR任务来讲cuboid文件(序列文件格式)转换为HBase的HFile格式。Kylin通过cube统计数据计算HBase的region数目,默认情况下每5GB数据对应一个region。Region越多,MR使用的reducer也会越多。如果你观察到reducer数目较小且性能较差,你可以将“conf/kylin.properties”里的以下参数设小一点,比如:

kylin.hbase.region.cut=2kylin.hbase.hfile.size.gb=1
  
  
  
  • 1
  • 2

如果你不确定一个region应该是多大时,联系你的HBase管理员。

1.6 调优:解决kylin cube过程中的hive小文件问题(运维层面)

Kylin中自带文件合并,下面的过程可以考虑设置(这个笔者没有验证过,有的博文中建议下面方式进行设置,但是官网是另外一种说法)
官网:
在这里插入图片描述
一些博文上的写法:

[xxx conf]# pwd/xxxx/apache-kylin-2.3.1-bin/conf[xxxx conf]# vim kylin_hive_conf.xml 
  
  
  
  • 1
  • 2
  • 3

该文件原本的配置如下:

<property>    <name>hive.merge.mapfiles</name>    <value>false</value>    <description>Disable Hive's auto merge</description></property><property>    <name>hive.merge.mapredfiles</name>    <value>false</value>    <description>Disable Hiv
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值