【云駐共創】“大鵬一日同風起”Kunpeng BoostKit 使能套件如何實現大數據場景倍級性能提升?
文章目錄
前言
一、開源大數據與鯤鵬多核結構淵源
1.1、海量數據處理的難題
1.2、大數據并行計算特點天然匹配鯤鵬多核架構
二、開源大數據整體與組件介紹
2.1、大數據組件:Hadoop-HDFS 模塊
2.2、大數據組件:Hadoop-Yarn 模塊
2.3、大數據組件:Hadoop-MapReduce 模塊
2.4、大數據組件:Spark 平臺
三、鯤鵬 BoostKit 使能套件介紹
3.1、鯤鵬 BoostKit 是什么?
3.2、開源使能:開源軟件可用、好用
3.3、基礎加速:超越業界水平的應用性能
3.4、應用加速:極致事務倍級應用性能
四、BoostKit 在開源使能上的結果
4.1、全面支持開源大數據
4.2、開源社區接納 ARM 生態
五、鯤鵬 BoostKit 如何應對大數據關鍵挑戰?
5.1、遇到的問題
5.2、如何應對關鍵挑戰?
六、BoostKit 機器學習/圖算法的深度優化
6.1、算法深度優化實例
6.2、鯤鵬算法庫
七、BoostKit 做了哪些深度優化?
7.1、鯤鵬親和性優化效果
7.2、機器學習算法優化方案:分布式 SVD 算法
7.3、圖分析算法優化方案:分布式 PageRank 算法
八、鯤鵬 BoostKit 機器學習&圖算法的 Spark 性能加速實踐
8.1、環境準備
8.2、環境配置
8.3、部署 Hadoop、Spark 等組件
8.4、算法庫優化效果運行實踐
8.4.1、運行 SVD 算法
8.4.2、運行 PageRank 算法
九、相關材料獲取
9.1、鯤鵬 BoostKit
9.2、機器學習算法加速庫
9.3、圖算法加速庫
總結
前言
在數據和經濟時代,業務和數據的多樣性需要新的計算架構,海量的數據增長也帶來了更高的計算需求。那么在這個過程中,鯤鵬計算產業也正在成為更多計算場景的新一代 IP 基座。基于華為鯤鵬處理器構建的鯤鵬全棧 IT 技術實施設施行業應用以及服務,致力于為智能世界持續提供我們的先進算力支持,使得各個行業可以實現數字化轉型。應用軟件的遷移與優化一直是鯤鵬軟件生態的難點和關鍵。本次鯤鵬 BoostKit 訓練營為開發者介紹如何基于鯤鵬 BoostKit 使能套件實現應用性能的加速,并重點剖析性能優化技術和關鍵能力。
一、開源大數據與鯤鵬多核結構淵源
1.1、海量數據處理的難題
隨著科技的發展,越來越多的行業需要采集更多的數據,如何對海量數據進行分析并得出我們想要的結果就成為了我們所面臨的難題,而大數據技術的迅速發展使得這個問題迎刃而解。
1.2、大數據并行計算特點天然匹配鯤鵬多核架構
海量數據需要更高的并發度來加速數據處理,在數據集非常大的情況下,如果我們跑在單核(或者是順序化)的執行場景下,可能執行過程無法進行或者是效率極其低下,這是我們無法接受的,所以海量的數據需要更高的并發度來處理,那么鯤鵬多核計算的特點就可以完美匹配這個需求,加速大數據的計算性能,提升大數據任務的并發度。
我們以 MapReduce 模型為例進行處理和計算,如下圖所示,我們所采集的源數據是一段英文,我們需要計算這段話中每一個單詞所出現的次數。
可以看到,我們將大量的計算分發到各個節點之上,這就是分布式計算,也是我們所謂的“并發度”的概念。如果我們的并發度提高了,理論上來講,我們整個模型的執行時間也會相應縮短。
二、開源大數據整體與組件介紹
上面我們介紹了開源大數據的概念以及相應的華為鯤鵬多核計算的特點,下面介紹我們在大數據開發中經常會使用到的一些組件。
2.1、大數據組件:Hadoop-HDFS 模塊
HDFS 是 Hadoop 生態的三個核心模塊組成之一,負責分布式存儲。具體結構如下圖所示:
HDFS:是一種分布式存儲系統,采用 Master 和 Slave 的主從結構,主要由 NameNode 和 DataNode 組成。HDFS 會將文件按固定大小切成若干塊,分布式存儲在所有 DataNode 中,每個文件可以有多個副本,默認副本數為 3。
NameNode:Master 節點,負責源數據的管理,處理客戶端請求。
DataNode:Slave 節點,負責數據的存儲和讀寫操作。
使用流程:用戶如果想要讀取存儲在 HDFS 中的數據,需要先找到 NameNode,通過 NameNode 來得知我們的數據存放在哪個 DataNode 之上,當 NameNode 找到具體的數據之后,將數據返回給用戶。
2.2、大數據組件:Hadoop-Yarn 模塊
Yarn 是 Hadoop 生態的三個核心模塊組成之一,負責資源分配和管理。具體結構如下圖所示:
Yarn:是一種分布式資源調度框架,采用 Master 和 Slave 的主從結構,主要由主節點 ResourceManager、ApplicationMaster 和從節點 NodeManager 組成,負責整個集群的資源管理和調度。
ResourceManager:是一個全局的資源管理器,負責整個集群的資源管理和分配。
NodeManager:運行在 Slave 節點,負責該節點的資源管理和使用。
ApplicationMaster:當用戶提交應用程序時啟動,負責向 ResourceManager 申請資源和應用程序的管理,與 NodeManager 進行互動。用戶在使用的情況下可以通過 ApplicationMaster 得知當前任務的進度、已經執行到哪些 Job。
Container:Yarn 的資源抽象,是執行具體應用的基本單位,任何一個 Job 或應用程序必須運行在一個或多個 Container 中。
2.3、大數據組件:Hadoop-MapReduce 模塊
MapReduce 是 Hadoop 生態的三個核心模塊組成之一,負責分布式計算。具體結構如下圖所示:
MapReduce:是一種分布式計算框架,主要由 Map 和 Reduce 兩個階段組成。支持將一個計算任務劃分為多個子任務,分散到各集群節點并行計算。
Map 階段:將初始數據分成多份,由多個 Map 任務并行處理。
Reduce 階段:收集多個 Map 任務的輸出結果并進行合并,最終形成一個文件作為 Reduce 階段的結果。
2.4、大數據組件:Spark 平臺
Apache Spark 是用于大規模數據處理的統一分析引擎,具有可伸縮性、基于內存計算等特點,已經成為輕量級大數據快速處理的統一平臺,各種不同的應用,如實時信息流處理、機器學習、交互式查詢等,都可以通過 Spark 建立在不同的存儲和運行系統上。具體結構如下圖所示:
Apache Spark 核心:Spark Core 是 Spark 平臺的基礎通用執行引擎,其所有其他功能都是基于該平臺執行的。它提供了內存計算和外部存儲系統中的參考數據集。
Spark SQL:Spark SQL 是 Spark Core 之上的一個組件,它引入了一種名為 SchemaRDD 的新數據抽象,他提供了對結構化和半結構化數據的支持。
Spark Streaming:Spark Streaming 利用 Spark Core 的快速調度功能來執行流式分析。它采用小批量采集數據,并對這些小批量數據執行 RDD(彈性分布式數據集)轉換。
MLlib:MLlib 是 Spark 上面的分布式機器學習框架,因為它是基于分布式內存的 Spark 體系結構。
Graphx:Graphx 是 Spark 頂部的分布式圖形處理框架。它提供了一個用于表達圖形計算的 API,可以使用 Pregel 抽象 API 對用戶定義的圖形進行建模。它還為此抽象提供了優化的運行時。
三、鯤鵬 BoostKit 使能套件介紹
3.1、鯤鵬 BoostKit 是什么?
BoostKit 是一個應用使能套件,并不只是由一個軟件包構成,而是由很多軟件包組成的。
BoostKit 是部署在鯤鵬整機(服務器)環境之上,往上搭建的一個全棧優化的使能套件。具體結構如下圖所示:
3.2、開源使能:開源軟件可用、好用
華為:貢獻開源、主導開源,使能主流開源軟件支持鯤鵬高性能。
伙伴:從開源社區、鯤鵬社區獲取高性能開源組件,直接編譯/部署。
我們以 Hadoop 為例,首先需要讓 Hadoop 運行在鯤鵬服務器上,然而這遠遠不夠,還需要根據需求開發相關特性,以促使 Hadoop 在鯤鵬之上可以運行得更加完美、便捷,同時我們將研發的產品新特性合入、貢獻到開源社區。
3.3、基礎加速:超越業界水平的應用性能
這一塊之所以被稱為基礎,是因為很多應用都會使用到該加速包,比如:NUMA 優化、KAE 加速庫、IO 智能預取等。
華為:提供基礎性能優化、基礎加速庫和加速算法等基礎加速軟件包和文檔,并對如何使用作出指導。
伙伴:從鯤鵬社區獲取基礎加速軟件包,在鯤鵬創新中心指導下進行編譯、部署和性能優化。
我們以 KAE 加速庫為例,在使用過程中所使用到的如壓縮、加解密等相關功能,我們會加速這個功能,如果我們的上層應用有使用到壓縮、加解密等相關功能就都會有大幅的性能提升。
3.4、應用加速:極致事務倍級應用性能
華為:提供應用創新加速組件、算法創新組件等應用加速軟件包和文檔。
伙伴:伙伴與華為開展聯合方案設計、開發和商業實踐。合作方式的變化隨加速功能而變。
四、BoostKit 在開源使能上的結果
BoostKit 在開源社區中做了大量的投入,主要針對如下兩個方面,全面支持開源大數據組件,并實現了 ARM CI 在社區版本上的運行。
4.1、全面支持開源大數據
支持開源 Apache 大數據組件。
支持開源 HDP 大數據組件及管理組件 Ambari。
支持開源 CDH 大數據組件(注:CDH Manager 管理組件是閉源版本,當前不支持)。
4.2、開源社區接納 ARM 生態
Hadoop、Hive、Hbase、Spark 和 Flink、ElasticSearch、Kudu 等核心組件的開源社區支持 ARM(注:Hadoop、ElasticSearch 開源社區已經提供官方版本的 ARM 軟件包)。推動了 ARM 開源軟件生態的發展。
五、鯤鵬 BoostKit 如何應對大數據關鍵挑戰?
聚焦大數據關鍵挑戰,對于存在的痛點給出解決方案,讓數據處理更快、更簡單。
5.1、遇到的問題
多樣化查詢無法統一,效率低。Spark SQL、Hive 等查詢方式的不統一,導致查詢的效率降低。
IO 密集型組件性能無法滿足要求。
磁盤 IO 存在瓶頸,HDFS 性能提升困難。
在數據采集過程中,由于數據是多種多樣的,多樣化數據格式,導致跨數據源讀取數據難。
數據非共享,跨數據中心取數難。在數據讀取的過程中,數據多存儲在不同的數據中心,無法實現共享,跨數據中心讀取數據就是一個難題。
5.2、如何應對關鍵挑戰?
針對問題 1、4、5。采用跨源跨域查詢加速。采用 openLooKeng 虛擬化引擎統一數據入口,支持跨源、跨域分析,查詢性能倍級提升。
針對問題 2。采用 Spark 性能加速。原生機器學習/圖算法深度優化,Spark 性能倍級提升。
針對問題 3。采用 HDFS 性能加速。IO 智能預取,高效取數,Spark/Hbase 性能提升 20%。
六、BoostKit 機器學習/圖算法的深度優化
6.1、算法深度優化實例
BoostKit 機器學習/圖算法基于原生算法深度優化,促使 Spark 性能得到倍級提升,現在已經被應用到華為的伙伴業務之中,如下圖所示的兩個實際場景,在海量的數據集中,分別使用機器學習和圖分析的算法進行建模,我們可以看到模型訓練時長有大幅度的縮短,性能得到極大提升。
6.2、鯤鵬算法庫
包括上面所提到和使用的機器學習 GBDT 算法、圖分析 PageRank 算法在內,鯤鵬算法庫已交付 20+ 算法,涵蓋常用算法類型。
保持與原生 Spark 算法完全一致的類和接口定義,無需上層應用做任何修改,只需要在提交任務時加入算法包即可。
采用網絡公開的多維度多規模數據集算法性能提升 50%~10 倍以上。
七、BoostKit 做了哪些深度優化?
7.1、鯤鵬親和性優化效果
關鍵優化點:
Communication-avoid,減少了不必要節點之間的數據通信。
多核并行計算。利用鯤鵬自身優勢,提高了算法多核并行度,提高數據并行度與模型并行度,降低了通信 Shuffle 的瓶頸,以實現訓練速度的提升。
在同等計算精度,不同的數據集下,支撐機器學習算法(Covariance、Pearson、Spearman),性能提升超過 50+%,如下圖所示:
7.2、機器學習算法優化方案:分布式 SVD 算法
SVD 算法即奇異值分解算法,是線性代數中常用的的矩陣分解算法。SVD 算法不光可以用于降維算法中的特征分解,還可以用于推薦系統,以及自然語言處理等領域,是很多機器學習算法的基石。
7.3、圖分析算法優化方案:分布式 PageRank 算法
PageRank 算法,即網頁排名算法,又稱網頁級別算法、Google 左側排名算法或佩奇排名算法。該算法是對搜索引擎搜索出來的結果、網頁進行排名的一種算法,本質上是一種以網頁之間的超鏈接的個數和質量作為主要因素粗略地分析網頁重要性的算法。即更重要的網頁會被更多其他的網頁所引用,根據引用的鏈接計算出每個網頁的 PR 值。網頁的PR值越高則說明該網頁越重要。PageRank 是 Google 用于用來標識網頁的等級/重要性的一種方法,是 Google 用來衡量一個網站的好壞的唯一標準。
內存占用優化:基于稀疏壓縮的數據表示,使得算法的內存占用下降 30%,有效解決大數據規模下的內存瓶頸問題。
收斂檢測優化:簡化收斂檢測過程,使整體任務量減少 5%~10%。
全量迭代+殘差迭代組合優化:有效降低前期數據膨脹帶來的 shuffle 瓶頸,整體性能可提升 0.5X~2X。
八、鯤鵬 BoostKit 機器學習&圖算法的 Spark 性能加速實踐
鯤鵬 BoostKit 機器學習&圖算法的 Spark 性能加速實踐可以在華為云平臺上的“沙箱實驗室”進行。
8.1、環境準備
在實驗進行之前,首先會預制環境,如下圖所示:
8.2、環境配置
由于我們的本算法是運行在 4 節點的集群上上,即運行在 4 臺 ECS上,所以預制環境的過程可能較長,需要在云服務器上完成某些組件的配置,時間大概為三分鐘左右。如下圖所示,我們可以看到一個主節點和三個從節點。
8.3、部署 Hadoop、Spark 等組件
在預制環境的過程中,已經完成了部分 Zookeeper 的相關配置,我們只需要登陸每一個 agent 節點并進行少量的配置即可啟動 Zookeeper,具體流程如下圖所示:
8.4、算法庫優化效果運行實踐
8.4.1、運行 SVD 算法
調用算法庫,代碼如下:
sh bin/ml/svd_run.sh D10M1k
不調用算法庫,代碼如下:
sh bin/ml/svd_run_raw.sh D10M1k
8.4.2、運行 PageRank 算法
調用算法庫,代碼如下:
sh bin/graph/pr_run.sh cit_patents run
不調用算法庫,代碼如下:
sh bin/graph/pr_run_raw.sh cit_patents run
由于算法當前的默認參數沒有完全利用 ECS 集群的資源,所以需要對 Spark 層的參數進行調優。
九、相關材料獲取
9.1、鯤鵬 BoostKit
9.2、機器學習算法加速庫
9.3、圖算法加速庫
總結
面向多樣性計算時代,華為全面開放鯤鵬全棧能力,分享多樣性計算工具套件:鯤鵬應用使能套件 Kunpeng BoostKit 和鯤鵬開發套件 Kunpeng DevKit,加速產業創新,使能極簡開發,攜手伙伴一起構建鯤鵬計算產業生態。本系列課程主要針對鯤鵬開發者及 ISV 合作伙伴,幫助您快速了解 BoostKit 鯤鵬應用使能套件支持下的 8 大場景的最佳能力和實踐、鯤鵬全研發作業流程工具套件 Kunpeng DevKit 和鯤鵬基礎軟件開源等相關內容,與全球開發者一起共同點亮多樣性計算新時代。
本文整理自華為云社區內容共創活動第四期之基于鯤鵬Spark機器學習&圖算法庫實現大數據場景50%性能提升(國內)
查看活動詳情:https://bbs.huaweicloud.com/forum/thread-127725-1-1.html
Hadoop 專家 云社區 大數據 鯤鵬
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。