新手入門必備:kylin安裝教程介紹!

趙鈺瑩發表於2018-08-02

1. 背景

最近在學習kylin,在安裝的時候遇到一些坑,特意記錄起來,也希望同樣在學習kylin的人,少踩一些坑(要是連安裝都過不去,還怎麼學!!!)。

2. 環境

我選的kylin版本是1.5.4,因為買了一本叫《Apache kylin權威指南》,書中以1.5.x為藍本,為了避免少踩坑,保持和書中版本一致。

關於kylin安裝環境,參考 ,下面是我自己的環境,只是為了學習,所有的安裝都是偽分散式的,也沒有關注高可用

  1. Ubuntu 14.04.5 LTS

  2. hadoop-2.7.1.tar.gz

  3. jdk-8u172-linux-x64.tar.gz

  4. hbase-1.2.5-bin.tar.gz

  5. apache-kylin-1.5.4-HBase1.x-bin.tar.gz

  6. apache-hive-1.2.1-bin.tar.gz

特別注意點

  1. kylin的版本要和hbase的版本對應,具體參考官網說明( ),其實kylin打包的名字也能看出來

  2. 注意hadoop和hbase的版本( )

  3. jdk和hbase的版本( )

  4. hive和jdk版本( )

  5. 最好在linux環境下安裝,在mac下,啟動kylin的時候,指令碼會報錯,當然可以改指令碼 ( )。此外,在Ubuntu下安裝也不省心,啟動kylin也會報錯,改指令碼吧。那麼,最好使用centos,我嘗試了,不會報錯。

3. 安裝

  1. 下載安裝包,這個連結可以下載到apache所有的安裝包,但速度不快,有些找不到的安裝包,可以在這裡下載( ),解壓

  2. 設定環境變數

export JAVA_HOME=/root/jdk1.8.0_172
export HADOOP_HOME=/root/hadoop-2.7.1
export HIVE_HOME=/root/hive-1.2.1
export HBASE_HOME=/root/hbase-1.2.5
export KYLIN_HOME=/root/kylin-1.5.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$KYLIN_HOME/bin
  1. 安裝hadoop,主要編輯的檔案有:core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml、yarn-site.xml(都在$HADOOP_HOME/etc/hadoop目錄內)( )

    然後,format namenode   bin/hdfs namenode -format ,啟動hdfs sbin/start-dfs.sh ,啟動yarn sbin/start-yarn.sh ,
    可以查namenode的情況, 可以檢視resourcemanager情況

  • ssh to localhost without a passphrase, execute the following commands

    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
      $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      $ chmod 0600 ~/.ssh/authorized_keys
    
  • hadoop-env.sh,加一行JAVA_HOME

    export JAVA_HOME=/root/jdk1.8.0_172
    
  • core.xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/root/tmp</value>
        </property>
    </configuration>
    
  • hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
    
  • mapred-site.xml:jobhistory記得也要配置,我之前沒有配置,導致使用kylin的sampldata構建cube失敗

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>localhost:10020</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>localhost:19888</value>
        </property>
    </configuration>
    
  • yarn-site.xml

    <configuration>
    <!-- Site specific YARN configuration properties -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    
  • 安裝hive:主要編輯的檔案為hive-site.xml,此檔案透過copy hive-default.xml.template而來( )

    • 在hdfs上面建立目錄

      $ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
      $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
      $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
      $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse
      
    • 修改hive-site.xml,主要改的地方為

      <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>hive</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>hive</value>
      </property>
      

      上面就是使用mysql儲存hive的後設資料,如果出現SSL問題,就把useSSL置為false, 特別注意,不要使用預設的derby,否則在執行kylin的sampledata時,無法在hive中建立表 ,此外,還需要把hive-site.xml中的 s y s t e m : j a v a . i o . t m p d i r system:java.io.tmpdir和 {system:user.name}分別替換成/tmp和${user.name},當然還需要把mysql-connector-java.x.jar二方包加入hive的lib目錄中, 特別注意,使用5.x版本,不要使用6.x版本 。最後,執行 bin/hive

  • 安裝hbase:主要修改的檔案為hbase-env.sh、hbase-site.xml( )

    • 修改hbase-env.sh,新增 export JAVA_HOME=/root/jdk1.8.0_172

    • 修改hbase-site.xml

      <configuration>
          <property>
              <name>hbase.rootdir</name>
              <value>hdfs://localhost:9000/hbase</value>
          </property>
          <property>
              <name>hbase.cluster.distributed</name>
              <value>true</value>
          </property>
          <property>
              <name>hbase.zookeeper.property.dataDir</name>
              <value>/root/tmp/hbase/zookeeper</value>
        </property>
      </configuration>
      

      特別注意,對於偽分散式安裝,hbase.cluster.distributed要設定為true。此外,這裡使用hbase內建的zookeeper。 最後,執行bin/satrt-hbase.sh,啟動hbase

  • 安裝kylin

    • 修改check-env.sh:可以先執行 bin/check-env.sh ,一般來說配置了上面所述的環境變數,是可以透過check,但是這個指令碼在mac和ubuntu下執行還是有問題,mac下的問題我沒有解決,Ubuntu下面問題解了。原因是 get-properties.sh 內容在Ubuntu下執行有問題。不過在centos下沒有這個問題( )

      ## 原始檔案
      if [ $# != 1 ]
      then
          echo 'invalid input'
          exit -1
      fi
      IFS=$'\n'
      result=
      for i in `cat ${KYLIN_HOME}/conf/kylin.properties | grep -w "^$1" | grep -v '^#' | awk -F= '{ n = index($0,"="); print substr($0,n+1)}' | cut -c 1-`
      do
         :
         result=$i
      done
      echo $result
      
      ## 修改後的檔案
      if [ $# != 1 ]
      then
          echo 'invalid input'
          exit -1
      fi
      #IFS=$'\n'
      result=`cat ${KYLIN_HOME}/conf/kylin.properties | grep -w "^$1" | grep -v '^#' | awk -F= '{ n = index($0,"="); print substr($0,n+1)}' | cut -c 1-`
      #for i in `cat ${KYLIN_HOME}/conf/kylin.properties | grep -w "^$1" | grep -v '^#' | awk -F= '{ n = index($0,"="); print substr($0,n+1)}' | cut -c 1-`
      #do
      #   :
      #   result=$i
      #done
      echo $result
      
    • 我目前使用的是apache-kylin-1.5.4-HBase1.x-bin.tar.gz版本,此版本在conf目錄下,把壓縮相關的配置註釋了,包括kylin_hive_conf.xml、kylin_job_conf_inmem.xml、 kylin_job_conf.xml、kylin.properties,我之前用1.5.3並沒有註釋掉,導致在執行構建cube是出現snappy不存在問題。

      # Compression codec for htable, valid value [none, snappy, lzo, gzip, lz4]
      # 1.5.3預設未snappy,但是我使用的hadoop的並沒有snappy壓縮功能,所以要麼把壓縮相關的配置註釋掉,或者重新打包hadoop
      kylin.hbase.default.compression.codec=none
      

      之後,執行 bin/kylin.sh satrt ,啟動成功後,訪問 ,使用者名稱是ADMIN,密碼是KYLIN。然後可以執行 bin/sample.sh ,體驗下kylin,執行完 sample.sh 後重啟kylin,就可以build cube了。

    3. 其他

    1.   最好使用linux

    2. 執行sample.sh後hive無法找到表   不要使用derby,使用mysql

    3. build cube出現 Unexpected exception: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: native snappy library not available: this version of libhadoop was built without snappy support.

    【本文來源於雲棲社群,原文連結:,作者: 徐潔陽

    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2169014/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章