【會裝】kylin的安裝(填坑)和簡單使用


 1.簡介

  kylin的設計思想是空間換時間,將hive上的大表的維度全部排列組合計算也將度量提前計算然后存入HBase庫,這個步驟在kylin中稱之為build cube。

在查詢的時候已經建立cube的hive表會直接訪問HBase的scan來拿出結果,對於度量則可以直接get即可。由於數據量的膨脹關系,數據的維度需要控制在15個以下。另外由於是預計算結果所以數據

在確定列等信息后不能修改,不能修改表結構。

 

2.環境說明

  hadoop CDH5.4.2 ----- 需要打上MAPREDUCE-6213補丁

  HBase CDH5.7.0--------kylin只支持HBase1.1.0以上的版本

  Hive apache-hive-2.0.1

3.安裝步驟

  1.下載kylin:

    http://kylin.apache.org/cn/download/

  2.下載tomcat:

    http://tomcat.apache.org/

    (以上版本需要根據自己的需要選擇,本次使用的是 apache-kylin-1.6.0-cdh5.7 和 apache-tomcat-8.5.11

  3.設定環境變量:

  export CATALINA_HOME=/Users/apple/Desktop/software/apache-tomcat-8.5.11

  export KYLIN_HOME=/Users/apple/Desktop/hadoop2/apachesrc/kylin/bin/apache-kylin-1.6.0-cdh5.7-bin

  4.修改配置文件kylin.properties,增加如下兩項目:

kylin.job.jar=/Users/apple/Desktop/hadoop2/apachesrc/kylin/bin/apache-kylin-1.6.0-cdh5.7-bin/lib/kylin-job-1.6.0.jar
kylin.coprocessor.local.jar=/Users/apple/Desktop/hadoop2/apachesrc/kylin/bin/apache-kylin-1.6.0-cdh5.7-bin/lib/kylin-coprocessor-1.6.0.jar

    需要將kylin.coprocessor.local.jar指定的jar包放到hbase集群的lib下。

  5.  kylin依賴的服務需要在kylin本地安裝服務器上有拷貝(可以不起服務),同時需要如下進行環境變量的設定:這樣kylin可以連接hive hbase以及hadoop集群。

export HIVE_HOME=/Users/apple/Desktop/hadoop2/apachesrc/hive/2.0.1/bin/apache-hive-2.0.1-bin
export HIVE_CONF_DIR=/Users/apple/Desktop/hadoop2/apachesrc/hive/2.0.1/bin/config
export HCAT_HOME=$HIVE_HOME/hcatalog
export HIVE_CONF=/Users/apple/Desktop/hadoop2/apachesrc/hive/2.0.1/bin/config
export HADOOP_HOME=/Users/apple/Desktop/hadoop2/cdh/hadoop/bin/hadoop-2.6.0-cdh5.4.2
export HADOOP_CONF_DIR=/Users/apple/Desktop/hadoop2/cdh/hadoop/bin/config
#export YARN_HOME=$HADOOP_HOME
#export YARN_CONF_DIR=$HADOOP_CONF_DIR
#export HBASE_HOME=/Users/apple/Desktop/hadoop2/cdh/hbase/bin/hbase-1.0.0-cdh5.4.2
export HBASE_HOME=/Users/apple/Desktop/hadoop2/cdh/hbase/bin/hbase-1.2.0-cdh5.7.0
export HBASE_CONF_DIR=/Users/apple/Desktop/hadoop2/cdh/hbase/bin/config
export PATH=$HIVE_HOME/bin:$HBASE_HOME/bin:$KYLIN_HOME/bin:$HCAT_HOME/bin:$CATALINA_HOME/bin:$SBT_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF_HOME/bin:$JAVA_HOME/bin:$ANT_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

 

  6. 需要開啟hive的遠程thrift的metastare服務,kylin在sync hive表元數據的時候需要連接這個服務。

nohup hive --service metastore -p 9083 &

 

  7. 啟動kylin

     kylin.sh start

   啟動過程中會對依賴的服務進行連通性的檢查:

if [ -z "$KYLIN_HOME" ]
then
    echo 'please make sure KYLIN_HOME has been set'
    exit 1
else
    echo "KYLIN_HOME is set to ${KYLIN_HOME}"
fi

if [ -z "$(command -v hbase version)" ]
then
    echo "Please make sure the user has the privilege to run hbase shell"
    exit 1
fi

if [ -z "$(command -v hive --version)" ]
then
    echo "Please make sure the user has the privilege to run hive shell"
    exit 1
fi

if [ -z "$(command -v hadoop version)" ]
then
    echo "Please make sure the user has the privilege to run hadoop shell"
    exit 1
fi

  

  8.  默認用戶名/密碼 ADMIN / KYLIN

     

 

4.簡單使用

  一般使用步驟為:0.登錄->1.建立項目->2.同步hive表元數據(事實表)->3.在事實表基礎上建立模型->4.在模型基礎上建立cube->5.build cube->通過cube查詢

  0.登錄kylin

  1.建立項目:

  

  2.同步hive表元數據(事實表)

  

  3.基於hive事實表進行模型的建立

      

  說明:

    1.選擇模型基於的事實表

    2.選擇事實表中那些對於那些維度進行建模,被選維度會被用於cube的計算。

    3.選擇事實表中那些度量進行建模,被選度量在計算cube的時候直接進行預計算結果。

    4.選擇事實表中的分區信息以及數據過濾,數據過濾條件中不能有時間或者分區字段的過濾,這樣會影響增量刷cube(因為增量是基於時間的(或者說分區)進行的)

 

  4.基於模型建立cube

     

    說明:

      1.新建cube的時候選擇基於model

      2.選擇要創建的維度信息

      3.選擇哪些度量需要做聚合計算,以及做什么聚合計算

      4.選擇增量刷新cube的定時任務,以及此模型開始的分區信息

      5.當設定完畢保存后產生cube任務,點擊build

      6.通過監控頁面可以查看到當前cube任務的運行信息,主要通過MR計算得出立方體結構數據,然后將這些數據通過bulkload到HBase,最后做清理動作

 

5.查詢(頁面)

    當cube創建完畢后可以通過jdbc鏈接或者直接通過查詢頁面進行查詢,只有已經建立了cube的事實表才能做查詢。

    

6.查詢(jdbc)

  驅動請在此下載:https://javalibs.com/artifact/org.apache.kylin/kylin-jdbc

 

  樣例代碼:

  

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import org.apache.kylin.jdbc.Driver;


public class JdbcMain {

    public static void main(String[] args) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
        Driver driver = (Driver) Class.forName("org.apache.kylin.jdbc.Driver").newInstance();
        Properties info = new Properties();
        // 登錄web的密碼,更多用戶可以被設定 也可以鏈接ldap連接到內部賬戶服務
        info.put("user", "ADMIN");
        info.put("password", "KYLIN");
        // test 為工程名,指明此鏈接去哪一個工程下去查詢
        Connection conn = driver.connect("jdbc:kylin://applexf.local:7070/test", info);
        Statement state = conn.createStatement();
        ResultSet resultSet = state.executeQuery("select * from TABLEFORKYLIN");
        while (resultSet.next()) {
            System.out.print(resultSet.getString(1) + " ");
            System.out.print(resultSet.getString(2) + " ");
            System.out.print(resultSet.getString(3) + "\n");
        }
    }

}

 

  結果:

  

 

  

附錄:

  1. 參考https://my.oschina.net/aibati2008/blog/745389來使用

完畢。

 


免責聲明!

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



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