音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

解析百度开放云分布式计算平台对大数据的处理
日期:2021-09-08 17:39:54   来源:脚本之家

在百度开放云总经理刘旸看来,当今世界正面临着由技术突破带来的全行业升级,在这场商业剧变中,背后是三个重要的「重新定义」:第一,云计算重新定义了「IT」。它改变了企业所需要的 IT 资源的拥有与供给的方式,基于互联网级的资源管理平台,彻底改变了传统企业的 IT 模式,为新的商业创新提供了可能;

第二,大数据重定义了「资产」,相较于以往的重资产,企业在经营中不断生成的数据,将成为企业未来继续生存并保持竞争力的砝码;第三,人工智能重定义了「效率」,通过语音、图像、视频、自然语言识别和智能处理等技术,让传统的计算机具备更为强大的能力,大幅提升工作效率。

基于以上三个重新定义,百度开放云的重新堆栈也分为三层:云计算层、大数据应用层、和人工智能层。

处理大数据无非以下四个步骤:

收集:原始数据种类多样,格式、位置、存储、时效性等迥异。数据收集从异构数据源中收集数据并转换成相应的格式方便处理。
存储:收集好的数据需要根据成本、格式、查询、业务逻辑等需求,存放在合适的存储中,方便进一步的分析。
变形:原始数据需要变形与增强之后才适合分析,比如网页日志中把IP地址替换成省市、传感器数据的纠错、用户行为统计等。
分析:通过整理好的数据分析what happened、why it happened、what is happening和what will happen,帮助企业决策。

其实,如果涉及到“大数据”,不得不提百度最大的业务——搜索。百度搜索已经收录全世界超过一万亿的网页,每天响应中国网民大约几十亿次的请求。除此之外,百度还有另外20多个用户过亿的产品线,而且各个产品底层的大规模数据处理,都需要使用百度团队维护的大数据处理平台。
201622104550136.jpg (600×338)

百度分布式计算平台:离线引擎优化

关于MapReduce
201622104606388.jpg (600×337)

首先介绍主要的离线计算模型——MapReduce,百度从2007年开始引进Hadoop 0.15.1,随后快速发展,2011年百度的MR单集群规模达到5000台,到2013年已经多达1.3万台,这也是截止到目前为止全世界最大的单集群。Hadoop全集群规模为10万量级, 作业量达到了百万量级,日均CPU利用率超过80%,远超业界同行,百度开放云(http://cloud.baidu.com)底层依赖的大规模集群调度、资源隔离等技术能力世界领先。除了在规模方面不断扩大,百度一直在Hadoop性能分析方面进行了大量的优化。2013年的测试结果显示,百度内部MR实现相比于开源Hadoop性能提升30%。典型优化,例如Hadoop中的Shuffle,百度将其做成一个统一的shuffle服务,不再占用Map或Reduce槽位。比如对关键热点函数采用SSE向量化等。
201622104624894.jpg (600×338)

2014年,百度继续对计算引擎做了大幅优化, Native C++实现的DAG引擎正式上线。下图是一个 4轮MR Job实现的典型业务流示例,DAG引擎上线后,可以优化成一个DAG作业,可以避免3次Reduce写多副本引入的磁盘IO及网络IO,还可以规避2次Map读HDFS的IO以及处理耗费。
201622104641261.jpg (821×463)

下图是一个真实业务由SQL计算表示层翻译下来的,基于MR引擎时,SQL会翻译成25个MR JOB,如果百度把它优化成DAG,能够避免很多次磁盘IO操作。在优化之后,运行时间直接缩减到1个小时,优化前后的差异非常显著。
201622104658053.jpg (823×460)

内存流式Shuffle

2014年,百度对Shuffle进行重大重构,初期实习生同学完成的Demo以BaiduSort名义参与了2014年Sort BenchMark大数据排序国际大赛,并获得冠军(2015年百度没再参加,国内其他公司以同样技术通过更大规模集群刷新记录)。2015年,新Shuffle技术完成全面上线。Hadoop默认Shuffle实现为基于磁盘Pull模式,计算过程显式分成Map、Shuffle、Reduce过程;Baidu研发的新Shuffle采用内存流式Push模式,Map端完成部分记录处理后直接从内存中将计算结果推送给下游。
201622104714882.jpg (824×462)

举例来说,Map处理256MB输入数据,在内存流式Shuffle模式下,处理完100条记录以后,直接通过内存推送到下游,这样就形成流水线方式处理。不再有显式的Shuffle阶段。

目前,该Shuffle组件为通用组件,正逐步推广到其他分布式计算平台中。

百度分布式计算平台:系统架构演进

前面重点介绍了百度开放云BMR服务中涉及到的规模、性能方面优化思路和效果,接下来跟大家一起分享一下,百度遇到的整体架构方面挑战以及优化思路。

2012年系统架构中,最主要的两个离线计算平台,左边是以MapReduce模型为主的批量计算平台BMR,右边是MPI /BSP模型为主的大规模机器学习平台BML。从最下面可以看到,MapReduce和MPI模型底层硬件就有较大差异。Hadoop分布式文件系统多副本以及强大的故障处理机制,使得Raid卡完全没有必要,采用多块超大容量SATA硬盘非常适合。

而MPI差别较大,MPI是一个消息传输框架,它在设计之初就没有考虑太多异常处理,因此它对底层系统可靠性要求非常高。百度采用了非常高配置的服务器,例如带Raid卡的sas硬盘,超大内存、万兆互联等。
201622104730805.jpg (824×464)

BMR Hadoop由大量SATA硬盘的服务器构成,存储系统为HDFS,资源调度层面百度有自研的调度器ARK(与社区Yarn比较类似)。而BML大规模机器学习平台上,支持的业务样本超过数百亿计量级,特征规模也远超百亿。百度在运行机器学习时,需要先启动MapReduce,然后再将数据从HDFS分发到各个MPI节点,这种方式对网络带宽的要求很高。
201622104746141.jpg (821×461)

系统部同事持续改进内网带宽的同时,BML平台层面也在思考应该如何解决跨MR和MPI俩大集群间的日益严重的网络带宽问题。

另外还有一个需求:MPI是一种事务性调度模型,比如一个业务需要200台机器,如果平台此时只有199台机器空闲,实际也很难用起来(除非修改提交参数,但涉及输入数据重新分块处理等比较复杂)。另外MPI计算往往显式分为计算、传输、计算等阶段(即BSP模型),因此资源利用波动性较大,例如CPU计算阶段,网络空闲;网络传输或全局同步阶段,CPU空闲。为解决这个问题,百度在MPI集群中引入IDLE计算,IDLE业务资源占用充分可控,典型的IDLE任务如MapReduce任务,而执行MR任务又会进一步加剧MR集群和MPI集群间网络带宽问题。

基于以上考虑,百度正式将MPI底层硬件替换为替换成高配置存储型服务器,硬盘同构,文件系统都采用HDFS,BML算法输入和输出均通过HDFS,不再是本地文件系统。

BML机器学习执行引擎层面,百度基于MPI封装了DVCE(Distributed VectorComputingEngine)分布式向量计算引擎,屏蔽MPI过于低层的编程接口,通过高层抽象自动翻译为MPI任务,这就是百度第二代专门针对“并行计算”开发的系统框架。
201622104802301.jpg (825×465)

2014年,BML机器学习执行引擎迁移到ELF第三代并行计算框架, ELF采用ParameterServer架构,大幅降低机器学习算法开发代价,对比于百度的第二代框架DVCE,在开发效率方面有大幅度的提升。离线计算方面,完成了Native C++ DAG引擎上线,百度内部叫DCE(Distributed ComputingEngine)。

2014年BMR和BML底层都采用Matrix完成资源分配与隔离,其他平台如小批量计算系统TaskManager和毫秒级计算延迟的Dstream系统,都基于业务需求特殊性,采用独立的资源隔离和调度系统。

2015年的架构改进,主要是将所有的计算模型均迁移到Matrix+Normandy架构。Normandy兼容社区Yarn调度接口,开源社区新型兴计算平台可以很轻松的接入到百度的计算生态里。
201622104822242.jpg (600×339)

百度已经介绍了百度大数据分析和挖掘平台主要的底层引擎和架构,接下来谈一下最新思考。

系统底层是IDC硬件,接着是Matrix,再是Normandy,然后是几个主要的引擎。之前介绍底层架构的统一,比如在硬件、调度、存储等方面的统一。实际上各个系统对外的结果,都有自己的接口,如果要使用MR,很多人写MR程序都是直接调用Hadoop原生接口,配置涉及到的多个参数。部分业务还需要流式系统完成日志清洗,在经过MapReduce模型批量预处理,随后通过ELF完成机器学习模型训练,最后再通过MapReduce模型完成模型评估,可见一个业务需要跨越多个模型,需要业务线同学同时熟悉很多模型和平台,而每一个模型又有各自特点和接口。只有足够了解模型的细节和接口后,才能真正的利用好该模型。
201622104838685.jpg (824×462)

于是百度正式立项BigFlow项目(原项目名DataFlow,图片未来及修改),将模型的细节屏蔽。平台自动决定选择合适的并发度,甚至智能选择应该把这个翻译到哪个计算模型。BigFlow可以支持多个不同的计算引擎(每个引擎在其适合的领域做到极致),充分发挥各引擎性能和功能。所以用户使用同一套接口,便能对应到不同的任务。由于采用高层抽象,业务开发效率获得大幅提升,代码量大幅减少,其维护成本也大幅降低。BigFlow集成常见优化手段,因此将大幅提升平台有效资源占用。

百度开放云——大数据+智能

最后,向大家简要介绍百度开放云。2014年,百度正式决定将服务内部业务多年的云计算技术正式对外提供服务,即百度开放云,对应官网http://cloud.baidu.com。百度开放云大数据方面,BMR已经对外开放,而更多的大数据分析和服务都还未对外开放。BMR集群上可以做到按需部署,用户专享,更关键的是完全兼容开源的Hadoop/Spark平台,开放云客户基于Hadoop、Spark、Hbase等已经实现的大数据业务几乎不用修改就可以平滑迁移到云上。多维分析服务Palo,它完全兼容MySQL网络协议,因此,客户朋友们熟悉的Mysql Client的工具均可使用。
201622104857086.jpg (822×462)

同时,Palo支持JDBC、ODBC的编程接口,如果已有程序采用的是JDBC、ODBC,那么迁移成本几乎为零。最后看到它与业界主流的BI工具商业分析的工具对接的,比如Tableau、Saiku、BIEE、R。

最后再介绍机器学习云服务BML,BML中提供的深度学习技术,曾获得2014年百度最高奖。BML提供端到端的解决方案,里面提供的算法均服务百度内部业务多年,典型如网页搜索、百度推广(凤巢、网盟CTR预估等)、百度地图、百度翻译等。

使用开放云BMR和BML、Palo等,就可以立刻、直接享用与百度搜索同等品质的大数据分析和挖掘服务!
201622104913369.jpg (600×337)

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    网站运营微信营销网络赚钱