共創(chuàng)】Python編程快速入門指南">【云駐共創(chuàng)】Python編程快速入門指南
929
2025-03-31
鯤鵬展翅共創(chuàng)行業(yè)新價值
2021“互聯(lián)網(wǎng)+”大賽鯤鵬命題介紹
鯤鵬BoostKit大數(shù)據(jù)Spark算法加速分享
目錄:
1. 命題介紹
2. 鯤鵬BoostKit大數(shù)據(jù)介紹
3. 鯤鵬Spark算法加速庫
前言:
大數(shù)據(jù)是集收集,處理,存儲為一體的技術(shù)總稱。在海量數(shù)據(jù)處理的場景,大數(shù)據(jù)對計算及存儲的要求較高,普遍以集群形式存在。不同的組件有不同的功能體現(xiàn)。 Spark 是專為大規(guī)模 數(shù)據(jù)處理 而設(shè)計的快速通用的計算引擎。Spark 是一種與 Hadoop 相似的開源集群計算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負載。
Spark 主要有三個特點 :
首先,高級 API 剝離了對集群本身的關(guān)注,Spark 應(yīng)用開發(fā)者可以專注于應(yīng)用所要做的計算本身。
其次,Spark 很快,支持交互式計算和復(fù)雜算法。
最后,Spark 是一個通用引擎,可用它來完成各種各樣的運算,包括 SQL 查詢、文本處理、機器學(xué)習(xí)等,而在 Spark 出現(xiàn)之前,我們一般需要學(xué)習(xí)各種各樣的引擎來分別處理這些需求。
海量數(shù)據(jù)需要更高的并發(fā)度來加速數(shù)據(jù)處理,鯤鵬多核計算的特點能夠提升大數(shù)據(jù)任務(wù)的并發(fā)度,加速大數(shù)據(jù)的計算性能。大數(shù)據(jù)并行計算特點天然匹配鯤鵬多核架構(gòu),但是,為了獲得更好的性能,仍需根據(jù)硬件配置和應(yīng)用程序特點,對軟硬件系統(tǒng)做進一步的優(yōu)化。
一、 命題:鯤鵬BoostKit大數(shù)據(jù)算法優(yōu)化
【命題內(nèi)容】∶
基于Spark 2.4.5和Hadoop 3.2.0版本,Spark GraphX中Betweenness介數(shù)中心性算法,用于描述圖數(shù)據(jù)中每個節(jié)點在圖中與其它節(jié)點的連通程度,體現(xiàn)了結(jié)點在圖中的重要程度。
介數(shù)中心性算法可以支撐的應(yīng)用包括:金融行業(yè)中用于評價客戶的信貸風(fēng)險;互聯(lián)網(wǎng)行業(yè)中用于評價社交網(wǎng)絡(luò)中的用戶影響力及活躍度;政府行業(yè)中用于識別疾病傳播的關(guān)鍵人員、地點;運營商行業(yè)中用于識別潛在關(guān)鍵客戶。
服務(wù)器規(guī)格限制:一個隊伍3臺虛擬機,每臺虛擬機的規(guī)格:華為云鯤鵬通用計算增強型Kc18核、32GB內(nèi)存。系統(tǒng)盤:高IO 40GB;數(shù)據(jù)盤:高IO 500GB;帶寬4Mbit/s。操作系統(tǒng): openEuler 20.03 64bit with ARM
Spark開源組件中Betweenness算法采用公開網(wǎng)絡(luò)數(shù)據(jù)集com-Amazon(點數(shù)量33萬,邊數(shù)量92萬,http://snap.stanford.edu/data/com-Amazon.html),算法精度為75%,計算耗時為60Os,精度低、計算效率差,無法滿足實際業(yè)務(wù)需求,期望從算法技術(shù)原理、鯤鵬親和性適配角度,優(yōu)化算法的精度和效率,精度提升到90%以上,計算耗時降低到90s以下
【答題要求】:
1、 算法交付軟件需要可以運行在Spark平臺上,并提供部署運行的指導(dǎo)文檔。
2、 保持Betweenness算法的對外使用接口,與開源Spark算法一致。
【提示】
從鯤鵬親和性(多核并發(fā)、數(shù)據(jù)結(jié)構(gòu)優(yōu)化、通信優(yōu)化)和算法原理(降低算法計算復(fù)雜度)優(yōu)化Spark分布式組件的Betweenness算法
二、鯤鵬BoostKit大數(shù)據(jù)介紹
Spark - 基本組成和概念
① spark core: 實現(xiàn)了spark的基礎(chǔ)功能(任務(wù)調(diào)度,內(nèi)存管理。錯誤恢復(fù),與存儲系統(tǒng)交互等),以及對彈性api數(shù)據(jù)集的API定義。
② spark SQL: 是spark用來操作結(jié)構(gòu)化數(shù)據(jù)的程序包,支持多種數(shù)據(jù)源hive,parquet,josn等。 Spark SQL 通常用于交互式查詢,但這一領(lǐng)域同類產(chǎn)品太多,更多作為MapReduce的替代者,用于批量作業(yè)。
③ spark streaming: 對實時數(shù)據(jù)進行流式計算的組件,提供了用來操作數(shù)據(jù)流的API,并于spark core中的RDD API高度對應(yīng)。 Spark Streaming 流式batch處理。主要同類產(chǎn)品為storm。
④ spark MUib: 提供常見的機器學(xué)習(xí)(ML)功能的程序庫。 提供了機器學(xué)習(xí)相關(guān)的統(tǒng)計、分類、回歸等領(lǐng)域的多種算法實現(xiàn)。其一致的 API 接口大大降低了用戶的學(xué)習(xí)成本。
⑤ GraphX 是spark面向圖像計算提供的框架和算法庫, 支持分布式,Pregel 提供的 API 可以解決圖計算中的常見問題。
資源管理組件
Cluster Manager(集群資源管理器): 是指在集群上獲取資源的外部服務(wù),目前有以下幾種。
Standalone : Spark原生的資源管理,由Master負責(zé)資源的管理。
Hadoop Yarn : 由YARN中的ResourceManager負責(zé)資源的管理。
Mesos : 由Mesos中的Mesos Master負責(zé)資源的管理。
應(yīng)用程序
Application (應(yīng)用程序)︰ 是指用戶編寫的Spark應(yīng)用程序,包含驅(qū)動程序( Driver )和分布在集群中多個節(jié)點上運行的Executor代碼,在執(zhí)行過程中由一個或多個作業(yè)組成。
Driver(驅(qū)動程序) : Spark中的Driver即運行上述Application的main()函數(shù)并且創(chuàng)建SparkContext,其中創(chuàng)建SparkContext的目的是為了準(zhǔn)備Spark應(yīng)用程序的運行環(huán)境。
ClusterManager通信,進行資源的申請、任務(wù)的分配和監(jiān)控等;當(dāng)Executor部分運行完畢后,Driver負責(zé)將SparkContext關(guān)閉。通常用SparkContext代表Driver。
作業(yè)執(zhí)行
Worker(工作節(jié)點)∶ 集群中任何可以運行Application代碼的節(jié)點,類似于YARN中的NodeManager節(jié)點。在Standalone模式中指的就是通過Slave文件配置的Worker節(jié)點,在Spark on Yarn模式中指的就是NodeManager節(jié)點。
Master(總控進程): Spark Standalone運行模式下的主節(jié)點,負責(zé)管理和分配集群資源來運行SparkAppliation。
Executor(執(zhí)行進程): Application運行在Worker節(jié)點上的一個進程,該進程負責(zé)運行Task,并負責(zé)將數(shù)據(jù)存在內(nèi)存或者磁盤上,每個Application都有各自獨立的一批Executor。在Spark on Yarn模式下,其進程名稱為CoarseGrainedExecutorBackend,類似于Hadoop MapReduce中的YarnChild。
作業(yè)(Job ) : RDD中由行動操作所生成的一個或多個調(diào)度階段。
調(diào)度階段( Stage ): 每個作業(yè)會因為RDD之間的依賴關(guān)系拆分成多組任務(wù)集合,稱為調(diào)度階段,也叫做住務(wù)集。( TaskSet )。調(diào)度階段的劃分是由DAGScheduler來劃分的調(diào)度階段有Shuffle Map Stage和Result Stage兩種。
任務(wù)(Task): 具體執(zhí)行任務(wù)。 分發(fā)到Executor上的工作任務(wù),是Spark實際執(zhí)行應(yīng)用的最小單元。
DAGScheduler : DAGScheduler是面向調(diào)度階段的任務(wù)調(diào)度器,負責(zé)接收Spark應(yīng)用提交的作業(yè),根據(jù)RDD的依賴關(guān)系劃分調(diào)度階段,并提交調(diào)度階段給
TaskScheduler。
TaskScheduler : TaskScheduler是面向任務(wù)的調(diào)度器,它接受DAGScheduler提交過來的調(diào)度階段,然后以把任務(wù)分發(fā)到Work節(jié)點運行,由Worker節(jié)點的Executor來運行該任務(wù)。
三、 鯤鵬Spark算法加速庫
開源Spark組件在鯤鵬平臺的部署運行
編譯Spark組件: https://support.huaweicloud.com/prtg-apache-kunpengbds/kunpengspark_02_0001.html
編譯Hadoop組件: https://support.huaweicloud.com/prtg-apache-kunpengbds/kunpenghadoop_02_0001.html
編譯Zookeeper組件: 編譯Zookeeper組件: https://support.huaweicloud.com/prtg-apache-kunpengbds/kunpengzookeeper_02_0001.html
安裝部署Spark組件: https://support.huaweicloud.com/dpmg-apache-kunpengbds/kunpengspark_04_0001.html
鯤鵬的Maven倉庫: https://mirrors.huaweicloud.com/kunpeng/
華為云的中央倉庫: https://mirrors.huaweicloud.com/repository/maven/
開源Spark組件性能調(diào)優(yōu)
Spark平臺調(diào)優(yōu)
https://support.huaweicloud.com/tngg-kunpengbds/kunpengspark2xhdp_05_0004.html
Spark算法調(diào)優(yōu)
https://support.huaweicloud.com/fg-kunpengbds/kunpengbdsspark_06_0087.html
開源Spark組件Betweenness算法測試
1、 開源Betweenness算法-:
源碼: https://github.com/Sotera/distributed-graph-analytics/tree/master/dga-graphx/src/main/scala/com/soteradefense/dga/graphx/hbse
2、 添加MainApp.scala主程序,執(zhí)行betweenness算法,獲取結(jié)果,計算精度和執(zhí)行時間
3、 在鯤鵬服務(wù)器上編譯打包hbse_2.11-0.1.jar
4、 wget http://snap.stanford.edu/data/com-Amazon.html
上傳到HDFS
hdfs put com-amazon.txt/betweenness/com-amazon.txt
*開源代碼工程及運行腳本會發(fā)送給參數(shù)隊列
3、 運行算法
spark-submit \
--master yarn --deploy-mode client\--name "Betweenness_opensource" \
--num-executors 6 --executor-memory 14G --executor-cores 4 --driver-memory 4G\--jars "./lib/scopt_2.11-3.2.0.jar" \
./lib/hbse_2.11-0.1.jar
-i hdfs://betweenness/com-amazon.txt -g hdfs://betweenness/com-amazon-groundTruth.txt
其中hbse_2.11-0.1.jar是開源betweenness算法軟件包
scopt 2.11-3.2.0.jar是依賴包,-: http://www.java2s.com/example/iar/s/download-scopt211320 j ar-file.html
-i是標(biāo)明原始數(shù)據(jù)集在hdfs的路徑﹐-g是標(biāo)明數(shù)據(jù)集求解結(jié)果在hdfs的路徑,用來計算精度。
Betweenness算法介紹(介數(shù)中心性算法)
算法原理
介數(shù)中心性算法計算圖中介數(shù)中心性值最大的K個結(jié)點,是網(wǎng)絡(luò)中心性重要的度量參數(shù)之一,同時也是圖計算領(lǐng)域的基礎(chǔ)算法。介數(shù)中心性算法的目的是衡量圖中每一個結(jié)點與其它結(jié)點之間的互動程度,經(jīng)過結(jié)點的最短路徑數(shù)越多,該結(jié)點的介數(shù)中心性值越大,結(jié)點在圖中的重要性也就越高。結(jié)點的介數(shù)中心性值是基于圖中最短路徑經(jīng)過該結(jié)點的次數(shù)計算,最后選取圖中介數(shù)中心性值最大的K個結(jié)點,輸出這K個結(jié)點的編號和介數(shù)中心性值。
算法定義
介數(shù)中心性的定義: 圖中每個結(jié)點的介數(shù)中心性等于圖中所有結(jié)點對的最短路徑經(jīng)過該結(jié)點的次數(shù)除以結(jié)點對之間所有最短路徑總條數(shù)。每個節(jié)點v的介數(shù)中心性可通過以下公式計算:
σst(v) 是從結(jié)點s到t的最短路徑的數(shù)量, ? σst(v) 是從結(jié)點s到t且經(jīng)過結(jié)點v的最短路徑數(shù)量。
其中 σst(v)表示經(jīng)過節(jié)點 v的s→t的最短路徑條數(shù), σst表示 s→t的最短路徑條數(shù)。
直觀上來說,betweenness反映了節(jié)點v作為“橋梁”的重要程度。
算法應(yīng)用
介數(shù)中心性算法可用于識別圖上最重要的一批結(jié)點,可以支撐的應(yīng)用包括:
安平行業(yè): 用于識別欺詐團伙中的核心成員、識別謠言傳播的關(guān)鍵人員。
金融行業(yè): 用于評價客戶的信貸風(fēng)險。
互聯(lián)網(wǎng)行業(yè): 用于評價社交網(wǎng)絡(luò)中的用戶影響力及活躍度。
政府機關(guān): 用于識別疾病傳播的關(guān)鍵人員、地點。
電信運營商: 用于識別潛在關(guān)鍵客戶。
鯤鵬BoostKit大數(shù)據(jù):積極建設(shè)開源軟件生態(tài)
全面支持開源大數(shù)據(jù)
支持開源Apache大數(shù)據(jù)各場景組件
開源社區(qū)接納ARM生態(tài)
Hadoop、Hive、Hbase、Spark和Flink、ElasticSearch、Kudu等核心組件的開源社區(qū)支持ARM
備注: Hadoop、ElasticSearch開源社區(qū)已經(jīng)提供官方版本的ARM軟件包
鯤鵬鏡像倉: https://repo.huaweicloud.com/kunpeng/
開源數(shù)據(jù)虛擬化引擎openLooKeng , openLooKeng致力于為大數(shù)據(jù)用戶提供極簡的數(shù)據(jù)分析體驗,讓用戶像使用“數(shù)據(jù)庫”一樣使用“大數(shù)據(jù)”。
openLooKeng是一款開源的高性能數(shù)據(jù)虛擬化引擎。提供統(tǒng)一SQL接口,具備跨數(shù)據(jù)源/數(shù)據(jù)中心分析能力以及面向交互式、批、流等融合查詢場景。同時增強了前置調(diào)度、跨源索引、動態(tài)過濾、跨源協(xié)同、水平拓展等能力。
Spark組件提供原生的機器學(xué)習(xí)MLlib和圖GraphX算法庫,支持在分布式集群上運行。鯤鵬基于算法原理和芯片特征針對機器學(xué)習(xí)和圖分析算法進行深入優(yōu)化,實現(xiàn)相比原生算法性能提升50%。
機器學(xué)習(xí)&圖分析算法加速庫提供以下算法優(yōu)化,后續(xù)版本會持續(xù)更新增加算法。
機器學(xué)習(xí)算法: 分類回歸(隨機森林、GBDT、SVM、邏輯回歸、線性回歸、決策樹、PreFixSpan、KNN、XGBoost)算法、聚類(Kmeans、LDA、DBScan)算法、推薦(ALS)算法、特征工程(PCA、SVD、Pearson、Covariance、Spearman)算法
圖分析算法: 群體分析(極大團、弱團、Louvain、標(biāo)簽傳播、連接組件、CC)、拓撲度量(三角形計數(shù)、Cluster Coefficient)算法、路徑分析(最短路徑、循環(huán)檢測、廣度優(yōu)先搜索)、骨干分析(PageRank、親密度、Kcore、Degree、TrustRank、PersonPageRank、Betweenness)算法、相似分類算法(子圖匹配)、圖表示學(xué)習(xí)類算法(Node2Vec)
BoostKit圖算法,加速億級圖譜分析
某省級項目9000萬節(jié)點,20億邊關(guān)系圖譜
社團發(fā)現(xiàn)類:基于業(yè)務(wù)場景選擇實體,確定實體間的關(guān)系,從而構(gòu)成具備業(yè)務(wù)屬性的關(guān)系圖譜。社團發(fā)現(xiàn)類算法能在此關(guān)系圖譜上,挖掘抽象圖中的關(guān)系稠密團體,為挖掘目標(biāo)團伙提供數(shù)據(jù)基礎(chǔ)。
全量極大團挖掘算法:
耗時1小時內(nèi),執(zhí)行性能較友商提升6倍,局部稠密場景,友商是非精確求解,且無法算出結(jié)果。
基于團滲透的社區(qū)發(fā)現(xiàn)算法:
耗時1小時內(nèi),執(zhí)行性能較友商提升5倍。
BoostKit機器學(xué)習(xí)算法,加速十億級樣本特征分析
某運營商局點,全量樣本~10億條,中標(biāo)樣本~10萬條,模型精度由80%提升至99.9%。
特征降維算法(PCA)∶提煉關(guān)鍵特征,降低計算復(fù)雜度,將 計算時間由5小時降低為1小時 ;
聚類算法(DBSCAN)︰提取重要樣本,降低專家復(fù)核成本, 從10萬級樣本規(guī)模降低為千級樣本規(guī)模 。
SVD的英文全稱是Singular Value Decomposition,翻譯過來是奇異值分解。這其實是一種線性代數(shù)算法,用來對矩陣進行拆分。拆分之后可以提取出關(guān)鍵信息,從而降低原數(shù)據(jù)的規(guī)模。因此廣泛利用在各個領(lǐng)域當(dāng)中,例如信號處理、金融領(lǐng)域、統(tǒng)計領(lǐng)域。在機器學(xué)習(xí)當(dāng)中也有很多領(lǐng)域用到了這個算法,比如推薦系統(tǒng)、搜索引擎以及數(shù)據(jù)壓縮等等。SVD算法不光可以用于降維算法中的特征分解,還可以用于推薦系統(tǒng),以及自然語言處理等領(lǐng)域。是很多機器學(xué)習(xí)算法的基石。
圖分析算法優(yōu)化方案:分布式PageRank算法
1. 內(nèi)存占用優(yōu)化:基于稀疏壓縮的數(shù)據(jù)表示,使得算法的內(nèi)存占用下降30%,有效解決大數(shù)據(jù)規(guī)模下的內(nèi)存瓶頸問題
2. 收斂檢測優(yōu)化:簡化收斂檢測過程,使整體任務(wù)量減少5%-10%。
3. 全量迭代+殘差迭代組合優(yōu)化:有效降低前期數(shù)據(jù)膨脹帶來的shuffle瓶頸,整體性能可提升 0.5X-2X 。
通過算法計算模式的自適應(yīng)切換,整體shuffle量減少50%,性能較優(yōu)化前平均提升50%+
注: 本文整理自華為云社區(qū)內(nèi)容共創(chuàng)活動之 鯤鵬BoostKit大數(shù)據(jù)Spark算法加速分享 , 點此回看 直播
查看活動詳情: https://bbs.huaweicloud.com/blogs/293957
spark 大數(shù)據(jù) 鯤鵬
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。