大資料分析平臺搭建指南

「來源: |企業數字化諮詢 ID:gh_afd51c79091d」

須知

後臺回覆【

技術

】,申請加入

資料分享&

技術交流群

01

先來談談企業搭建大資料分析平臺的背景

1、搭建大資料平臺離不開BI。

在大資料之前,BI就已經存在很久了,簡單把大資料等同於BI,明顯是不恰當的。但兩者又是緊密關聯的,相輔相成的。

BI是達成業務管理的應用工具,沒有BI,大資料就沒有了價值轉化的工具,就無法把資料的價值呈現給使用者,也就無法有效地支撐企業經營管理決策;大資料則是基礎,沒有大資料,BI就失去了存在的基礎,沒有辦法快速、實時、高效地處理資料,支撐應用。所以,資料的價值發揮,大資料平臺的建設,必然是囊括了大資料處理與BI應用分析建設的。

2、大資料擁有價值。

來看看資料使用金字塔模型,從資料的使用角度來看,資料基本有以下使用方式:

大資料分析平臺搭建指南

自上而下,可以看到,對資料的要求是不一樣的:

資料量越來越大,維度越來越多

互動難度越來越大

技術難度越來越大

以人為主,逐步向機器為主

使用者專業程度逐步提升,門檻越來越高

企業對資料、效率要求的逐步提高,也給大資料提供了展現能力的平臺。企業構建大資料平臺,歸根到底是構建企業的資料資產運營中心,發揮資料的價值,支撐企業的發展。

整體方案思路如下:

建設企業的基礎資料中心,構建企業統一的資料儲存體系,統一進行資料建模,為資料的價值呈現奠定基礎。同時資料處理能力下沉,建設集中的資料處理中心,提供強大的資料處理能力;透過統一的資料管理監控體系,保障系統的穩定執行。有了資料基礎,構建統一的BI應用中心,滿足業務需求,體現資料價值。

提到大資料就會提到hadoop。大資料並不等同於hadoop,但hadoop的確是最熱門的大資料技術。下面以最常用的混搭架構,來看一下大資料平臺可以怎麼來搭建,支撐企業應用:

大資料分析平臺搭建指南

透過Kafka作為統一採集平臺的訊息管理層,靈活的對接、適配各種資料來源採集(如整合flume),提供靈活、可配置的資料採集能力。

利用spark和hadoop技術,構建大資料平臺最為核心的基礎資料的儲存、處理能力中心,提供強大的資料處理能力,滿足資料的互動需求。同時透過sparkstreaming,可以有效滿足企業實時資料的要求,構建企業發展的實時指標體系。

同時為了更好的滿足的資料獲取需求,透過RDBMS,提供企業高度彙總的統計資料,滿足企業常規的統計報表需求,降低使用門檻。對大資料明細查詢需求,則透過構建HBase叢集,提供大資料快速查詢能力,滿足對大資料的查詢獲取需求。

02

如何整合大資料處理分析框架和工具?

面對海量的各種來源的資料,如何對這些零散的資料進行有效的分析,得到有價值的資訊一直是大資料領域研究的熱點問題。

大資料分析處理平臺就是整合當前主流的各種具有不同側重點的大資料處理分析框架和工具,實現對資料的挖掘和分析,一個大資料分析平臺涉及到的元件眾多,如何將其有機地結合起來,完成海量資料的挖掘是一項複雜的工作。

在搭建大資料分析平臺之前,要先明確業務需求場景以及使用者的需求,透過大資料分析平臺,想要得到哪些有價值的資訊,需要接入的資料有哪些,明確基於場景業務需求的大資料平臺要具備的基本的功能,來決定平臺搭建過程中使用的大資料處理工具和框架。

(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等,國內的帆軟、SmartBI、永洪等,將結果進行視覺化,用於決策分析。或者回流到線上,支援線上業務的發展。

成熟的搭建一套大資料分析平臺不是一件簡單的事情,本身就是一項複雜的工作,在這過程中需要考慮的因素有很多,比如:

穩定性:

可以透過多臺機器做資料和程式執行的備份,但伺服器的質量和預算成本相應的會限制平臺的穩定性;

可擴充套件性:

大資料平臺部署在多臺機器上,如何在其基礎上擴充新的機器是實際應用中經常會遇到的問題;

安全性:

保障資料安全是大資料平臺不可忽視的問題,在海量資料的處理過程中,如何防止資料的丟失和洩漏一直是大資料安全領域的研究熱點。

03

大資料分析平臺實現技術

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 技術實現。

04

如何選擇大資料平臺?

如果用開源產品搭建大資料平臺,還是很繁瑣的,需要對細節比較瞭解。

可以選擇商業版的hadoop平臺,支援視覺化一鍵部署。

有的大資料平臺廠商利用的docker技術,直接就秒級建立一個大資料分散式平臺

05

搭建大資料平臺需要準備什麼?

在具體回答之前,需要搞清楚以下幾個問題,搞清楚了,其實問題的答案也就有了:

是從個人學習成長的角度想搭建平臺自學?還是現在的公司需要大資料技術進行分析?

(1)如果是從個人學習成長的角度,建議直接按照Hadoop或者Spark的官網教程安裝即可,建議看官網(英文),在大資料技術領域,英語的掌握是非常重要的,因為涉及到元件選型、日後的安裝、部署、運維,所有的任務執行資訊、報錯資訊都是英文的,包括遇到問題的解答,所以還是非常重要的。

(2)如果是公司需要進行大資料分析,那麼還要研究以下幾個問題:

為什麼需要搭建大資料分析平臺?

要解決什麼業務問題?

需要什麼樣的分析?

資料量有多少?

是否有實時分析的需求?

是否有BI報表的需求?

這裡舉一個典型的場景:

公司之前採用Oracle或MySQL搭建的業務資料庫,而且有簡單的資料分析,或者可能採購了BI系統,就是直接用業務系統資料庫進行支援的,現在隨著資料量越來越大,那麼就需要採用大資料技術進行擴容。

搞清楚需求之後,按照以下的步驟進行:

1、整體方案設計

整體方案設計時需要考慮的因素:

資料量有多少:幾百GB?幾十TB?

資料儲存在哪裡:儲存在MySQL中?Oracle中?或其他資料庫中?資料如何從現在的儲存系統進入到大資料平臺中?如何將結果資料寫出到其他儲存系統中?

分析主題是什麼:只有幾個簡單指標?還是說有很多統計指標,需要專門的人員去梳理,分組,並進行產品設計

是否需要搭建整體數倉?

是否需要BI報表:業務人員有無操作BI的能力,或團隊組成比較簡單,不需要前後端人員投入,使用BI比較方便

是否需要實時計算?

2、元件選型

架構設計完成後就需要元件選型了,這時候最好是比較資深的架構師參與設計,選型包括:

離線計算引擎:Hadoop、Spark、Tez……

實時計算引擎:Storm、Flink、Samza、Spark Streaming……

BI軟體:Tableau、QlikView、帆軟……

3、安裝部署

選型完成後,就可以進行安裝部署了,這部分其實是最簡單的,直接按照每個元件的部署要求安裝即可。

4、另一種選擇:採用商用軟體

如果是企業需要搭建大資料平臺,那麼還有一種選擇是直接採用商用的資料平臺。市面上有很多成熟的商用大資料平臺,Cloudera、星環、華為、亞信等等,都有對應的產品線。

06

一般的大資料平臺從平臺搭建到資料分析大概包括以下幾個步驟:

大資料分析平臺搭建指南

1、Linux系統安裝

一般使用開源版的Redhat系統,CentOS作為底層平臺。為了提供穩定的硬體基礎,在給硬碟做RAID和掛載資料儲存節點的時,需要按情況配置。比如,可以選擇給HDFS的namenode做RAID2以提高其穩定性,將資料儲存與作業系統分別放置在不同硬碟上,以確保作業系統的正常執行。

2、分散式計算平臺/元件安裝

當前分散式系統的大多使用的是Hadoop系列開源系統。Hadoop的核心是HDFS,一個分散式的檔案系統。在其基礎上常用的元件有Yarn、Zookeeper、Hive、Hbase、Sqoop、Impala、ElasticSearch、Spark等。

使用開源元件的優點:

1)使用者眾多,很多bug可以在網上找的答案(這往往是開發中最耗時的地方);

2)開源元件一般免費,學習和維護相對方便;

3)開源元件一般會持續更新;

4)因為程式碼開源,如果出現bug可自由對原始碼作修改維護。

常用的分散式資料資料倉庫有Hive、Hbase,其中Hive可以用SQL查詢,Hbase可以快速讀取行。

外部資料庫匯入匯出需要用到Sqoop。Sqoop將資料從Oracle、MySQL等傳統資料庫匯入Hive或Hbase。

Zookeeper是提供資料同步服務, Impala是對hive的一個補充,可以實現高效的SQL查詢

3、資料匯入

前面提到,資料匯入的工具是Sqoop。它可以將資料從檔案或者傳統資料庫匯入到分散式平臺。

4、資料分析

資料分析一般包括兩個階段:資料預處理和資料建模分析。

資料預處理是為後面的建模分析做準備,主要工作時從海量資料中提取可用特徵,建立大寬表。這個過程可能會用到Hive SQL,Spark QL和Impala。

資料建模分析是針對預處理提取的特徵/資料建模,得到想要的結果。如前面所提到的,這一塊最好用的是Spark。常用的機器學習演算法,如樸素貝葉斯、邏輯迴歸、決策樹、神經網路、TFIDF、協同過濾等,都已經在ML lib裡面,呼叫比較方便。

5、結果視覺化及輸出API

視覺化一般式對結果或部分原始資料做展示。一般有兩種情況,行資料展示,和列查詢展示。

大資料分析平臺搭建指南

免責宣告:

本文來源CSDN,作者BLSPers

本公眾號所載文章為本公眾號原創或根據網路搜尋編輯整理,文章版權歸原作者所有。因轉載眾多,無法找到真正來源,如標錯來源,或對於文中所使用的圖片,資料,下載連結中所包含的軟體,資料等,如有侵權,請跟我們聯絡刪除,謝謝

福利