如何搭建企业大数据分析平台
討論一:
先來談談企業搭建大數據分析平臺的背景。
1、搭建大數據平臺離不開BI。在大數據之前,BI就已經存在很久了,簡單把大數據等同于BI,明顯是不恰當的。但兩者又是緊密關聯的,相輔相成的。BI是達成業務管理的應用工具,沒有BI,大數據就沒有了價值轉化的工具,就無法把數據的價值呈現給用戶,也就無法有效地支撐企業經營管理決策;大數據則是基礎,沒有大數據,BI就失去了存在的基礎,沒有辦法快速、實時、高效地處理數據,支撐應用。 所以,數據的價值發揮,大數據平臺的建設,必然是囊括了大數據處理與BI應用分析建設的。
2、大數據擁有價值。來看看數據使用金字塔模型,從數據的使用角度來看,數據基本有以下使用方式:
自上而下,可以看到,對數據的要求是不一樣的:
- 數據量越來越大,維度越來越多。
- 交互難度越來越大。
- 技術難度越來越大。
- 以人為主,逐步向機器為主。
- 用戶專業程度逐步提升,門檻越來越高。
企業對數據、效率要求的逐步提高,也給大數據提供了展現能力的平臺。企業構建大數據平臺,歸根到底是構建企業的數據資產運營中心,發揮數據的價值,支撐企業的發展。
整體方案思路如下:
建設企業的基礎數據中心,構建企業統一的數據存儲體系,統一進行數據建模,為數據的價值呈現奠定基礎。同時數據處理能力下沉,建設集中的數據處理中心,提供強大的數據處理能力;通過統一的數據管理監控體系,保障系統的穩定運行。有了數據基礎,構建統一的BI應用中心,滿足業務需求,體現數據價值。
提到大數據就會提到hadoop。大數據并不等同于hadoop,但hadoop的確是最熱門的大數據技術。下面以最常用的混搭架構,來看一下大數據平臺可以怎么來搭建,支撐企業應用:
通過Kafka作為統一采集平臺的消息管理層,靈活的對接、適配各種數據源采集(如集成flume),提供靈活、可配置的數據采集能力。
利用spark和hadoop技術,構建大數據平臺最為核心的基礎數據的存儲、處理能力中心,提供強大的數據處理能力,滿足數據的交互需求。同時通過sparkstreaming,可以有效滿足企業實時數據的要求,構建企業發展的實時指標體系。
同時為了更好的滿足的數據獲取需求,通過RDBMS,提供企業高度匯總的統計數據,滿足企業常規的統計報表需求,降低使用門檻。對大數據明細查詢需求,則通過構建HBase集群,提供大數據快速查詢能力,滿足對大數據的查詢獲取需求。
討論二:
面對海量的各種來源的數據,如何對這些零散的數據進行有效的分析,得到有價值的信息一直是大數據領域研究的熱點問題。大數據分析處理平臺就是整合當前主流的各種具有不同側重點的大數據處理分析框架和工具,實現對數據的挖掘和分析,一個大數據分析平臺涉及到的組件眾多,如何將其有機地結合起來,完成海量數據的挖掘是一項復雜的工作。
在搭建大數據分析平臺之前,要先明確業務需求場景以及用戶的需求,通過大數據分析平臺,想要得到哪些有價值的信息,需要接入的數據有哪些,明確基于場景業務需求的大數據平臺要具備的基本的功能,來決定平臺搭建過程中使用的大數據處理工具和框架。
(1)操作系統的選擇
操作系統一般使用開源版的RedHat、Centos或者Debian作為底層的構建平臺,要根據大數據平臺所要搭建的數據分析工具可以支持的系統,正確的選擇操作系統的版本。
(2)搭建Hadoop集群
Hadoop作為一個開發和運行處理大規模數據的軟件平臺,實現了在大量的廉價計算機組成的集群中對海量數據進行分布式計算。Hadoop框架中最核心的設計是HDFS和MapReduce,HDFS是一個高度容錯性的系統,適合部署在廉價的機器上,能夠提供高吞吐量的數據訪問,適用于那些有著超大數據集的應用程序;MapReduce是一套可以從海量的數據中提取數據最后返回結果集的編程模型。在生產實踐應用中,Hadoop非常適合應用于大數據存儲和大數據的分析應用,適合服務于幾千臺到幾萬臺大的服務器的集群運行,支持PB級別的存儲容量。
Hadoop家族還包含各種開源組件,比如Yarn,Zookeeper,Hbase,Hive,Sqoop,Impala,Spark等。使用開源組件的優勢顯而易見,活躍的社區會不斷的迭代更新組件版本,使用的人也會很多,遇到問題會比較容易解決,同時代碼開源,高水平的數據開發工程師可結合自身項目的需求對代碼進行修改,以更好的為項目提供服務。
(3)選擇數據接入和預處理工具
面對各種來源的數據,數據接入就是將這些零散的數據整合在一起,綜合起來進行分析。數據接入主要包括文件日志的接入、數據庫日志的接入、關系型數據庫的接入和應用程序等的接入,數據接入常用的工具有Flume,Logstash,NDC(網易數據運河系統),sqoop等。對于實時性要求比較高的業務場景,比如對存在于社交網站、新聞等的數據信息流需要進行快速的處理反饋,那么數據的接入可以使用開源的Strom,Spark streaming等。
當需要使用上游模塊的數據進行計算、統計和分析的時候,就需要用到分布式的消息系統,比如基于發布/訂閱的消息系統kafka。還可以使用分布式應用程序協調服務Zookeeper來提供數據同步服務,更好的保證數據的可靠和一致性。
數據預處理是在海量的數據中提取出可用特征,建立寬表,創建數據倉庫,會使用到HiveSQL,SparkSQL和Impala等工具。隨著業務量的增多,需要進行訓練和清洗的數據也會變得越來越復雜,可以使用azkaban或者oozie作為工作流調度引擎,用來解決有多個hadoop或者spark等計算任務之間的依賴關系問題。
(4)數據存儲
除了Hadoop中已廣泛應用于數據存儲的HDFS,常用的還有分布式、面向列的開源數據庫Hbase,HBase是一種key/value系統,部署在HDFS上,與Hadoop一樣,HBase的目標主要是依賴橫向擴展,通過不斷的增加廉價的商用服務器,增加計算和存儲能力。同時hadoop的資源管理器Yarn,可以為上層應用提供統一的資源管理和調度,為集群在利用率、資源統一等方面帶來巨大的好處。
Kudu是一個圍繞Hadoop生態圈建立的存儲引擎,Kudu擁有和Hadoop生態圈共同的設計理念,可以運行在普通的服務器上,作為一個開源的存儲引擎,可以同時提供低延遲的隨機讀寫和高效的數據分析能力。Redis是一種速度非常快的非關系型數據庫,可以將存儲在內存中的鍵值對數據持久化到硬盤中,可以存儲鍵與5種不同類型的值之間的映射。
(5)選擇數據挖掘工具
Hive可以將結構化的數據映射為一張數據庫表,并提供HQL的查詢功能,它是建立在Hadoop之上的數據倉庫基礎架構,是為了減少MapReduce編寫工作的批處理系統,它的出現可以讓那些精通SQL技能、但是不熟悉MapReduce、編程能力較弱和不擅長Java的用戶能夠在HDFS大規模數據集上很好的利用SQL語言查詢、匯總、分析數據。Impala是對Hive的一個補充,可以實現高效的SQL查詢,但是Impala將整個查詢過程分成了一個執行計劃樹,而不是一連串的MapReduce任務,相比Hive有更好的并發性和避免了不必要的中間sort和shuffle。
Spark可以將Job中間輸出結果保存在內存中,不需要讀取HDFS,Spark啟用了內存分布數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。Solr是一個運行在Servlet容器的獨立的企業級搜索應用的全文搜索服務器,用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML,生成索引,或者通過HTTP GET操作提出查找請求,并得到XML格式的返回結果。
還可以對數據進行建模分析,會用到機器學習相關的知識,常用的機器學習算法,比如貝葉斯、邏輯回歸、決策樹、神經網絡、協同過濾等。
(6)數據的可視化以及輸出API
對于處理得到的數據可以對接主流的BI系統,比如國外的Tableau、Qlikview、PowrerBI等,國內的SmallBI和新興的網易有數(可免費試用)等,將結果進行可視化,用于決策分析;或者回流到線上,支持線上業務的發展。
成熟的搭建一套大數據分析平臺不是一件簡單的事情,本身就是一項復雜的工作,在這過程中需要考慮的因素有很多,比如:
- 穩定性,可以通過多臺機器做數據和程序運行的備份,但服務器的質量和預算成本相應的會限制平臺的穩定性;
- 可擴展性:大數據平臺部署在多臺機器上,如何在其基礎上擴充新的機器是實際應用中經常會遇到的問題;
- 安全性:保障數據安全是大數據平臺不可忽視的問題,在海量數據的處理過程中,如何防止數據的丟失和泄漏一直是大數據安全領域的研究熱點。
討論三:
大數據分析平臺實現技術
1 硬件平臺
大數據分析平臺需要進行 PB 級數據的讀取、寫入,需要進行數據挖掘模型的大規模運算,需要進行預測結果的發布,對底層基礎硬件的磁盤 IO 和運算速度要求很高,同時需要滿足分布式、動態擴展的要求,因此采用配置為 2 路 8 核CPU、128GB 內存、千兆網卡的x86架構 PC Server 服務器。
2 平臺軟件
操作系統軟件采用 Red Hat,數據采集采用 Flume-NG, 海量數據存儲及分布式計算采用Hadoop,數據清洗采用 Hive,數據挖掘引擎采用 Spark R,預測結果保存在 HBase 中。
采 用 HAProxy+Keepalived+Flume-NG 構建高性能高可用分布式數據采集系統。
采用 Hadoop 構建 PB 級大數據平臺,提供海量數據存儲和分布式計算。
采用 Hive 做為數據清洗引擎,提供 PB級數據預處理、加工、整合服務。
采用 Spark R 組件,Spark R 提供了 Spark中彈性分布式數據集的 API,用戶可以在集群上通過 R shell 交互性的運行 job。數據挖掘模型以 Spark On Yarn 的 yarn-cluster 方式構建大數據分析引擎。
采用 HBase 技術可以提供海量數據的高效發布。
3 大數據挖掘模型開發
數據采集存儲模塊:DPI、業務側、網元側數據通過文件接口方式發送到 Flume-NG 集群,Flume-NG 通過 memory 數據傳輸方式,將接收到的數據實時的通過 hdfs 方式匯聚到大數據分析平臺。
數據清洗模塊:通過編寫 HQL 腳本對數據進行清洗、轉換,形成特征寬表。
數據挖掘模塊:基于特征寬表的數據建模采用 Spark R, 調用聚類、分類等算法,進行模型開發、模型評估、模型應用。
分析結果發布:模型應用的結果集存儲在HBase 中,首先需要在 HBase 中新建存儲結果集的 HBase 表,通過 Map Reduce 生成 HFile文件,然后通過 Bulk Load 方式入庫。數據的調用通過 HBase API 實現,數據的展現通過ECharts 技術實現。
可以關注一下ETHINK數據智能分析平臺
討論四:
提到大數據,無可避免的就會提到Hadoop。盡管大數據并不等同于Hadoop,但Hadoop確實是最熱門的大數據技術。下面是最常用的混搭架構,來看一下大數據平臺可以怎么搭建,支撐企業應用:
通過Kafka作為統一采集平臺的消息管理層,靈活的對接、適配各種數據源采集(如集成flume),提供靈活、可配置的數據采集能力。
利用Spark和Hadoop技術,構建大數據平臺最為核心的基礎數據的存儲、處理能力中心,提供強大的數據處理能力,滿足數據的交互需求。同時通過Sparkstreaming,可以有效滿足企業實時數據的要求,構建企業發展的實時指標體系。
同時為了更好的滿足的數據獲取需求,通過RDBMS,提供企業高度匯總的統計數據,滿足企業常規的統計報表需求,降低使用門檻。對大數據明細查詢需求,則通過構建HBase集群,提供大數據快速查詢能力,滿足對大數據的查詢獲取需求。討論五:
如果用開源產品搭建大數據平臺,還是很繁瑣的,需要對細節比較了解。
可以選擇商業版的hadoop平臺,支持可視化一鍵部署。
有的大數據平臺廠商利用的docker技術,直接就秒級創建一個大數據分布式平臺
總結
以上是生活随笔為你收集整理的如何搭建企业大数据分析平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RHCA红帽认证架构师考试分享
- 下一篇: 大数据采集方法