最近在學習kylin,在安裝的時候遇到一些坑,特地記錄起來,也但願一樣在學習kylin的人,少踩一些坑(要是連安裝都過不去,還怎麼學!!!)。html
我選的kylin版本是1.5.4,由於買了一本叫《Apache kylin權威指南》,書中以1.5.x爲藍本,爲了不少踩坑,保持和書中版本一致。java
關於kylin安裝環境,參考Hadoop Environment,下面是我本身的環境,只是爲了學習,全部的安裝都是僞分佈式的,也沒有關注高可用node
特別注意點:mysql
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
安裝hadoop,主要編輯的文件有:core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml、yarn-site.xml(都在$HADOOP_HOME/etc/hadoop目錄內)(hadoop Pseudo-Distributed Operation)linux
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
export JAVA_HOME=/root/jdk1.8.0_172
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/root/tmp</value> </property> </configuration>
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
<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>
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
而後,format namenode bin/hdfs namenode -format
,啓動hdfssbin/start-dfs.sh
,啓動yarnsbin/start-yarn.sh
, http://ip:50070/能夠查namenode的狀況,http://ip:8088/能夠查看resourcemanager狀況web
安裝hive:主要編輯的文件爲hive-site.xml,此文件經過copy hive-default.xml.template而來(hive Installation and Configuration)sql
$ $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
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&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中的${system:java.io.tmpdir}和${system:user.name}分別替換成/tmp和${user.name},固然還須要把mysql-connector-java.x.jar二方包加入hive的lib目錄中,特別注意,使用5.x版本,不要使用6.x版本。最後,運行bin/hive
apache
安裝hbase:主要修改的文件爲hbase-env.sh、hbase-site.xml(quickstart)ubuntu
export JAVA_HOME=/root/jdk1.8.0_172
<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,啓動hbasecentos
安裝kylin
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
# 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
,啓動成功後,訪問http://ip:7070/kylin,用戶名是ADMIN,密碼是KYLIN。而後能夠運行bin/sample.sh
,體驗下kylin,運行完sample.sh
後重啓kylin,就能夠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.