- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
滴滴离线HDFS集群演进与优化实践
滴滴出行作为一家卓越的一站式移动出行平台,随着业务的迅猛发展,数据规模也是飞快的增长,每天都分析处理大量的数据,这对大数据的存储、性能、成本以及数据安全都提出了很高的挑战。本次分享内容主要介绍滴滴在离线HDFS集群在集群迁移,2.7.2到3.2.0版本升级,优化等相关工作的实践经验及总结。
展开查看详情
1 .滴滴离线HDFS集群演进与优化实践 基础平台-大数据架构部-胡海洋
2 .自我介绍 • 2017年加入滴滴,任职于基础平台大数据架构部 • 负责HDFS文件存储系统维护及研发 • 长期从事海量数据处理平台研发工作 • 关注分布式计算、调度与存储系统等技术领域
3 .OUTLINE 01 背景 目录 02 离线HDFS集群演进 CONTENTS 03 离线HDFS集群优化实践 04 未来规划
4 .01 背景
5 .背景--业务特点 5
6 .背景--应用场景 6
7 .背景--集群现状 集群数 总节点数 任务数/每天 数据量 4+ 1万+ 50W+ 百PB级 7
8 .背景--离线集群架构体系 8
9 .02 离线HDFS集群演进
10 .离线HDFS集群演进--离线集群迁移 • 背景 由于公司战略需要以及原有机房的容量有限等等因素需要对离线架构体系的整体迁移 HDFS数据同步,校验,更新 HIVE元数据同步,校验,更新 迁移计划 上层数仓业务平台任务双跑及数据准确性验证 … 10
11 .离线HDFS集群演进--离线集群迁移 • HDFS数据同步,校验,更新 Ø Anty — 自研的数据同步,更新服务 Ø SyncTool — 自研的数据校验服务 迁移计划 11
12 .离线HDFS集群演进--离线集群迁移 • 收益 Ø 梳理集群数据,形成完整的数据目录画像 Ø 推行数据结构规范、数据安全和数据生命周期等数据治理方案 Ø 拆分多个NameSpace 迁移计划 12
13 .离线HDFS集群演进--2.7.2版本升级到3.2.0版本 • 需求 Ø 节约存储成本,对冷温数据进行EC压缩(可节约约50%存储) Ø 新特性更方便的引入及使用,例如支持Standby NN读,DN支持 Maintenance状态方便升级,DataNode Lifeline Protocol等新特性 Ø 紧跟社区发展步伐 13
14 .离线HDFS集群演进--2.7.2版本升级到3.2.0版本 • 升级规划 小集群优先升级, 主集群逐步稳定 前期准备 测试 持续观察服务 升级 14
15 .离线HDFS集群演进--2.7.2版本升级到3.2.0版本 • 前期准备 RollingUpgrade 流程原理 commit list review didi_hadoop 2.7.2 patch 分析、总结 hadoop 3.2.0相对2.7.2新 移植到 didi_hadoop 3.2.0 增Feature分析、配置、影 深入掌控升级的每个步骤 整理、移植 响 15
16 .离线HDFS集群演进--2.7.2版本升级到3.2.0版本 • 测试 Ø 升级/降级步骤 ü JournalNode -> NameNode/ZKFC -> DataNode -> Finalize ü DataNode -> NameNode/ZKFC -> Finalize -> JournalNode Ø NameNode RollingUpgrade/Downgrade ü https://hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop- hdfs/HdfsRollingUpgrade.html Ø 测试环境多次演练,做好充足验证2.7.2升级3.2.0的可行性、可靠性、稳定 性 16
17 .离线HDFS集群演进--2.7.2版本升级到3.2.0版本 • 升级节奏 小集群 主集群 • 滚动升2.7.2->3.2.0 • 滚动升级2.7.2->3.2.0 备份集群 • 滚动升级3.1.1- >3.2.0 17
18 .离线HDFS集群演进--2.7.2版本升级到3.2.0版本 • 升级遇到的问题 Ø HDFS-13596 EditLog兼容问题 Ø HDFS-14396 FSImage兼容问题 Ø Fix potential FSImage corruption String table兼容问题 Ø Hadoop 2.7.2版本客户端及Yarn NodeManager(2.7.2版本)支持EC读写 Ø 升级NN之后,DN会出现trash目录,保留删除的块,需要在外部定期归 档处理 18
19 .03 离线HDFS集群优化实践
20 .离线HDFS集群优化实践--安全建设 • Hadoop账号认证(自研用户名+密码机制) (1)支持从本地加载密码表 (2)支持动态刷新配置 (3)支持密码认证总开关 (4)支持单个用户密码认证开关 … 20
21 .离线HDFS集群优化实践--安全建设 • Hadoop账号认证(自研用户名+密码机制) Ø 数据结构 Ø 服务端认证及动态刷新操作 21
22 .离线HDFS集群优化实践--安全建设 • Hadoop访问白名单机制 Ø 服务端认证校验及动态刷新操作 Ø 平台用户 Ø 个人用户 22
23 .离线HDFS集群优化实践--稳定性建设 • Federation + RBF( Router Based Federation ) 23
24 .离线HDFS集群优化实践--稳定性建设 • Federation Ø MergeFileSystem实现 • 挂载点一对多 • 配置不用更新 Ø FastCopy实现 HDFS-2139 • 加快Federation上线后数据迁移速度 • 相比DistCp有数十倍性能提升 24
25 .离线HDFS集群优化实践--稳定性建设 • RBF(基于社区branch-2分支代码合并) 1. HDFS-10467 2. HDFS-12615 3. HDFS-13891 经过内部性能测试,得出这样的结论: 一个Router Server可以对应一组Namenode服务 25
26 .离线HDFS集群优化实践--成本优化 • 上线EC( Erasure Coding纠删码 ) Ø 核心数据备份 Ø 增量拷贝,压缩,校验 26
27 .离线HDFS集群优化实践--成本优化 • 上线EC( Erasure Coding纠删码 ) Ø EC的优点和缺点? 优点:节省存储空间,比如1个文件有6个block组成,按照3副本策略共需要6*3=18个块存储,物理存储 空间为128MB*18;如果采用EC的RS-6-3-1024K(6,3),则只需6+3=9个数据块,物理存储空间为128MB*9, 节省了50%的存储空间。 缺点:EC的读写性能相对于3副本有一些差距,我们内部初步测试结果如下: 1)对于写文件,使用EC相对于3副本,通常有20%~30%的性能损失; 2)对于读文件,使用EC相对于3副本,读的性能性能损失在10%以内。 EC数据的恢复对于网络整体流量来说压力较大,如果采用RS-6-3-1024K的存储策略,如果有一个副本 丢失需要恢复,则需要读取其他6块副本来进行恢复。 Ø EC的使用场景? 冷温数据 + 大文件( 6M以上) 27
28 .离线HDFS集群优化实践--性能优化 • Balancer 优化 Ø 问题 ü 影响用户访问HDFS的RPC请求 ü mover block线程被慢节点卡住 Ø 优化 ü HDFS-8188 MAX_SIZE_MOVE可配置;balancer 拷贝数据时,每次最多移动数据值是固定的10G,我们修改为可灵活配置,这样对于 新扩容的机器,通过设置调大MAX_SIZE_TO_MOVE,就可以减少挪块的计算,从而提供balancer的效率 ü HDFS-11015 添加mover block的超时控制; 当mover block出现卡住的时候可以设置超时时间限制,超时之后可以进行下一轮的迭代执 行 ü HDFS-13183 getBlocks 操作请求到Standby NN ;解决在balancer过程中对ANN RPC请求负载高的问题,减少对用户端的影响,并且 提升balancer执行效率,balance每天平衡的数据量有很大幅度的提升 优化前后对 比 28
29 .离线HDFS集群优化实践--性能优化 • Quota 优化--提升NameNode启动/切换效率 Ø HDFS-8865 启动优化 ;利用fork-join并行加速 Ø HDFS-6763 切换优化 ;从读取每个EditLog完计算一次全局Quota改为主从切换后计算一次全局 Quota 优化效果: 启动速度提升40%,切换速度提升9倍 • EditLog异步化--提升NameNode RPC的处理能力 Ø HADOOP-10300 RPC推迟处理 Ø HDFS-7964 EditLog异步化 Ø HDFS-12603 默认true 优化效果: RPC的处理能力提升10+% 29