部署kylin非常簡單,稱為非侵入式安裝,也就是不需要去修改已有的
kylin部署的架構是乙個分層的結構,最底層是資料**層,我們可以通過sqoop等工具將資料遷移到hdfs分布式檔案系統。kylin依賴hadoop平台,包括元件hbase,hive,mapreduce等,即kylin執行在hadoop構建的大資料層之上,kylin平台部署好之後,業務系統連線kylin,kylin就把壓力發布到hadoop上做平行計算和查詢。
對於kylin的部署架構,一般都四種典型部署方式,從簡單到複雜。
1. 第一種方式:
單例項部署方式(single instance)。在hadoop集群的乙個節點上部署,然後啟動即可。建模人員通過kylin web登入,進行建模和建立cube。業務分析系統等傳送sql到kylin,kylin查詢cube並返回結果。
這種部署最大特點是簡單快捷,而是單點,如果併發請求比較多(qps > 50),單台kylin節點將成為瓶頸,所以推薦使用集群(cluster)部署方式。
2. 第二種方式:
kylin部署集群方式相對來說也簡單,只需要增加kylin的節點數,因為kylin的元資料(metadata)是儲存在hbase中,只需要在kylin中配置,讓kylin的每個節點都能訪問同乙個metadata表就形成了kylin集群(kylin.metadata.url 值相同)。並且kylin集群中只有乙個kylin例項執行任務引擎(kylin.server.mode=all),其它kylin例項都是查詢引擎(kylin.server.mode=query)模式。通常可以使用ldap來管理使用者許可權。
為了實現負載均衡,即將不同使用者的訪問請求通過load balancer(負載均衡器)(比如lvs,nginx等)分發到每個kylin節點,保證kylin集群負載均衡。對於負載均衡器可以啟用ssl加密,安裝防火牆,對外部使用者只用暴露負載均衡器的位址和埠號,這樣也保證kylin系統對外部來說是隔離的。
我們的生產環境中使用的lb是nginx,使用者通過lb的位址訪問kylin時,lb將請求通過負載均衡排程演算法分發到kylin集群的某乙個節點,不會出現單點問題,同時如果某乙個kylin節點掛掉了,也不會影響使用者的分析。
這種方式也不是完美的,但是一般場景下是可以滿足的。
3. 第三種方式:
kylin非常適合讀寫分離,原因是kylin的工作負載有兩種:
其實kylin也很容易部署這種組網方式。你需要單獨部署一套hbase集群,在部署kylin時,hadoop配置項指向運算的集群,hbase的配置項指向單獨部署的hbase集群。說白了,就是hadoop和hbase集群的分離。
這種部署方式通常有以下步驟:
步驟一:分布部署hadoop(mapreduce計算集群,以下簡稱計算)集群和hbase(hdfs儲存,以下簡稱儲存)集群;兩套集群環境的hadoop核心版本要一致,分別有各自的hdfs、zookeeper等元件;
步驟二:在準備執行kylin的伺服器上,安裝和配置hadoop(計算)集群的客戶端;通過 hadoop , hdfs , hive , mapred 等命令,可以訪問hadoop集群上的服務和資源;
步驟三:在準備執行kylin的伺服器上,安裝和配置hbase(儲存)集群的hbase客戶端;通過 hbase 命令,可以訪問和操作hbase集群;
步驟四:確保hadoop(計算)集群和hbase(儲存)集群的網路互通,且無需額外驗證;可以從hadoop(計算)集群的任一節點上,拷貝檔案到hbase(儲存)集群的任一節點;
步驟五:確保在準備執行kylin的伺服器上,通過hdfs命令列加上hbase集群namenode位址的方式(比如hdfs dfs -ls hdfs://pro-jsz800000:8020/),可以訪問和操作儲存集群的hdfs。
步驟六:為了提公升kylin查詢響應效率,準備執行kylin的伺服器,在網路上應靠近hbase集群,以確保密集查詢時的網路低延遲;
步驟七:編輯conf/kylin.properties,設定 kylin.hbase.cluster.fs 為hbase集群hdfs的url,例如:kylin.hbase.cluster.fs=hdfs://pro-jsz800000:8020
步驟八:重啟kylin服務例項
4. 第四種方式:
前面三種方式,應該是絕大多數公司或個人研究採用的部署方式,其實還有一種更高階的部署是staging和production多環境的部署。其實做開發的一般都會經歷這樣的環境,我們乙個需求完成後,首先會進行開發環境測試,然後部署到staging(可以理解為production生產環境的映象,或者測試環境),最後沒有問題後才會發布到production生產環境,這樣做可以避免不當的設計導致對生產環境的破壞。
使用這種方案的場景:
假如乙個新使用者使用kylin,可能他對cube設計不是很熟悉,建立了乙個非常不好的cube,導致cube計算時產生大量的不必要的運算,或者查詢花費的時間很長,會對其他業務造成影響。我們不希望這個有問題的cube能進入生產環境,那麼就需要建立乙個staging環境,或則成為qa的環境。
kylin提供了乙個工具,幾分鐘就可以將乙個cube從staging環境遷移到production環境,不需要在新環境中重新build。因為在生產環境的cube,將不允許修改,只能做增量的build。這樣做保證了staging和production的分離,保證發布到production上的cube都是經過評審過的,所以對production環境不會造成不可預料的影響,從而保證了production環境的穩定。
CM CDH構建企業大資料平台系列(十)
1 防火牆是幹什麼的?為什麼要關閉防火牆?防火牆是對我們的伺服器進行的一種保護,但是有時候也會妨礙集群間的相互通訊,所以我們需要關閉防火牆。2 怎麼關閉防火牆?常見的兩種方法 1 臨時性關閉 開啟 即輸入service iptables stop start 如果要在防火牆中設定某些埠的開關,可以修...
CM CDH構建企業大資料平台系列(十一)
1 ssh是什麼?為什麼要配置ssh免密碼登入?ssh是乙個可以在應用程式中提供安全通訊的乙個協議,通過ssh可以安全地進行網路資料傳輸,它的主要原理就是利用非對稱加密體系,對所有待傳輸的資料進行加密,保證資料在傳輸時不被惡意破壞 洩露或者篡改。但是hadoop使用ssh主要不是用來進行資料傳輸的,...
CM CDH構建企業大資料平台系列(十五)
一 什麼叫構建本地yum源?構建本地yum源又叫部署本地庫,實際上就是安裝乙個映象伺服器 映象伺服器 mirror server 與主伺服器的服務內容都是一樣的,只是放在不同的地方,分擔主機的負載。簡單來說就是和照鏡子似的,能看,但不是原版的。在網上內容完全相同而且同步更新的兩個或多個伺服器,除主伺...