- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
EC及EC转换融入在京东HDFS中 的落地实践
展开查看详情
1 .EC及EC转换融入在京东HDFS中 的落地实践 毛宝龙 分布式存储负责人 大数据平台架构师
2 .讲师简介 毛宝龙,京东大数据存储相关负责人, 主要负责JDHDFS、JDCeph、JDJDK、 JDKernel等组件。 主导构建京东万台规模大数据分布式文 件存储。热爱开源,并积极投入开源社 区。分布式缓存文件系统Alluxio(原 Tachyon)开源社区PMC。Hadoop社区 contributor。 京东Hadoop第二代传人,将EC融入 JDHDFS的项目负责人及核心研发。带领 京东Hadoop进入新纪元。
3 .演讲大纲 背景介绍 01 Introduce background 02 方案介绍 Introduce proposal 03 平滑上线 How we online 04 踩过的坑 What you can avoid 05 总结 Summary
4 .1.背景介绍
5 .背景介绍 2018年大数据平台数据存储(单位:PB) 430 存储量线性增长 450 415 420 375 数据作为公司战略资产之一, 随着京东 390 360 331 321 315 业务持续增长,开辟不同维度经营方向, 330 300 288 业务集市年增长率达到133%,预估 270243 226 243 257 256 220 2019年年中总体存储将突破EB级别。 240217 214 207 218 205 210 温冷数据存储占比 180 150 2018-01-01 2018-02-01 2018-03-01 2018-04-01 2018-05-01 2018-06-01 2018-07-01 2018-08-01 2018-09-01 温冷数据 (一周以上没有访问记录的数据) 最 2018年大数据平台温冷数据比例(单位:%) 为适用使用降存方案,与此同时温冷数据占总 88.00 86.00 85.00 存储比例的80%以上, 通过降存方案降低现有 86.00 84.00 82.00 83.00 84.00 83.00 存储281PB以上。 82.00 80.0078.00 80.00 77.00 78.00 76.00 74.00 72.00 2018-01-01 2018-02-01 2018-03-01 2018-04-01 2018-05-01 2018-06-01 2018-07-01 2018-08-01 2018-09-01
6 .背景介绍——EC原理 Data: 1, 2, 3 1*1+1*2+1*3=6 * = 2 * 1 + 5 * 2 + 1 * 3 = 15 1*1+1*x+1*y=6 2 * 1 + 5 * x + 1 * y = 15
7 .背景介绍——EC原理——布局
8 .背景介绍——EC原理 • Erasure coding纠删码技术简称EC,是一种数据保护技术。 • 最早用于通信行业中数据传输中的数据恢复,是一种编码容错技术。 优点: • XOR 节省存储 • RS (6,3)(Reed Solomon) 减少网络和IO的消耗 • LRC(locally repairable codes) 缺点: • SRC(Sparse Erasure Code) 会消耗一定的CPU。 重建块几率增高(坏一个数据块 就需要重建)
9 .背景介绍——纠删码降存储的收益 HDFS多副本存储 纠删码技术存储 冷热数据存储策略 集群总使用745PB存储空间, 纠删码技术,以RS(3,2)为例,降低 针对占用80%存储的温数据作为 相当于15万块盘,其中集市 存储45%,节省存储335P,相当于 数据治理的首选目标, 提高数据 存储430PB, 数据仓库315PB。 6500台服务器存储。相当于2亿成本。 价值的利用率。
10 .2.方案介绍
11 .方案介绍——思考 2014年社区EC inside HDFS开发 2015年合并了Phase1的205个Patch 2015年开启PhaseII 的工作 2015年开启Follow-on work phase I 直接用新版本hadoop社区的,不得了吗?
12 .方案介绍——大数据生态 • 大数据生态,最底层依赖 • 近5年的JDHDFS改动 • 社区版本无法原地升级 • 社区若干严重BUG
13 .方案介绍——社区版本不可用于大规模集群场景 - 移植后的兼容版本上了线上8000台规模的NN,DN被卡死。HDFS-14171. Performance improvement in Tailing EditLog. Contributed by Kenneth Yang. Wei-Chiu Chuang 29/12/2018, 02:34 - HDFS-14344. Erasure Coding: Miss EC block after decommission and restart NN - HDFS-14450. Erasure Coding: decommissioning datanodes cause replicate a large number of duplicate EC internal blocks - XmitsInProgress为负数 HDFS-14353. maobaolong. - LeaseManager里的openfile特别多,一个月前打开的文件,client已经kill掉,文 件还是不断续约。HDFS-14419,HDFS-14446 - 重复将DN加入Topylogy. HDFS-14247. Repeat adding node description into network topology. Contributed by HuangTao. Inigo Goiri 02/03/2019, 01:18 结论: 社区版本不可用于大规模集群场景
14 . 方案介绍——方案演变 01 HDFS RAID 2011年facebook提出的外围EC 2013年HDFS RAID停止开发更新 使用MR的方式编解码,可编码条件限 制问题、NN压力 (就像买了个小产权房) 02 HDFS EC inside 2014年社区EC inside HDFS开发 2015年合并了Phase1的205个Patch 2015年开启PhaseII 的工作 03 JD最终方案 2015年开启Follow-on work phase I 彻底摒弃FaceBook方案 将EC inside HDFS方融入 JDHDFS+基于TTL离线转换
15 .研发方案
16 .方案介绍——移植社区EC
17 .方案介绍——移植社区EC • NameNode • DataNode • Client • 测试基础框架 • 其它 • Common(模块的修改,协议的修改)
18 .方案介绍——移植社区EC 移植原则 • 按功能模块移植代码 • 移植过程中,尽可能的保持社区代码原有样式,以便于后续apply patch • 对移植过程没有任何帮助的代码,不移植 • 对于接口,优先移植,而且与社区保持一致 • 测试用例后续必须移植(必须移植) • 对于目前不移植或者为了简化移植工作而去掉的代码,一定不能影响 现有场景的功能,并且用TODO(author: xxx)标识未来会进行继续修改
19 .方案介绍——移植社区EC 移植里程碑 • 2018年10月12日,完成能跑通最基础的条带文件和连续文 件读写(4个日夜近1000个文件) • 2018年10月31日,能移植并跑通所有HDFS相关测试用例 • 2018年11月16日,完成移植版本的集成测试,并修改已知 高优先级问题 • 2018年11月30日,集成离线转换代码后,集成测试,并修 改已知高优先级问题。
20 .方案介绍——移植社区EC JDHDFS-286. IDM-Conventor: convertor phase 1 merge to trunk-ec-wip qiangliu JDHDFS-230. IDM: backport the changes from github trunk branch JDHDFS-177. IDM: MiniDfsCluster support ec wangzhiyuan JDHDFS-176. IDM: Editlog&EditlogOp support EC maobaolong JDHDFS-175. IDM: WebHDFS support EC maobaolong JDHDFS-163. IDM: move the Safemode logic to blockmanager. maobaolong JDHDFS-161. IDM: Copy BlockManager all and fix the error reports of others. maobaolong JDHDFS-139. IDM:HdfsFilestatus Porting. maobaolong JDHDFS-138. IDM: LeaseManager porting. maobaolong JDHDFS-133: IDM: Inode support EC liuhongtong JDHDFS-135. IDM: FsDirectory porting wangzhiyuan JDHDFS-118: IDM: backport fsimage proto liuhongtong JDHDFS-124. IDM: move safemode from fsnamesystem to blockmanager. maobaolong JDHDFS-132: IDM: backport DN to NN protocol liuhongtong JDHDFS-90. IDM: ErasureCodingPolicyManager porting fengchuang1 JDHDFS-124. IDM: BlockIdManager support EC. maobaolong JDHDFS-88. IDM: Data striping support in HDFS client(common) wangzhiyuan JDHDFS-87. IDM: EC Admin support fengchuang1 JDHDFS-108. IDM: NameNode proto support maobaolong JDHDFS-83. IDM: Common side changes for HDFS Erasure coding support maobaolong
21 .方案介绍——离线转换1.0
22 .方案介绍——离线转换-2.0(HDFS内轻量级调度系统) Client BaseDnCommand Request Reply DN0' DN1' DN2' DN3' DN4' DN5' DN6' DN7' DN8'
23 .方案介绍——离线转换-2.0(HDFS内轻量级调度系统) NameNode DataNode Client request Configuration Command Command Script Command Script Command Resource Package Resource Package ENV: <k, v>, <k, v>,搽 <k, v> ENV: <k, v>, <k, v>,搽 <k, v> reply
24 .方案介绍——离线EC转换命令 hdfs ec Usage: bin/hdfs ec [COMMAND] [-setPolicy -path <path> [-policy <policy>] [-replicate]] …… [-convert -path <path> -dst-path <dst-path> [-policy <policy> | -replicas <replicas>]] [-dataValidation [-force] -path <path>] [-validationReport -path <path>] [-speedLimit -convertTasksConcurrency <Concurrency number>] [-convertTaskThreadPoolSize <ThreadPool number>] [-getConvertProgress [<path> ...]] [-cancel -jobId <JobID>] [-help <command-name>]
25 .方案介绍——离线EC转换页面
26 .方案介绍——智能离线EC转换 - 基于TTL(某个文件夹中的文件的访问时间超过设定超时 值) —> 进行EC转换。 - EC转换过的文件 —> 自动开启校验 - 校验成功的文件 —> 自动执行将副本,最后删除 - 支持EC转换限速 - 抽象成通用的HDFS内部的轻量级分布式调度系统
27 .3.平滑上线
28 .平滑上线——EC上线过程 - 兼容版本改造(读写layout分开;写layout可配置) - 软件版本和模块版本分离(2.100.0,2.7.1) - DN滚动上线(2.100.0) - 基于Label的选块策略 - 拆JN—>滚动上线JN - 上一个NS内的单个NN,验证不通过回滚 - NM\JobHistoryServer内部组件升级 - Spark\Hive\Kylin\Presto\Pig等计算框架
29 .平滑上线——元数据兼容性改造 Editlog