在使用Kylin从Kafka来进行Streaming Cubing时,构建过程中出现如下错误:
从这个步骤的日志中简单显示:killed by admin
如果无法知道具体原因,那么我们可以从Yarn的作业中来查看:
进入到MR作业中,查看具体日志为:
MAP capability required is more than thesupported max container capability in the cluster. Killing the Job.mapResourceRequest: <memory:3072, vCores:1>maxContainerCapability:<memory:1961, vCores:6>
Job received Kill while in RUNNINGstate.
这里我们就可以看到作业失败的原因了,Map的作业需要更多的资源。
因为Kylin的Streaming Cubing是基于“inmem”构建算法,需要更多的内存,但是Yarn没有给MR分配足够的资源。我们可以修改Kylin的配置文件conf/kylin_job_conf_inmem.xml减小对内存的申请大小:
将默认的参数(分配给map比较大的内存),如下:
<property>
<name>mapreduce.map.memory.mb</name>
<value>3072</value>
<description></description>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx2700m</value>
<description></description>
</property>
将map的内存大小修改小一点,如下:
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
<description></description>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx900m</value>
<description></description>
</property>
修改完成后,不用重启Kylin,只要重新提交失败的作业即可。
构建完成后,就可以查询:
备注:
这里说明一下使用Kafka来构建Streaming Cube的注意事项:
1. 选择Kafka的版本为0.10.0以及以上版本(这里我使用kafka_2.10-0.10.1.0版本)
2. Kylin启动之前需要设置KAFKA_HOME的环境变量