大數據集群運維(28) Kylin 配置使用 flink 構建 Cube


用 Flink 構建 Cube

Kylin v3.1 引入了 Flink cube engine,在 build cube 步驟中使用 Apache Flink 代替 MapReduce;您可以查看 KYLIN-3758 了解具體信息。當前的文檔使用樣例 cube 對如何嘗試 new engine 進行了演示。

准備階段

您需要一個安裝了 Kylin v3.1.0 及以上版本的 Hadoop 環境。本文檔中使用的Hadoop環境為Cloudera CDH 5.7,其中 Hadoop 組件和 Hive/HBase 已經啟動了。

安裝 Kylin v3.1.0 及以上版本

從 Kylin 的下載頁面下載適用於 CDH5.7+ 的 Kylin v3.1.0,然后在 /usr/local/ 文件夾中解壓 tar 包:

wget http://www-us.apache.org/dist/kylin/apache-kylin-3.1.0/apache-kylin-3.1.0-bin-cdh57.tar.gz -P /tmp

tar -zxvf /tmp/apache-kylin-3.1.0-bin-cdh57.tar.gz -C /usr/local/

export KYLIN_HOME=/usr/local/apache-kylin-3.1.0-bin-cdh57

准備 “kylin.env.hadoop-conf-dir”

為使 Flink 運行在 Yarn 上,需指定 HADOOP_CONF_DIR 環境變量,其是一個包含 Hadoop(客戶端) 配置文件的目錄,通常是 /etc/hadoop/conf

通常 Kylin 會在啟動時從 Java classpath 上檢測 Hadoop 配置目錄,並使用它來啟動 Flink。 如果您的環境中未能正確發現此目錄,那么可以顯式地指定此目錄:在 kylin.properties 中設置屬性 “kylin.env.hadoop-conf-dir” 好讓 Kylin 知道這個目錄:

kylin.env.hadoop-conf-dir=/etc/hadoop/conf

配置FLINK_HOME指向你的flink安裝目錄:

$xslt export FLINK_HOME=/path/to/flink

或者使用kylin提供的腳本下載:

$xslt $KYLIN_HOME/bin/download-flink.sh

所有使用 “kylin.engine.flink-conf.” 作為前綴的 Flink 配置屬性都能在 $KYLIN_HOME/conf/kylin.properties 中進行管理。這些屬性當運行提交Flink任務時會被提取並應用。

運行 Flink cubing 前,建議查看一下這些配置並根據您集群的情況進行自定義。下面是建議配置:

### Flink conf (default is in $FLINK_HOME/conf/flink-conf.yaml)
kylin.engine.flink-conf.jobmanager.heap.size=2G
kylin.engine.flink-conf.taskmanager.heap.size=4G
kylin.engine.flink-conf.taskmanager.numberOfTaskSlots=1
kylin.engine.flink-conf.taskmanager.memory.preallocate=false
kylin.engine.flink-conf.job.parallelism=1
kylin.engine.flink-conf.program.enableObjectReuse=false
kylin.engine.flink-conf.yarn.queue=
kylin.engine.flink-conf.yarn.nodelabel=

 

 

所有 “kylin.engine.flink-conf.*” 參數都可以在 Cube 或 Project 級別進行重寫,這為用戶提供了靈活性。

創建和修改樣例 cube

運行 sample.sh 創建樣例 cube,然后啟動 Kylin 服務器:

$KYLIN_HOME/bin/sample.sh
$KYLIN_HOME/bin/kylin.sh start

Kylin 啟動后,訪問 Kylin 網站,在 “Advanced Setting” 頁,編輯名為 “kylin_sales” 的 cube,將 “Cube Engine” 由 “MapReduce” 換成 “Flink”:

點擊”Next” and “Save” 保存cube.

默認情況下,只有第7步的cube by layer使用Flink進行構建。

點擊 “Build”,選擇當前日期為 end date。Kylin 會在 “Monitor” 頁生成一個構建 job,第 7 步是 Flink cubing。Job engine 開始按照順序執行每一步。

當 Kylin 執行這一步時,您可以監視 Yarn 資源管理器里的狀態.

所有步驟成功執行后,Cube 的狀態變為 “Ready” 且可以進行查詢。

可選功能

現在構建步驟中的’extract fact table distinct value’ 和 ‘Convert Cuboid Data to HFile’ 兩個步驟也可以使用Flink進行構建。相關的配置如下:

kylin.engine.flink-fact-distinct=true
kylin.engine.flink-cube-hfile=true

疑難解答

當出現 error,您可以首先查看 “logs/kylin.log”. 其中包含 Kylin 執行的所有 Flink 命令,例如:

2020-06-16 15:48:05,752 INFO  [Scheduler 2113190395 Job 478f9f70-8444-6831-6817-22869f0ead2a-308] flink.FlinkExecutable:225 : cmd: export HADOOP_CONF_DIR=/etc/hadoop/conf && export HADOOP_CLASSPATH=/etc/hadoop && /root/apache-kylin-3.1.0-SNAPSHOT-bin-master/flink/bin/flink run -m yarn-cluster  -ytm 4G -yjm 2G -yD taskmanager.memory.preallocate false -ys 1 -c org.apache.kylin.common.util.FlinkEntry -p 1 /root/apache-kylin-3.1.0-SNAPSHOT-bin/lib/kylin-job-3.1.0-SNAPSHOT.jar -className org.apache.kylin.engine.flink.FlinkCubingByLayer -hiveTable default.kylin_intermediate_kylin_sales_cube_flink_75ffb8ff_b27c_c86b_70f2_832a4f18f5cf -output hdfs://cdh-master:8020/kylin/yaqian/kylin_zyq/kylin-478f9f70-8444-6831-6817-22869f0ead2a/kylin_sales_cube_flink/cuboid/ -input hdfs://cdh-master:8020/kylin/yaqian/kylin_zyq/kylin-478f9f70-8444-6831-6817-22869f0ead2a/kylin_intermediate_kylin_sales_cube_flink_75ffb8ff_b27c_c86b_70f2_832a4f18f5cf -enableObjectReuse false -segmentId 75ffb8ff-b27c-c86b-70f2-832a4f18f5cf -metaUrl kylin_zyq@hdfs,path=hdfs://cdh-master:8020/kylin/yaqian/kylin_zyq/kylin-478f9f70-8444-6831-6817-22869f0ead2a/kylin_sales_cube_flink/metadata -cubename kylin_sales_cube_flink

您可以復制 cmd 以便在 shell 中手動執行,然后快速進行參數調整;執行期間,您可以訪問 Yarn 資源管理器查看更多信息。如果 job 已經完成了,您可以檢查flink的日志文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM