当部署kylin的机器内存不足时,可以使用memcached作为kylin的查询缓存。
需要在kylin.properties添加的配置如下:
kylin.query.cache-enabled=true
kylin.query.lazy-query-enabled=true
kylin.query.cache-signature-enabled=true
kylin.query.segment-cache-enabled=true
kylin.cache=true
kylin.cache.use-local=false
kylin.query.cache-type=memcached
kylin.cache.memcached.hosts=host:port,host:port
其中host是部署memcached机器的ip,port是memcached的端口。可以选择将查询缓存放在多个memcached的机器上。
需要修改的配置如下:
$KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/classes/applicationContext.xml
注释掉:
<bean id="ehcache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:configLocation="classpath:ehcache-test.xml" p:shared="true"/>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
p:cacheManager-ref="ehcache"/>
取消注释:
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:configLocation="classpath:ehcache-test.xml" p:shared="true"/>
<bean id="remoteCacheManager" class="org.apache.kylin.cache.cachemanager.MemcachedCacheManager" />
<bean id="localCacheManager" class="org.apache.kylin.cache.cachemanager.InstrumentedEhCacheCacheManager"
p:cacheManager-ref="ehcache"/>
<bean id="cacheManager" class="org.apache.kylin.cache.cachemanager.RemoteLocalFailOverCacheManager" />
<bean id="memcachedCacheConfig" class="org.apache.kylin.cache.memcached.MemcachedCacheConfig">
<property name="timeout" value="500" />
<property name="hosts" value="${kylin.cache.memcached.hosts}" />
</bean>
然后重启kylin就可以啦。
使用后,在logs文件夹下的kylin.out里面可以找到如下:
INFO net.spy.memcached.MemcachedConnection
在kylin.log里面也可以找到:
service.QueryService:646 : The sqlResponse is found in QUERY_CACHE