【云駐共創(chuàng)】鯤鵬BoostKit大數(shù)據(jù)Spark算法加速分享

      網(wǎng)友投稿 929 2025-03-31

      鯤鵬展翅共創(chuàng)行業(yè)新價值

      2021“互聯(lián)網(wǎng)+”大賽鯤鵬命題介紹

      鯤鵬BoostKit大數(shù)據(jù)Spark算法加速分享

      目錄:

      1. 命題介紹

      2. 鯤鵬BoostKit大數(shù)據(jù)介紹

      3. 鯤鵬Spark算法加速庫

      前言:

      【云駐共創(chuàng)】鯤鵬BoostKit大數(shù)據(jù)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)容。

      上一篇:如何在Excel制作直方圖?
      下一篇:智能家居管理系統(tǒng)設(shè)計思路 - 提升家居生活的未來
      相關(guān)文章
      亚洲AV无码成人专区| 亚洲av中文无码乱人伦在线r▽ | 亚洲国产av一区二区三区丶| 亚洲国产第一页www| 亚洲国产精品无码久久久蜜芽| 国产成人亚洲精品狼色在线| 亚洲男女内射在线播放| 亚洲区不卡顿区在线观看| 亚洲成年人啊啊aa在线观看| 亚洲av无码专区在线观看素人| 爱爱帝国亚洲一区二区三区| 色噜噜噜噜亚洲第一| 国产精品亚洲专区无码不卡| 国产精品亚洲一区二区三区久久| 无码天堂亚洲国产AV| 亚洲国产午夜福利在线播放| 亚洲国产综合精品一区在线播放| 亚洲综合色在线观看亚洲| 黑人大战亚洲人精品一区 | 色在线亚洲视频www| 狠狠色伊人亚洲综合网站色| 亚洲熟妇无码AV| 亚洲AV无码国产精品永久一区| 亚洲a∨无码一区二区| 亚洲国产精品综合久久网络| 综合亚洲伊人午夜网| 亚洲av中文无码乱人伦在线播放 | 亚洲码和欧洲码一码二码三码| 18禁亚洲深夜福利人口| 亚洲国产成人影院播放| 久久久久亚洲精品无码网址 | 亚洲av永久无码精品秋霞电影秋| 亚洲AV无码一区二区三区鸳鸯影院| 爱情岛论坛亚洲品质自拍视频网站| 亚洲熟女乱综合一区二区| 亚洲午夜福利AV一区二区无码| 亚洲av日韩av无码| 亚洲精品456在线播放| 国产亚洲中文日本不卡二区| 色天使亚洲综合一区二区| 亚洲综合精品网站|