CDH 5.9 之 Kylin 安裝 (SuSE Linux Enterprise 12 SP1)

##前言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

  1. 和hdfs的關係app

    kylin依賴於hdfs存儲數據,因此kylin要有hdfs的寫權限,必須有/kylin目錄webapp

  2. 和hive的關係ide

    kylin須要在hive裏建表,因此必須有hive的建表權限oop

  3. 和yarn的關係rest

    kylin的做業都是map reduce做業,是經過yarn管理的。kylin會讀取yarn中做業的狀態,以判斷做業的狀態。yarn的history log若是沒有配好,會致使kylin沒法找到單步做業運行的正確狀態,結果沒法轉到下一步。code

##安裝步驟

  1. 環境檢查

#hdfs檢查
#使用hadoop命令,檢查集羣上的配置
hadoop fs -ls /kylin #檢查是否有kylin目錄
hadoop fs -ls /user/history #檢查是否有history目錄
#hive檢查
#使用hive或者beeline登陸集羣
  1. 應用安裝

  2. 下載最新的包,這個沒有問題。
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
  1. 執行檢查程序
# /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>
相關文章
相關標籤/搜索