其他分享
首页 > 其他分享> > 看 Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

看 Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

作者:互联网

摘要:本次鲲鹏 BoostKit 训练营为开发者介绍如何基于鲲鹏 BoostKit 使能套件实现应用性能的加速,并重点剖析性能优化技术和关键能力。

本文分享自华为云社区《【云驻共创】“大鹏一日同风起”KunpengBoostKit 使能套件如何实现大数据场景倍级性能提升? 》,原文作者:白鹿第一帅。

前言

在数据和经济时代,业务和数据的多样性需要新的计算架构,海量的数据增长也带来了更高的计算需求。那么在这个过程中,鲲鹏计算产业也正在成为更多计算场景的新一代 IP 基座。基于华为鲲鹏处理器构建的鲲鹏全栈 IT 技术实施设施行业应用以及服务,致力于为智能世界持续提供我们的先进算力支持,使得各个行业可以实现数字化转型。应用软件的迁移与优化一直是鲲鹏软件生态的难点和关键。本次鲲鹏 BoostKit 训练营为开发者介绍如何基于鲲鹏 BoostKit 使能套件实现应用性能的加速,并重点剖析性能优化技术和关键能力。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

一、开源大数据与鲲鹏多核结构渊源

1.1、海量数据处理的难题

随着科技的发展,越来越多的行业需要采集更多的数据,如何对海量数据进行分析并得出我们想要的结果就成为了我们所面临的难题,而大数据技术的迅速发展使得这个问题迎刃而解。

1.2、大数据并行计算特点天然匹配鲲鹏多核架构

海量数据需要更高的并发度来加速数据处理,在数据集非常大的情况下,如果我们跑在单核(或者是顺序化)的执行场景下,可能执行过程无法进行或者是效率极其低下,这是我们无法接受的,所以海量的数据需要更高的并发度来处理,那么鲲鹏多核计算的特点就可以完美匹配这个需求,加速大数据的计算性能,提升大数据任务的并发度。

我们以 MapReduce 模型为例进行处理和计算,如下图所示,我们所采集的源数据是一段英文,我们需要计算这段话中每一个单词所出现的次数。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

运行过程:首先我们对源数据进行拆分,然后 Map 映射到每一个节点上进行运算,之后进行 Sort 排序,Merge 合并,最后进行结果汇总 Reduce 以形成最终的结果。

可以看到,我们将大量的计算分发到各个节点之上,这就是分布式计算,也是我们所谓的“并发度”的概念。如果我们的并发度提高了,理论上来讲,我们整个模型的执行时间也会相应缩短。

二、开源大数据整体与组件介绍

上面我们介绍了开源大数据的概念以及相应的华为鲲鹏多核计算的特点,下面介绍我们在大数据开发中经常会使用到的一些组件。

2.1、大数据组件:Hadoop-HDFS 模块

HDFS 是 Hadoop 生态的三个核心模块组成之一,负责分布式存储。具体结构如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

使用流程:用户如果想要读取存储在 HDFS 中的数据,需要先找到 NameNode,通过 NameNode 来得知我们的数据存放在哪个 DataNode 之上,当 NameNode 找到具体的数据之后,将数据返回给用户。

2.2、大数据组件:Hadoop-Yarn 模块

Yarn 是 Hadoop 生态的三个核心模块组成之一,负责资源分配和管理。具体结构如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

2.3、大数据组件:Hadoop-MapReduce 模块

MapReduce 是 Hadoop 生态的三个核心模块组成之一,负责分布式计算。具体结构如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

2.4、大数据组件:Spark 平台

Apache Spark 是用于大规模数据处理的统一分析引擎,具有可伸缩性、基于内存计算等特点,已经成为轻量级大数据快速处理的统一平台,各种不同的应用,如实时信息流处理、机器学习、交互式查询等,都可以通过 Spark 建立在不同的存储和运行系统上。具体结构如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

三、鲲鹏 BoostKit 使能套件介绍

3.1、鲲鹏 BoostKit 是什么?

BoostKit 是一个应用使能套件,并不只是由一个软件包构成,而是由很多软件包组成的。

BoostKit 是部署在鲲鹏整机(服务器)环境之上,往上搭建的一个全栈优化的使能套件。具体结构如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

鲲鹏应用使能套件 BoostKit,释放倍级性能优势,提供八大场景化应用使能套件:大数据、分布式存储、数据库、虚拟化、ARM 原生、Web/CDN、NFV 和 HPC。在接下来的过程中,我们将其分为三个部分依次介绍。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

3.2、开源使能:开源软件可用、好用

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

我们以 Hadoop 为例,首先需要让 Hadoop 运行在鲲鹏服务器上,然而这远远不够,还需要根据需求开发相关特性,以促使 Hadoop 在鲲鹏之上可以运行得更加完美、便捷,同时我们将研发的产品新特性合入、贡献到开源社区。

3.3、基础加速:超越业界水平的应用性能

这一块之所以被称为基础,是因为很多应用都会使用到该加速包,比如:NUMA 优化、KAE 加速库、IO 智能预取等。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

我们以 KAE 加速库为例,在使用过程中所使用到的如压缩、加解密等相关功能,我们会加速这个功能,如果我们的上层应用有使用到压缩、加解密等相关功能就都会有大幅的性能提升。

3.4、应用加速:极致事务倍级应用性能

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

四、BoostKit 在开源使能上的结果

BoostKit 在开源社区中做了大量的投入,主要针对如下两个方面,全面支持开源大数据组件,并实现了 ARM CI 在社区版本上的运行。

4.1、全面支持开源大数据

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

4.2、开源社区接纳 ARM 生态

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

五、鲲鹏 BoostKit 如何应对大数据关键挑战?

聚焦大数据关键挑战,对于存在的痛点给出解决方案,让数据处理更快、更简单。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

5.1、遇到的问题

1. 多样化查询无法统一,效率低。Spark SQL、Hive 等查询方式的不统一,导致查询的效率降低。

2. IO 密集型组件性能无法满足要求。

3. 磁盘 IO 存在瓶颈,HDFS 性能提升困难。

4. 在数据采集过程中,由于数据是多种多样的,多样化数据格式,导致跨数据源读取数据难。

5. 数据非共享,跨数据中心取数难。在数据读取的过程中,数据多存储在不同的数据中心,无法实现共享,跨数据中心读取数据就是一个难题。

5.2、如何应对关键挑战?

六、BoostKit 机器学习/图算法的深度优化

6.1、算法深度优化实例

BoostKit 机器学习/图算法基于原生算法深度优化,促使 Spark 性能得到倍级提升,现在已经被应用到华为的伙伴业务之中,如下图所示的两个实际场景,在海量的数据集中,分别使用机器学习和图分析的算法进行建模,我们可以看到模型训练时长有大幅度的缩短,性能得到极大提升。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

BoostKit 机器学习/图算法的优化使得在实际应用场景中,计算性能平均提升 5 倍,而上层应用无需修改!

6.2、鲲鹏算法库

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

采用网络公开的多维度多规模数据集算法性能提升 50%~10 倍以上。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

七、BoostKit 做了哪些深度优化?

7.1、鲲鹏亲和性优化效果

关键优化点:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

在同等计算精度,不同的数据集下,支撑机器学习算法(Covariance、Pearson、Spearman),性能提升超过 50+%,如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

7.2、机器学习算法优化方案:分布式 SVD 算法

SVD 算法即奇异值分解算法,是线性代数中常用的的矩阵分解算法。SVD 算法不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

对于传统的 SVD 算法,我们也在之上进行了创新,如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

7.3、图分析算法优化方案:分布式 PageRank 算法

PageRank 算法,即网页排名算法,又称网页级别算法、Google 左侧排名算法或佩奇排名算法。该算法是对搜索引擎搜索出来的结果、网页进行排名的一种算法,本质上是一种以网页之间的超链接的个数和质量作为主要因素粗略地分析网页重要性的算法。即更重要的网页会被更多其他的网页所引用,根据引用的链接计算出每个网页的 PR 值。网页的PR值越高则说明该网页越重要。PageRank 是 Google 用于用来标识网页的等级/重要性的一种方法,是 Google 用来衡量一个网站的好坏的唯一标准。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

如上图所示,我们将每一个网页看做一个点,网页与网页之间的连接看成一条边,如此,便构成了图的数据结构。我们就将对这个图的数据结构进行处理。那么我们如何进行优化呢?

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

如上图所示,在优化之后,通过算法计算模式的自适应切换,整体 shuffle 量减少 50%,性能较优化前平均提升 50%+。

八、鲲鹏 BoostKit 机器学习&图算法的 Spark 性能加速实践

鲲鹏 BoostKit 机器学习&图算法的 Spark 性能加速实践可以在华为云平台上的“沙箱实验室”进行。

8.1、环境准备

在实验进行之前,首先会预制环境,如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

8.2、环境配置

由于我们的本算法是运行在 4 节点的集群上上,即运行在 4 台 ECS上,所以预制环境的过程可能较长,需要在云服务器上完成某些组件的配置,时间大概为三分钟左右。如下图所示,我们可以看到一个主节点和三个从节点。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

8.3、部署 Hadoop、Spark 等组件

在预制环境的过程中,已经完成了部分 Zookeeper 的相关配置,我们只需要登陆每一个 agent 节点并进行少量的配置即可启动 Zookeeper,具体流程如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

对于 Hadoop 同理,预制环境时,已经完成 Hadoop 的安装与 Hadoop 在 server 节点的配置,对于 agent 节点,我们只需要在计算节点上少量配置,在 agent 端启动 JournalNode,在 server 端启动 Hadoop 其他组件即可,具体流程如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

对于 Spark,系统并没有作相关的部署,仅仅是把 Spark 下载到了集群上,之后需要我们添加 Spark 环境变量、修改 Spark 配置文件,同步到其他节点并进行任务提交,具体流程如下图所示:

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

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 层的参数进行调优。

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

总结

面向多样性计算时代,华为全面开放鲲鹏全栈能力,分享多样性计算工具套件:鲲鹏应用使能套件 KunpengBoostKit 和鲲鹏开发套件 KunpengDevKit,加速产业创新,使能极简开发,携手伙伴一起构建鲲鹏计算产业生态。本系列课程主要针对鲲鹏开发者及 ISV 合作伙伴,帮助您快速了解 BoostKit 鲲鹏应用使能套件支持下的 8 大场景的最佳能力和实践、鲲鹏全研发作业流程工具套件 KunpengDevKit 和鲲鹏基础软件开源等相关内容,与全球开发者一起共同点亮多样性计算新时代。

点击关注,第一时间了解华为云新鲜技术~


标签:Kunpeng,使能,BoostKit,开源,算法,Spark,鲲鹏,数据
来源: https://blog.51cto.com/u_15214399/2882978