Kylin安裝及使用

背景 : 近來公司要做報表,隨簡單研究一下Kylin。Kylin可謂是我泱泱中華在Apace史上耀眼的一筆。

作用: Kylin是強大的OLAP分析引擎,詳見官網。 Kylin 1.6 CDH5.10

安裝

​ Kylin有兩種安裝方式:單機及集羣。本文以集羣爲例。單機版Kylin安裝起來還是挺簡單的,解壓即安裝。

配置

​ 1.環境變量的配置:

export HADOOP_USER_NAME=hdfsexport KAFKA_HOME=/opt/cloudera/parcels/KAFKA-2.1.1-1.2.1.1.p0.18/lib/kafkaexport HCAT_HOME=/opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/hive-hcatalogexport HIVE_HOME=/opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/hiveexport KYLIN_HOME=/home/syphcdh/kylin/kylin-1.6.0-cdh5.7export PATH=${PATH}:${KYLIN_HOME}/bin

​ 2.Kylin.

​ 修改:

Kylin server mode, valid value [all, query, job]

kyin.server.mode=all

kylin.rest.servers=xxxxxx:7070,xxxxxx:7070

​ 僅支持一臺機器爲all

問題:

​ 1.can`t not fount org.apache.hadoop.hive.serde2.typeinfo.TypeInfo

​ 配置文件中加入:

​ kylin.job.mr.lib.dir=/opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/sentry/lib/

​ 2.hive的一些包會報找不到

​ 最簡單的辦法:將hive相關的包放入Kylin的lib目錄下

​ 3.Application with id ‘application_1495078923524_0022’ doesn’t exist in RM or Timeline Server.

​ NodeManger內存不足

4.Kylin leverages HBase coprocessor to optimize query performance. After new versions released, the RPC protocol may get changed, so user need to redeploy coprocessor to HTable. There’s a CLI tool to update HBase Coprocessor:

KYLIN_HOME/bin/kylin.sh org.apache.kylin.storage.hbase.util.DeployCoprocessorCLI KYLIN_HOME/lib/kylin-coprocessor-*.jar all

5.2017-07-20 17:03:18,360 INFO org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService: The cube visit did not finish normally because scan num exceeds threshold org.apache.kylin.gridtable.GTScanExceedThresholdException: Exceed scan threshold at 393073 at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService1.hasNext(CubeVisitService.java:258)atorg.apache.kylin.storage.hbase.cube.v2.HBaseReadonlyStore1.hasNext(CubeVisitService.java:258) at org.apache.kylin.storage.hbase.cube.v2.HBaseReadonlyStore1$1.hasNext(HBaseReadonlyStore.java:111) at org.apache.kylin.gridtable.GTAggregateScanner.iterator(GTAggregateScanner.java:139) at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService.visitCube(CubeVisitService.java:290) at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos

原因3點: 說白了就是kylin關於hbase的3個參數: kylin.query.scan.threshold kylin.query.mem.budget kylin.query.coprocessor.mem.gb 任何一個參數不達標都會報regionserver 都會報org.apache.kylin.gridtable.GTScanExceedThresholdException: Exceed scan threshold ,而前端查詢kylin是timeout

6.當用kylin做報表時,kylin報錯 2017-06-26 14:51:52,523 ERROR [IPC Server handler 3 on 33033] org.apache.Hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1498453243500_0032_m_000000_0 - exited : Java.lang.ArrayIndexOutOfBoundsException: -1 at org.apache.kylin.engine.mr.steps.FactDistinctHiveColumnsMapper.putRowKeyToHLL(FactDistinctHiveColumnsMapper.java:179) at org.apache.kylin.engine.mr.steps.FactDistinctHiveColumnsMapper.map(FactDistinctHiveColumnsMapper.java:155)

經過查看kylin的issue得知 The problem is when you have same name column in Dim and Fact Table SOL1: Rename columns in Hive or use Hive’s view SOL2: Will be solved in Kylin 1971 (kylin2.0中已解決) 維度表跟維度表之間也不要有相同的字段

7.不同的cube維度不能相同

延伸

關於MPP和Cube預處理的差異,重複如下:

MPP 的基本思路是增加機器來並行計算,從而提高查詢速度。比如掃描8億記錄一臺機器要處理1小時,但如果用100臺機器來並行處理,就只要一分鐘不到。再配合列式存儲和一些索引,查詢可以更快返回。要注意這裏在線運算量並沒有減小,8億條記錄還是要掃描一次,只是參與的機器多了,所以快了。

MOLAP Cube 是一種預計算技術,基本思路是預先對數據作多維索引,查詢時只掃描索引而不訪問原始數據從而提速。8億記錄的一個3維索引可能只有幾萬條記錄,規模大大縮小,所以在線計算量大大減小,查詢可以很快。索引表也可以採用列存儲,並行掃描等MPP常用的技術。但多維索引要對多維度的各種組合作預計算,離線建索引需要較大計算量和時間,最終索引也會佔用較多磁盤空間。

最後的最後,你知道,小省是誰嗎?偷偷的告訴你,小省喊我去玩啦~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章