##前言web
Kylin的官網上,關於安裝部分,只有寥寥數語,可是不少人在安裝Kylin的時候,都遇到各類問題。那麼這個究竟是什麼狀況呢? 緣由很簡單:Kylin的check-env.sh,有點弱。不少時候,用戶在安裝kylin時候,並無花太多時間去準備基礎環境,匆匆忙忙就開始安裝了,而後依賴於check-env.sh來檢查環境,覺得經過了就確定沒事。最後就陷入各類莫名其妙的錯誤,沒法自拔。spring
##前提條件apache
Kylin的安裝關鍵,並不在Kylin自己,而是在基礎環境。Kylin依賴4大組件,hdfs,hive,hbase和zookeeper。Kylin能不能正常運行,和上述4大組件是否運行正常,以及是否可以在安裝Kylin的主機上,以客戶端方式正常訪問,有着莫大的關係。tomcat
和hdfs的關係app
kylin依賴於hdfs存儲數據,因此kylin要有hdfs的寫權限,必須有/kylin目錄webapp
和hive的關係ide
kylin須要在hive裏建表,因此必須有hive的建表權限oop
和yarn的關係rest
kylin的做業都是map reduce做業,是經過yarn管理的。kylin會讀取yarn中做業的狀態,以判斷做業的狀態。yarn的history log若是沒有配好,會致使kylin沒法找到單步做業運行的正確狀態,結果沒法轉到下一步。code
##安裝步驟
#hdfs檢查 #使用hadoop命令,檢查集羣上的配置 hadoop fs -ls /kylin #檢查是否有kylin目錄 hadoop fs -ls /user/history #檢查是否有history目錄 #hive檢查 #使用hive或者beeline登陸集羣
cd /usr/local/bin wget http://apache.fayea.com/kylin/apache-kylin-1.6.0/apache-kylin-1.6.0-cdh5.7-bin.tar.gz tar zxvf apache-kylin-1.6.0-cdh5.7-bin.tar.gz
# /usr/local/bin/apache-kylin-1.6.0-cdh5.7-bin/bin.check-env.sh
提示permission denied的錯誤。原來此處要用hadoop用戶,才能在hdfs上建立目錄。別看你是系統管理員,同樣權限不足。解決的方法是:
``` su - hdfs /usr/local/bin/apache-kylin-1.6.0-cdh5.7-bin/bin.check-env.sh ```
此次就檢查經過了。
kylin的文檔,真的不怎麼樣,因此只能本身去找答案.
踩坑之用戶管理
Kylin的用戶管理,竟然沒有文檔,只有一個很簡單的faq裏,很隱晦的提了一句。 Kylin採用多種方式管理用戶。最簡單的是本身在配置文件裏管理用戶。用戶名是明文,密碼是通過encode的密文。 具體的配置文件爲:/opt/apache-kylin-2.0.0-bin/tomcat/webapps/kylin/WEB-INF/classes/kylinSecurity.xml 要修改的地方在:
<beans profile="testing"> <util:list id="adminAuthorities" value-type="org.springframework.security.core.authority.SimpleGrantedAuthority"> <value>ROLE_ADMIN</value> <value>ROLE_MODELER</value> <value>ROLE_ANALYST</value> </util:list> <util:list id="modelerAuthorities" value-type="org.springframework.security.core.authority.SimpleGrantedAuthority"> <value>ROLE_MODELER</value> <value>ROLE_ANALYST</value> </util:list> <util:list id="analystAuthorities" value-type="org.springframework.security.core.authority.SimpleGrantedAuthority"> <value>ROLE_ANALYST</value> </util:list> <bean class="org.springframework.security.core.userdetails.User" id="adminUser"> <constructor-arg value="ADMIN"/> <constructor-arg value="$2a$10$o3ktIWsGYxXNuUWQiYlZXOW5hWcqyNAFQsSSCSEWoC/BRVMAUjL32"/> <constructor-arg ref="adminAuthorities"/> </bean> <bean class="org.springframework.security.core.userdetails.User" id="modelerUser"> <constructor-arg value="MODELER"/> <constructor-arg value="$2a$10$o3ktIWsGYxXNuUWQiYlZXOW5hWcqyNAFQsSSCSEWoC/BRVMAUjL32"/> <!-- value="$2a$10$Le5ernTeGNIARwMJsY0WaOLioNQdb0QD11DwjeyNqqNRp5NaDo2FG"/> --> <constructor-arg ref="modelerAuthorities"/> </bean> <bean class="org.springframework.security.core.userdetails.User" id="analystUser"> <constructor-arg value="ANALYST"/> <constructor-arg value="$2a$10$o3ktIWsGYxXNuUWQiYlZXOW5hWcqyNAFQsSSCSEWoC/BRVMAUjL32"/> <!-- value="$2a$10$s4INO3XHjPP5Vm2xH027Ce9QeXWdrfq5pvzuGr9z/lQmHqi0rsbNi"/> --> <constructor-arg ref="analystAuthorities"/> </bean> <bean id="kylinUserAuthProvider" class="org.apache.kylin.rest.security.KylinAuthenticationProvider"> <constructor-arg> <bean class="org.springframework.security.authentication.dao.DaoAuthenticationProvider"> <property name="userDetailsService"> <bean class="org.springframework.security.provisioning.InMemoryUserDetailsManager"> <constructor-arg> <util:list value-type="org.springframework.security.core.userdetails.User"> <ref bean="adminUser"></ref> <ref bean="modelerUser"></ref> <ref bean="analystUser"></ref> </util:list> </constructor-arg> </bean> </property> <property name="passwordEncoder" ref="passwordEncoder"></property> </bean> </constructor-arg> </bean> <!-- user auth --> <bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/> <scr:authentication-manager alias="testingAuthenticationManager"> <!-- do user ldap auth --> <scr:authentication-provider ref="kylinUserAuthProvider"></scr:authentication-provider> </scr:authentication-manager> </beans>