申请试用
HOT
登录
注册
 
EC及EC转换融入在京东HDFS中 的落地实践
2 点赞
0 收藏
1下载
神龙
/
发布于
/
402
人观看
展开查看详情

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

2 点赞
0 收藏
1下载
相关文档