PCon全球产品创新大会最新日程上线,查看更多 了解详情
写点什么

去哪儿 Hadoop 集群 Federation 数据拷贝优化

  • 2019 年 5 月 26 日
  • 本文字数:1943 字

    阅读完需:约 6 分钟

去哪儿Hadoop集群Federation数据拷贝优化

背景

去哪儿 Hadoop 集群随着去哪儿网的发展一直在优化改进,基本保证了业务数据存储量和计算量爆发式增长下的存储服务质量。然而,随着集群规模的发展,单组 NameNode 组成的集群也到达了新的瓶颈:因为 NameNode 内存使用和元数据量正相关,在 180GB 堆内存配置下,元数据量红线约为 7 亿,而随着集群规模和业务的发展,即使经过小文件合并与数据压缩,仍然无法阻止元数据量逐渐接近红线。而且在性能方面,随着业务的发展,集群规模的扩大,NameNode RPC 响应时间增大,QPS 逐渐降低。


HDFS Federation 是 Hadoop-0.23.0 中为解决 HDFS 单点限制而提出的 NameNode 水平扩展方案。该方案可以为 HDFS 服务创建多个 NameSpace ,从而提高集群的扩展性和隔离性,分散单个 NameNode 的负载。(在 HDFS 中 NameSpace 是指 NameNode 中负责管理文件系统中的树状目录结构以及文件与数据块的映射关系的一层逻辑结构,在 Federation 方案中,NameNode 之间相互隔离,因此社区也用一个 NameSpace 来指代 Federation 中一组独立的 NameNode 及其元数据。)


在 Federation 过程中,非常重要的一个环节就是数据的拷贝。


原来所有的数据都是从源主节点 NameNode1 下访问,例如 /user/flight,/user/hotel 等。 如果 Federation 后,/user/flight 从 NameNode1 访问,/user/hotel 从 NameNode2 访问,这样就需要将 /user/hotel 目录下所有的数据和元数据拷贝到 NameNode2 的集群中。


fastcopy 简介

如果集群数据比较少,可以直接 distcp 完成。


现在去哪儿网的数据,单个 DataNode 的使用占比中位数已经超过 80%,即,要拷贝出 70% 的数据的话,不考虑时间,磁盘空间也满足不了要求。 如果拆成多次操作,周期和运维成本会高出很多。


所以选择了社区中的 fastcopy 方案, https://issues.apache.org/jira/browse/HDFS-2139 ,FastCopy 是 Facebook 开源的数据拷贝方案。主要逻辑就是,从源 NameNode 读文件信息和 block 对应关系,然后在目标 NameNode 上创建文件,添加 block ,拷贝 block 。 其中拷贝 block 的方式(最终数据块的拷贝)是使用 linux 的硬链拷贝来完成,这样就不会增加存储成本了。


fastcopy 的优点,速度快,不占存储空间。也有缺点,是没有进行文件权限和属主的拷贝,还需要再次修改,这个权属从源 NameNode 也需要读所有的文件,然后写到目标 NameNode 去,这个时间基本是拷贝时间的 1/3 到 1/2 。


fastcopy 与 distcp 测试对比

为了更直观的了解 fastcopy 的性能,我们先测试了 fastcopy 和 distcp 的比较。


测试集群环境: 2 个 NameSpace,50 个 DataNode。


测试结果

元数据量从 100 万到 1 亿,fastcopy 花费时间从 0.68 分钟到 90 分钟,distcp 从 5m 到 830m。


元数据总量与拷贝时间折线图:



测试分析结论

根据测试结果,生产集群拷贝 5 亿元数据:


distcp 需要花费为 4 天。如果开用 distcp ,公司集群停用 4 天,业务报表统计、业务模型训练等都不可用,这是不可接受的,此方案不通。


fastcopy 需要花费 90*5/60*1.8=13.5 个小时,1.8 为一个系数,表示元数据增大到 7 亿后响应时间增大的程度。fastcopy 拷贝后,还需要对原文件的权限属主进行设置,也需要 6 个小时左右,最终 fastcopy 需要 20 个小时左右,对公司的报表等影响很大。


测试过程中,我们发现 fastcopy 的瓶颈是 active 主节点的并发度。在阅读 fastcopy 源码的过程中,我们发现 fastcopy 对同一个元数据有多次请求。我们准备从这点开始对源码优化。


fastcopy 优化

fastcopy 适用范围较宽,在 Federation 集群中任何一个时间节点都可以使用。


而我们现在面临的是单 NameNode 拆分多个 NameNode 时大量数据迁移时间过长问题。拆分时刻可以停止集群写服务,提前创建 Snapshot ,保证 fsimage 不变,在此前提下我们进行优化。


优化后的 fastcopy 简称 qfastcopy 。


原 fastcopy 流程以及步骤



原 fastcopy 步骤所需资源与性能分析


优化方案


qfastcopy

qfastcopy 流程:



qfastcopy 具体步骤:



qfastcopy 的缺点

  • 使用场景单一,只能在 Federation 过程中 NameNode 拆分时使用,需要提前 copy fsimage 到目标集群。

  • 目标文件与源文件绝对路径相同。

  • 整个流程中集群不能对外提供写操作。


qfastcopy 测试

fastcopy 和 qfastcopy 对比

元数据量与拷贝时间折线图:



分析与结论

根据测试结果,生产集群拷贝 5 亿元数据,qfastcopy 需要花费 22*5/60*1.8=3.5 小时。


最终,我们将近集群 Federation 的 5 亿元数据拷贝时间从 20 小时优化到了 3.5 小时。


作者简介

王磊,2015 年 8 月加入去哪儿网技术团队。目前在网站运营中心/数据支持,负责 Hadoop 平台运维,离线日志收集,专注于大数据解决方案和平台构建。


王大伟,2012 年加入去哪儿网技术团队。目前在网站运营中心/数据支持。负责 Hadoop、Hive 数据平台的构建、运维,专注于大数据和机器学习。


2019 年 5 月 26 日 08:005344

评论

发布
暂无评论
发现更多内容

从高盛的技术“开源”看金融业软件发展未来

王字 Wannz

金融科技 开源项目 开源技术 小程序框架

从零到一,我也能写小程序

王字 Wannz

小程序 小程序市场 finclip 小程序框架

Flink CDC 系列 - 实时抽取 Oracle 数据,排雷和调优实践

Apache Flink

大数据 flink 编程 实时计算 CDC

电竞进入5G时代!腾讯云联合腾讯游戏CROS首秀5G电竞专网

科技热闻

决战下半场:小程序技术助力金融 APP 重回 C 位

王字 Wannz

小程序 移动应用 数字化时代 finclip

数字化转型时代,如何让你的 App 摆脱“内卷”?

王字 Wannz

小程序 去中心化 finclip 互联网生态

在Vue-cli中使用mock.js

💥 玩命不玩心💥

开发小程序的正确方式

王字 Wannz

小程序 小程序制作 finclip 凡泰极客 小程序框架

LeaRun敏捷框架甘特图——摆脱项目管理的泥沼

力软.net/java开发平台

EMQ & 轻流:全托管物联网消息服务助力海量设备低代码智联

EMQ映云科技

物联网 mqtt

基于HTML5/CSS/JS响应式圣诞老人过悬崖小游戏

海拥(haiyong.site)

28天写作 12月日更

CSS之变量

Augus

CSS 12 月日更

DataPipeline与飞腾完成产品兼容性互认证,携手共建自主IT底层生态

DataPipeline数见科技

cpu 数字化转型 中间件 数据融合 数据管理

【MongoDB学习笔记】MongoDB 快速入门

恒生LIGHT云社区

数据库 mongodb

语音合成(TTS)技术在有道词典笔中的应用实践

有道技术团队

人工智能 语音合成 网易有道

浅谈前端角色权限方案

王字 Wannz

前端 权限控制 finclip

SIGCOMM 首篇 Multi-path QUIC 论文:阿里自研多路径传输技术XLINK

阿里巴巴移动技术

网络协议 传输协议 移动端 客户端 QUIC

微前端技术在游戏平台后台系统的实践

bilibili游戏技术

游戏

给弟弟的信第18封|除了自己,你谁也改变不了

大菠萝

28天写作

小程序的昨日与今天

王字 Wannz

小程序 小程序生态 开发框架 finclip

通过元宇宙远程上班有的搞吗?

王字 Wannz

虚拟现实 元宇宙 凡泰极客

架构实战营第 4 期 -- 模块三作业

烈火干柴烛灭田边残月

架构实战营

开发者供不应求,传统企业如何拥抱 DevOps ?

飞算全自动软件工程平台

CameraX入门笔记

Changing Lin

12 月日更

Java、Go 和 Rust 的比较

百度开发者中心

Java Go rust

权威专访|对话凡泰极客联合创始人杨涛: 小程序生态市场潜力广阔

王字 Wannz

小程序 移动应用 小程序生态 凡泰极客

你未必知道的 WebRTC – 前世、今生、未来

王字 Wannz

WebRTC 音频技术 元宇宙

Flink Hudi 0.10.0 发布,多项重要更新,稳定性大幅提升

Apache Flink

大数据 flink 编程 数据湖 Hudi

架构训练营 week3 作业

红莲疾风

「架构实战营」

Python代码阅读(第70篇):删除列表一边的n个元素

Felix

Python 编程 Code 列表 阅读代码

京东金融云,三年造五力

脑极体

去哪儿Hadoop集群Federation数据拷贝优化-InfoQ