引读:百度作为全球最大的中文搜索引擎公司,提供基于搜索引擎的各种产品,几乎覆盖了中文网络世界中所有的搜索需求,因此,百度对海量数据处理的要求是比较高的, 要在线下对数据进行分析,还要在规定的时间内处理完并反馈到平台上。百度在互联网领域的平台需求要通过性能较好的云平台进行处理了,Hadoop就是很好 的选择。

在百度,Hadoop主要应用于以下几个方面:

日志的存储和统计;

网页数据的分析和挖掘;

商业分析,如用户的行为和广告关注度等;

在线数据的反馈,及时得到在线广告的点击情况;

用户网页的聚类,分析用户的推荐度及用户之间的关联度。

MapReduce主要是一种思想,不能解决所有领域内与计算有关的问题,百度的研究人员认为比较好的模型应该如下图:

HDFS 实现共享存储,一些计算使用MapReduce解决,一些计算使用MPI解决,而还有一些计算需要通过两者来共同处理。因为MapReduce适合处理数 据很大且适合划分的数据,所以在处理这类数据时就可以用MapReduce做一些过滤,得到基本的向量矩阵,然后通过MPI进一步处理后返回结果,只有整 合技术才能更好地解决问题。

百度现在拥有3个Hadoop集群,总规模在700台机器左右,其中有100多台新机器和600多台要淘汰的机器(它们的计算能力相当于200多台新机器),不过其规模还在不断的增加中。现在每天运行的MapReduce任务在3000个左右,处理数据约120TB/天。

百度为了更好地用Hadoop进行数据处理,在以下几个方面做了改进和调整:

(1)调整MapReduce策略

限制作业处于运行状态的任务数;

调整预测执行策略,控制预测执行量,一些任务不需要预测执行;

根据节点内存状况进行调度;

平衡中间结果输出,通过压缩处理减少I/O负担。

(2)改进HDFS的效率和功能

权限控制,在PB级数据量的集群上数据应该是共享的,这样分析起来比较容易,但是需要对权限进行限制;

让分区与节点独立,这样,一个分区坏掉后节点上的其他分区还可以正常使用;

修改DSClient选取块副本位置的策略,增加功能使DFSClient选取块时跳过出错的DataNode;

解决VFS(Virtual File System)的POSIX(Portable Operating System Interface of Unix)兼容性问题。

(3)修改Speculative的执行策略

采用速率倒数替代速率,防止数据分布不均时经常不能启动预测执行情况的发生;

增加任务时必须达到某个百分比后才能启动预测执行的限制,解决reduce运行等待map数据的时间问题;

只有一个map或reduce时,可以直接启动预测执行。

(4)对资源使用进行控制

对应用物理内存进行控制。如果内存使用过多会导致操作系统跳过一些任务,百度通过修改Linux内核对进程使用的物理内存进行独立的限制,超过阈值可以终止进程。

分组调度计算资源,实现存储共享、计算独立,在Hadoop中运行的进程是不可抢占的。

在大块文件系统中,X86平台下一个页的大小是4KB。如果页较小,管理的数据就会很多,会增加数据操作的代价并影响计算效率,因此需要增加页的大小。

百度在使用Hadoop时也遇到了一些问题,主要有:

MapReduce的效率问题:比如,如何在shuffle效率方面减少I/O次数以提高并行效率;如何在排序效率方面设置排序为可配置的,因为排序过程会浪费很多的计算资源,而一些情况下是不需要排序的。

HDFS的效率和可靠性问题:如何提高随机访问效率,以及数据写入的实时性问题,如果Hadoop每写一条日志就在HDFS上存储一次,效率会很低。

内存使 用的问题:reducer端的shuffle会频繁地使用内存,这里采用类似Linux的buddy system来解决,保证Hadoop用最小的开销达到最高的利用率;当Java 进程内容使用内存较多时,可以调整垃圾回收(GC)策略;有时存在大量的内存复制现象,这会消耗大量CPU资源,同时还会导致内存使用峰值极高,这时需要 减少内存的复制。

作业调度的问题:如何限制任务的map和reduce计算单元的数量,以确保重要计算可以有足够的计算单元;如何对TaskTracker进行分组控制,以限制作业执行的机器,同时还可以在用户提交任务时确定执行的分组并对分组进行认证。

性能提 升的问题:UserLogs cleanup在每次task结束的时候都要查看一下日志,以决定是否清除,这会占用一定的任务资源,可以通过将清理线程从子Java进程移到TaskTracker来解决;子Java进程会对文本行进行切割而map和reduce进程则会重新切割,这将造成重复处理,已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击这时需要关掉Java进程 的切割功能;在排序的时候也可以实现并行排序来提升性能;实现对数据的异步读写也可以提升性能。

健壮性 的问题:需要对mapper和reducer程序的内存消耗进行限制,这就要修改Linux内核,增加其限制进程的物理内存的功能;也可以通过多个map 程序共享一块内存,以一定的代价减少对物理内存的使用;还可以将DataNode和TaskTracker的UGI配置为普通用户并设置账号密码;或者让 DataNode和TaskTracker分账号启动,确保HDFS数据的安全性,防止Tracker操作DataNode中的内容;在不能保证用户的每 个程序都很健壮的情况下,有时需要将进程终止掉,但要保证父进程终止后子进程也被终止。

Streaming 局限性的问题:比如,只能处理文本数据,mapper和reducer按照文本行的协议通信,无法对二进制的数据进行简单处理。为了解决这个问题,百度人 员新写了一个类Bistreaming(Binary Streaming),这里的子Java进程mapper和reducer按照(KeyLen,Key,ValLen,Value)的方式通信,用户可以 按照这个协议编写程序。

用户认证的问题:这个问题的解决办法是让用户名、密码、所属组都在NameNode和Job Tracker上集中维护,用户连接时需要提供用户名和密码,从而保证数据的安全性。

百度下一步的工作重点可能主要会涉及以下内容:

内存方面,降低NameNode的内存使用并研究JVM的内存管理;

调度方面,改进任务可以被抢占的情况,同时开发出自己的基于Capacity的作业调度器,让等待作业队列具有优先级且队列中的作业可以设置Capacity,并可以支持TaskTracker分组;

压缩算 法,选择较好的方法提高压缩比、减少存储容量,同时选取高效率的算法以进行shuffle数据的压缩和解压;对mapper程序和reducer程序使用 的资源进行控制,防止过度消耗资源导致机器死机。以前是通过修改Linux内核来进行控制的,现在考虑通过在Linux中引入cgroup来对 mapper和reducer使用的资源进行控制;将DataNode的并发数据读写方式由多线程改为select方式,以支持大规模并发读写和 Hypertable的应用。

百度同时也在使用Hypertable,它是以Google发布的BigTable为基础的开源分布式数据存储系统,百度将它作为分析用户行为的平台,同时在元数据集中化、内存占用优化、集群安全停机、故障自动恢复等方面做了一些改进。

解密百度大数据:百度是如何使用hadoop的,并且做了哪些改进?相关推荐

  1. 百度大数据+零售发挥引擎优势 ------BDL ,大数据+亚当科茨领导的人工智能实验室和由张潼领导的大数据实验室

    百度大数据+ 百度大数据+,是百度开放的新商业"能源库",旨在面向行业关键诉求,开放百度大数据核心能力,帮助企业先人一步创造新商业机会.实现用户体验的升级换代. 百度大数据+,基于 ...

  2. AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟

    AI公开课:19.05.29 浣军 百度大数据实验室主任<AutoDL 自动化深度学习建模的算法和应用>课堂笔记以及个人感悟 导读        浣军博士,汉族,1975年出生于江苏苏州, ...

  3. 百度大数据 CMO的新左脑-百度-喻友平

    2019独角兽企业重金招聘Python工程师标准>>> 百度大数据 CMO的新左脑-百度-喻友平 很多人去做决策,包括价格.新的产品研发,有时候确实是老板拍右脑,其实数据不管是大数据 ...

  4. 沈志勇-百度大数据引擎与分析预测

    2019独角兽企业重金招聘Python工程师标准>>> 沈志勇-百度大数据引擎与分析预测 大数据是目前全球关注的一个热点技术领域.百度大数据实验室作为百度大数据引擎的重要组成部分,以 ...

  5. 2020百度大数据竞赛-Top3 故事分享(开源连接)新手入门

    IKCEST第二届"一带一路"国际大数据竞赛" 历时三个月的百度大数据竞赛伴随着夏末的阵阵蛙声终于也迎来了尾声,从初赛16名到复赛第3名,从大数据"小白&quo ...

  6. 关于大数据技术的演讲_百度大数据技术开放平台再度亮相

    众所周知,百度凭借在大数据领域多年的深厚技术积累,一直冲在产业智能化的最前线.在去年的百度AI开发者大会上,百度大数据发布了全新的大数据产品技术栈,覆盖了数据工程.数据科学.数据产品和行业解决方案,并 ...

  7. 姜思达和机器人_中国偏见地图曝光:百度大数据看穿了一切

    近日,由百度搜索出品的<枇杷来了>汇集<奇葩说>人气选手马薇薇.肖骁.姜思达获得众多网友的关注.节目现场,三人对话百度人工智能小度机器人(简称:小度),并解读由百度搜索.百度大 ...

  8. 《大数据》第1期“应用”——百度大数据应用与实践

    百度大数据应用与实践 陈尚义 百度公司 北京100085 摘要:产生于互联网的大数据应用,现阶段正在向其他行业领域渗透,成为行业创新和转型的重要驱动力.根据百度多年来在大数据领域的创新与实践,阐述了大 ...

  9. 百度大数据实习生面试

    百度大数据实习生:(百度科技园一号楼) 2018-3-31 笔试: 1.双指针的题 2.找出字符串中第一个出现两次的字母 3.通过前中序求二叉树 4.快速排序,堆排序 5.数据库的左右连接 面试: 1 ...

  10. 李彦宏为何推出百度大数据引擎?大数据引擎可以干什么?

    在昨天(4月24日)的百度技术开放日上,李彦宏现身并推出了百度大数据引擎.这在百度,表明对相关产品最高的重视了. 这个发布是什么意思呢?简单地讲,大数据引擎将百度在大数据的数据.能力和技术开放给行业, ...

最新文章

  1. Python 之 Matplotlib (一)基本用法
  2. BZOJ 2588: Spoj 10628. Count on a tree 树上跑主席树
  3. 运用Arc Hydro提取河网
  4. dreamweaver 正则表达式为属性值加上双引号_PHP正则表达式核心技术完全详解 第2节...
  5. 天猫广告业务独立运营
  6. 世界时钟-国家中英文名称-国家代码-与北京的时差 一览
  7. 插入新题注变乱了_Word 自动更改题注章节编号格式“图一.1”为“图1.1”
  8. 任正非、董明珠、曹德旺,中国实业三大网红!他们有个共同点:坚决不做一件事!
  9. Illegal instruction 问题处理
  10. 【入门】Pytorch实现简单的图片分类器
  11. 计算机怎样格式u盘,win10系统电脑怎么操作把u盘格式化为fat32格式?
  12. Drupal8的详细建站教程
  13. cocos 从零开始 实现华容道 2.2.2版本
  14. oracle中overwrite写法,【学习笔记】Oracle 11G新特性restart的深入研究案例
  15. scrapy间歇性响应为空/降速/缓存
  16. 什么是服务器托管,企业为何选择服务器托管?
  17. JAVA实现文件批量打包下载
  18. 三菱FX3uPLC和安邦信变频器通讯程序
  19. 前端面试—网站性能优化
  20. oracle写SQL快捷键,Oracle数据库PL/SQL快捷键设置详解

热门文章

  1. 【阿里云峰会】云上护航服务—保障云上的尖峰时刻...
  2. 伺服驱动器动力电和控制电
  3. Echarts 地图控件tooltip多行显示
  4. 在html中的file怎么只能选择图片,input type=file 选择图片并且实现预览效果
  5. 如何隐藏C,D,E,F,G,H,I....盘, Windows系统中巧妙隐藏驱动器
  6. 杨校老师课堂之JavaScript案例之跑马灯左右无缝连接图片自动轮播
  7. PS(MPG)文件格式分析
  8. html5画布时钟cnsd,canvas动画时钟
  9. r14/lr寄存器的值
  10. 现阶段中国IT人才面临的gan ga选择:China or U.S