目前市場上常見的企業級大數據平台型的產品主流的有兩個,一個是Cloudera公司推出的CDH,一個是Hortonworks公司推出的一套HDP,其中HDP是以開源的Ambari作為一個管理監控工具,CDH對應的是Cloudera Manager,國內也有像星環這種公司專門做大數據平台。我們公司最初是使用CDH的環境,近日領導找到我讓我基於Ambari做一個公司自己的數據平台產品。最初接到這個任務我是拒絕的,因為已經有了很完善很成熟的數據平台產品,小公司做這個東西在我看來是浪費人力物力且起步太晚。后來想想如果公司如果有自己數據平台的產品后續在客戶面前也能證明自己的技術實力且我個人也能從源碼級別更深入的學習了解大數據生態圈的各個組件。
個人在公司的數據平台從無到有的這個過程。認為建設一個自己的數據平台應該包含三個部分。包括基礎設施建設、大數據平台建設、業務系統數據接口三部分組成。其中基礎設施建設初期采用對台Linux服務器作為硬件基礎設施,后續技術成熟可以采用容器技術更優的配置資源。大數據平台包含數據接入模塊,數據存儲模塊,數據計算模塊,資源調度模塊,集群監控模塊組成,致力於完成數據存儲、流計算、批處理、交互式分析等多種需求。本文將重點介紹大數據平台建設規划。業務系統數據接口是根據不同業務系統需求,對外暴露對應的數據接口提供數據。
1. 數據平台架構
數據平台按數據處理方式包含數據流處理和數據批處理兩種方式,其中數據流處理采用Storm計算框架,目前建議只做簡單邏輯處理,計算結果僅用作實時數據展示,后續技術成熟可加入實時ML模塊。批處理針對於數據倉庫,通過采集程序、對接業務系統或收集業務系統日志等數據,數據存儲底層使用分布式文件系統HDFS,基於多種業務需求構建數據倉庫用於多維度數據分析。數據計算建議采用當下主流的計算引擎Spark。對於非關系型數據通過代碼邏輯進行處理,對於關系型數據采用SQL進行處理,如SparkSQL,Hive,Kylin等組件,計算結果寫入支持后台應用程序快速讀取的數據庫。計算任務通過任務調度系統統一調度執行。數據平台安全機制采用主流的通過主機配置kerberos實現。集群資源監控使用自行開發的XJManager,頁面應包含組件名稱及狀態統計信息,主機健康信息,用戶管理等模塊,實現用戶通過Web頁面就可以安裝配置大數據平台。項目整體架構如下圖所示:
下邊介紹各個模塊:
2.1. 數據接入模塊
包含傳感器數據采集程序接入,使用Flume采集業務系統日志數據,對接其他業務系統數據庫數據。對實時采集的數據使用Kafka作為緩沖。對於對接的業務系統數據如果有操作型數據可以構建ODS系統。用於數據分析的數據(含采集數據和對接業務數據)在Hadoop上構建數據倉庫。
2.2. 數據倉庫模塊
基於Hadoop之上構建數據倉庫。數據來源於多種數據源,針對不同的業務需求設計整理不同的基礎數據表。數據倉庫是一種反范式設計,引入冗余。完全針對不同維度的數據分析需求去設計。
2.3. 流計算模塊
使用Storm作為流計算框架。Storm具有低延時的特點。后續如果數據量吞吐量較大且沒有較高的時效性需求,可以替換SparkStreaming。
2.4. 離線計算模塊
離線處理模塊對於結構化數據使用SQL進行處理,對於非結構化數據編寫代碼進行處理。使用SQL進行大數據量下的計算建議使用SparkSQL,其他常用的使用SQL進行數據計算的組件如傳統的Hive,國人開源的Kylin。(Impala不開源不能整合)。
2.5. 任務調度模塊
集成Oozie和Ext.js自動部署Oozie的web ui,通過xml配置作業依賴,通過property文件配置運行參數,通過ext.js完成web頁面監控。
2.6. 平台安全模塊
Kerberos
2.7. 集群監控模塊
- 實現ambari頁面漢化
- 修改ambari監控頁面樣式
- 實現ambari一鍵安裝部署
目前初期建設待解決的問題如下:
3.1. Ambari源碼理解
Ambari源碼地址:https://github.com/apache/ambari
主要修改部分在ambari-web和ambari-views模塊
3.2. Ambari修改樣式
修改ambari頁面樣式,包含相關logo修改,頁面菜單、操作按鈕、提示等內容漢化。
下圖是原ambari樣式:
3.3. Ambari集成組件
Ambari類似於Cloudera公司的ClouderaManager,使用源碼后編譯也僅僅能夠實現在線安裝組件,在線安裝組件速度慢,不穩定,易出現安裝失敗。所以建議將常用組件集成一起打包,常用組件包括HDFS、MapReduce2、YARN、Hive、Sqoop、Oozie、Zookeeper、Storm、Kafka、Flume、Spark等。提前准備好對應版本的組件安裝部署時從本地安裝提升速度也更加穩定。
3.4. 一鍵部署腳本編寫
目前離線安裝ambari需要提前准備好ambari、HDP、HDP-util三個包構建本地yum源,然后通過yum安裝ambari-server,還需安裝配置關系型數據庫。過程相對於普通用戶較為復雜,建議編寫一鍵安裝腳本,在服務器准備好之后(免密鑰、關閉防火牆、時間同步等),只需運行腳本便可以實現在服務器上安裝部署。