植物百科网
当前位置: 首页 农业百科

阿里云hadoop的功能(数据量的作业从)

时间:2023-08-19 作者: 小编 阅读量: 1 栏目名: 农业百科

Facebook认为Spark已经成熟到可以在许多批处理用例中与Hive进行比较的地步。在本文的后面部分,将介绍Facebook使用Spark替代Hive的经验和教训。在作业运行的10个小时中,有3个小时用于将文件从staging目录移动到HDFS中的最终目录。我们对Spark内核和应用程序进行了大量的改进和优化,才使这项工作得以运行。此时,我们将工作重心转移到与性能相关的问题上,以最大限度地利用Spark。

Facebook 经常使用分析来进行数据驱动的决策。在过去的几年里,用户和产品都得到了增长,使得我们分析引擎中单个查询的数据量达到了数十TB。我们的一些批处理分析都是基于 Hive 平台(Apache Hive 是 Facebook 在2009年贡献给社区的)和 Corona( Facebook 内部的 MapReduce 实现)进行的。Facebook 还针对包括 Hive 在内的多个内部数据存储,继续增加了其 Presto 的 ANSI-SQL 查询的覆盖范围。Facebook 内部还支持其他类型的分析,如图计算、机器学习(Apache Giraph)和流处理(如 Puma、Swift 和 Stylus)。

尽管 Facebook 提供的服务涵盖了分析领域的广泛领域,但我们仍在不断地与开源社区互动,以分享我们的经验,并向他人学习。Apache Spark 于2009年由加州大学伯克利分校(UC-Berkeley)的 Matei Zaharia 创办,并于2013年贡献给 Apache。它是目前增长最快的数据处理平台之一,因为它能够支持流处理、批处理、命令式(RDD)、声明式(SQL)、图计算和机器学习用例,所有这些都在相同的 API 和底层计算引擎中。Spark 可以有效地利用大量内存,跨整个管道(pipelines)优化代码,并跨任务(tasks)重用 jvm 以获得更好的性能。Facebook 认为 Spark 已经成熟到可以在许多批处理用例中与 Hive 进行比较的地步。在本文的后面部分,将介绍 Facebook 使用 Spark 替代 Hive 的经验和教训。

用例:为实体排序(entity ranking)做特性准备

实时实体排名在 Facebook 有着多种使用场景。对于一些在线服务平台,原始的特性值是使用 Hive 离线生成的,并将生成的数据加载到这些实时关联查询系统中。这些 Hive 作业是数年前开发的,占用了大量的计算资源,并且难以维护,因为这些作业被拆分成数百个 Hive 小作业。为了使得业务能够使用到新的特征数据,并且让系统变得可维护,我们开始着手将这些作业迁移到 Spark 中。

以前的 Hive 作业实现

基于 Hive 的作业由三个逻辑阶段组成,每个阶段对应数百个由 entity_id 分割的较小 Hive 作业,因为为每个阶段运行较大的 Hive 作业不太可靠,并且受到每个作业的最大任务数限制。具体如下:

以上三个逻辑阶段可以概括如下:

基于 Hive 构建索引的作业大约需要运行三天。管理起来也很有挑战性,因为这条管道包含数百个分片作业,因此很难进行监控。没有简单的方法来衡量作业的整体进度或计算 ETA。考虑到现有 Hive 作业的上述局限性,我们决定尝试使用 Spark 来构建一个更快、更易于管理的作业。

Spark 实现

如果使用 Spark 全部替换上面的作业可能会很慢,并且很有挑战性,需要大量的资源。所以我们首先将焦点投入在 Hive 作业中资源最密集的部分:第二阶段。我们从50GB的压缩输入样本开始,然后逐步扩展到 300 GB、1 TB 和20 TB。在每次增加大小时,我们都解决了性能和稳定性问题,但是尝试 20 TB 时我们发现了最大改进的地方。

在运行 20 TB 的输入时,我们发现由于任务太多,生成了太多的输出文件(每个文件的大小大约为100 MB)。在作业运行的10个小时中,有3个小时用于将文件从 staging 目录移动到 HDFS 中的最终目录。最初,我们考虑了两个方案:要么改进 HDFS 中的批量重命名以支持我们的用例;要么配置 Spark 以生成更少的输出文件(这一阶段有大量的任务——70,000个)。经过认真思考,我们得到了第三种方案。由于我们在作业的第二步中生成的 tmp_table2 表是临时的,并且只用于存储作业的中间输出。最后,我们把上面 Hive 实现的三个阶段的作业用一个 Spark 作业表示,该作业读取 60 TB 的压缩数据并执行 90 TB的 shuffle 和排序,最后的 Spark job 如下:

我们如何扩展 Spark 来完成这项工作?

当然,在如此大的数据量上运行单个 Spark 作业在第一次尝试甚至第十次尝试时都不会起作用。据我们所知,这是生产环境中 shuffle 数据量最大的 Spark 作业(Databricks 的 PB 级排序是在合成数据上进行的)。我们对 Spark 内核和应用程序进行了大量的改进和优化,才使这项工作得以运行。这项工作的好处在于,其中许多改进都适用于 Spark 的其他大型工作负载,并且我们能够将所有工作重新贡献给开源 Apache Spark 项目 - 有关更多详细信息,请参见下面相关的 JIRA。下面我们将重点介绍将一个实体排名作业部署到生产环境的主要改进。

可靠性修复(Reliability fixes)

处理节点频繁重启

为了可靠地执行长时间运行的作业,我们希望系统能够容错并从故障中恢复(主要是由于正常维护或软件错误导致的机器重新启动)。虽然 Spark 最初的设计可以容忍机器重动,但我们还是发现了各种各样的 bug/问题,我们需要在系统正式投入生产之前解决这些问题。

其他可靠性修复性能提升

在实现了上述可靠性改进之后,我们能够可靠地运行 Spark 作业。此时,我们将工作重心转移到与性能相关的问题上,以最大限度地利用 Spark。我们使用Spark 的指标和 profilers 来发现一些性能瓶颈。

我们用来发现性能瓶颈的工具

性能优化

在所有这些可靠性和性能改进之后,我们的实体排名系统变成了一个更快、更易于管理的管道,并且我们提供了在 Spark 中运行其他类似作业的能力。

使用 Spark 和 Hive 运行上面实体排名程序性能比较

我们使用以下性能指标来比较 Spark 和 Hive 运行性能。

CPU time:这是从操作系统的角度来看 CPU 使用情况。例如,如果您的作业在32核机器上仅运行一个进程,使用所有 CPU 的50%持续10秒,那么您的 CPU 时间将是 32 0.5 10 = 160 CPU 秒。

CPU reservation time:从资源管理框架的角度来看,这是 CPU 预留(CPU reservation)。例如,如果我们将32核机器预留10秒来运行这个作业,那么 CPU 预留时间是 32 * 10 = 320 CPU秒。CPU 时间与 CPU 预留时间的比率反映了我们集群预留 CPU 资源的情况。准确地说,当运行相同的工作负载时,与 CPU 时间相比,预留时间可以更好地比较执行引擎。例如,如果一个进程需要1个 CPU 秒来运行,但是必须保留100个 CPU 秒,那么根据这个指标,它的效率低于需要10个 CPU 秒但只预留10个 CPU 秒来做相同数量的工作的进程。我们还计算了内存预留时间,但这里没有列出来,因为这些数字与 CPU 预留时间类似,而且使用 Spark 和 Hive 运行这个程序时都没有在内存中缓存数据。Spark 有能力在内存中缓存数据,但由于集群内存的限制,我们并没有使用这个功能。

Latency:作业从开始到结束运行时间。

结论和未来工作

Facebook 使用高性能和可扩展的分析引擎来帮助产品开发。Apache Spark 提供了将各种分析用例统一到单个 API ,并且提供了高效的计算引擎。我们将分解成数百个 Hive 作业管道替换为一个 Spark 作业,通过一系列的性能和可靠性改进,我们能够使用 Spark 来处理生产中的实体数据排序的用例。在这个特殊的用例中,我们展示了 Spark 可以可靠地 shuffle 并排序 90 TB 以上的中间数据,并在一个作业中运行 250,000个 tasks。与旧的基于 Hive 计算引擎管道相比,基于 Spark 的管道产生了显著的性能改进(4.5-6倍 CPU性能提升、节省了 3-4 倍资源的使用,并降低了大约5倍的延迟),并且已经在生产环境中运行了几个月。

作者:过往记忆大数据

本文为阿里云原创内容,未经允许不得转载。

    推荐阅读
  • 突触名词解释(突触是什么意思)

    突触名词解释突触是指一个神经元的冲动传到另一个神经元或传到另一细胞间的相互接触的结构。突触是神经元之间在功能上发生联系的部位,也是信息传递的关键部位。在光学显微镜下,可以看到一个神经元的轴突末梢经过多次分支,最后每一小支的末端膨大呈杯状或球状,叫做突触小体。这些突触小体可以与多个神经元的细胞体或树突相接触,形成突触。从电子显微镜下观察,可以看到,这种突触是由突触前膜、突触间隙和突触后膜三部分构成。

  • 《守望先锋》对战局影响大招top一览 守望先锋对局战绩

    今天小编要为大家带来的是玩家“黑呦酱”分享的《守望先锋》对战局影响大招top一览,感兴趣的玩家赶紧一起来看看吧!守望先锋大招分为四类,控制类,自身BUFF类,辅助类以及伤害类,由于伤害类大部分使用大招时,本体无法进行有效杀伤,且控制类及自身BUFF类需要其他技能的配合,so,此间因素也要加入考量。

  • 运动后喝黑咖啡还能燃脂吗 运动时喝黑咖啡会加快燃脂吗?

    2、运动过程中身体脂肪会加速燃烧,从而具有一定减肥作用;而黑咖啡热量比较小,加上其中含有大量的咖啡因以及维生素、纤维素物质,适量喝可以促进人体肠胃蠕动,加速脂肪代谢分解,对减肥具有促进作用。

  • 斯威汽车质量怎么样(斯威质量好不好)

    2018年6月起,斯威“品质特工队”以四大火炉的重庆作为起点,途径海南、吐鲁番、格尔木三地,历时近一年进行了数十万公里极限环境适应性试验。极端干燥高温环境下,常见车内温度往往会狂飙到60℃以上,而在斯威G01的车厢里,却始终能够保持清新凉爽的状态。一整套严酷考验下来,斯威G01的性能表现完全得以充分认证。这样一算,斯威G01差不多完成了近百万公里的专业级严酷考验。

  • 春天兰花怎么养 春天兰花怎么养浇水

    白墨兰花哪个品种最好白墨兰花是墨兰的珍贵变异品种假鳞茎椭圆形,已有数百年栽培历史,流传至今,不下十数个品种,它叶色莹润、体态优雅、幽香静远、且抗病,白墨兰花比较好的品种一般分企剑和软剑两个品系。什么兰花开花最香兰花品种很多,按花香来排,在兰花界春兰居首,惠兰次之,随后便是建兰、墨兰和寒兰,春兰的花香味最正宗,持久性也极强。

  • 奔驰e300l前进挡总共有几个(你看了奔驰22款E300L升级这套原厂HUD抬头显示效果觉得怎么样)

    从行车安全的角度来考虑,加装一台HUD是非常有必要的。HUD的全称是HeadUpDisplay,中文翻译过来就是抬头显示器。今天星骏汇小陈通过以上的产品配件图了解,我们看到这台奔驰22款E300L升级HUD抬头显示所需要更换的配件有,抬显仪器,高配仪表盖板,高配仪表电脑,雨量传感器,空调管升级HUD抬头显示把仪表台上的那一块盖板换掉,换成高配的预留好显示器孔位的盖板,装上显示器,从而使仪表显示的内容投射到挡风玻璃上面。

  • 儿童葫芦丝表演(通城千人共奏葫芦丝)

    儿童葫芦丝表演香城都市报讯 10月27日,通城县隽水中学参加湖北省“黄鹤杯”美育节节目视频录制现场,七、八年级千名学生,同奏乐曲《龙的传人》。该校相关负责人介绍,本学期,每天下午预备铃响5分钟,七、八年级各班集体合奏葫芦丝。丝竹声声,已渐成校园一道靓丽的风景线。近年来,该校贯彻落实社会主义核心价值观,注重未成年人思想道德建设,坚持开设中华传统和特色民族特色教育课程,促进学生“德智体”全面发展。

  • 鸡娃时代孩子的成长之道(与其1岁就开始鸡娃)

    出生时大脑发育已经完成25%,1岁完成了50%,3岁完成了60%,6岁达到90%。现在小学虽然是零基础入学,取消了统一考试,但是它对学生的要求并没有降低。吃够了佛系养娃的亏,橙子家的老二断然不肯再佛系养了。北京卫视于2018年摄制的纪录片《起跑线》中,有一个7岁的北京女孩令人印象深刻。她的家庭,在北京三环内有一套房,一辆车。妈妈认为,孩子从小培养兴趣,靠的是父母的指引。

  • 环氧树脂的作用与用途(环氧树脂有什么作用与用途)

    环氧树脂的作用与用途具有优良的物理和电绝缘性能,强度高、收缩性低,耐腐蚀以及有高绝缘的优势,所以被称为万能胶。电器、电机绝缘封装件的浇注。从常压浇注、真空浇注已发展到自动压力凝胶成型。长时间接触胶水时,有人会有细微的皮肤过敏和细微瘙痒疼痛的情况,建议在运用时戴上防护手套,如果出现了这样的情况,需要用酒精擦洗,然后用清水冲洗干净。

  • 明月曾照江东寒剧情(明月曾照江东寒剧情介绍)

    明月曾照江东寒剧情剧情简介:美少女战清泓是武林副盟主战破敌之女,从小被父亲禁止涉及江湖事。十年一期的武林大会即将来临,战清泓瞒着家人偷跑下山,立志夺取武林盟主之位。战清泓与温宥也开始互生情愫,奈何最终被世俗礼法所阻碍。与此同时,江湖上风起云涌,战清泓发现自己自幼背诵的家训竟是人人趋之若鹜的第一神功《鹤羽剑法》。