0
点赞
收藏
分享

微信扫一扫

知乎:不谈钱的大数据治理,都是不合格的!

Java架构领域 2022-07-12 阅读 115


持续收获更多独家原创干货!


本文根据刘晓龙老师在〖deeplus直播第257期〗线上分享演讲内容整理而成。

知乎:不谈钱的大数据治理,都是不合格的!_hdfs

刘晓龙

知乎数据架构平台开发工程师


  • 2018年加入知乎离线架构组,主要负责离线大数据集群的管理和优化,对大数据存储有丰富经验。


背景


本次分享主要分为三部分。首先介绍下我们的成本治理之路,然后介绍下分级存储方案,最后讲讲我们基于云上功能做的一些扩展和未来规划。


知乎:不谈钱的大数据治理,都是不合格的!_hive_02

一、数据治理


早期我们的离线集群没有统一规范,成本治理很难下手。为了解决这个问题,我们首先制定了一套数据规范:


知乎:不谈钱的大数据治理,都是不合格的!_hdfs_03


基于该规范,我们推动业务线进行了一次长达数月的数据治理。经过治理,我们获得了很大收益:首先HDFS的数据更清晰,更规范,更安全;其次,我们清理出了数 PB 的废弃数据;最后,也让业务线有了成本意识,能够更合理的使用集群资源。


知乎:不谈钱的大数据治理,都是不合格的!_数据_04


二、机房迁移


数据治理之后不久,我们又遇到了新的挑战。数据增长变快,老机房机架资源严重不足,服务器采购交付周期很长。因此,我们进行了一次大规模的机房迁移。


架构升级



在迁移机房时,我们对原有的架构做了一次升级。


知乎:不谈钱的大数据治理,都是不合格的!_hive_05


1)升级原因


①版本考虑

  • 集群 CDH 版本落后
  • Apache Hadoop 3.x 支持 EC
  • 内部 patch 的代码,迁移后改动不大

②机型考虑

  • CVM 标准大存储机型,费用低,采购周期短


2)新机型选择


知乎:不谈钱的大数据治理,都是不合格的!_hive_06


数据迁移



1)数据 GAP


在数据迁移时,我们基于新旧机集群的 fsimage 整理出了一张 diff 表,基于该表,我们可以清晰的知道两个集群的数据 GAP:


  • 数据路径(未迁移 和 已迁移)
  • 元信息变化情况(已迁移)
  • 冗余数据(已删除)


知乎:不谈钱的大数据治理,都是不合格的!_数据_07


2)迁移问题


①DistCp 性能

  Distcp 会寻找并清理中间文件,如果是大目录,可能影响集群性能。我们 迁移时指定了 -direct 参数,不会产生中间文件,因此没必要进行这段逻辑, 因此,我们进行了 HADOOP-16872 的改进。


②专线带宽争用 

在做增量数据同步的时候,我们的一些线上业务已经跨专线的在新旧集群进 行了数据双写。为了避免数据同步影响这些线上任务,我们控制了DistCp Job的 mapper 数 和bandwidth 参数,基于带宽情况,对YARN 队列 资源进行限制。


③增量数据同步慢 

大量的 Hive表的历史数据,我们按照分区级别,提交到 YARN 上进行同步;剩下的少量「非表数据」和「增量数据」,我们采用了 local 模式进行 同步。


3)迁移收益


知乎:不谈钱的大数据治理,都是不合格的!_数据_08


三、分级存储


经过机房迁移,我们完成了架构升级,同时也获得了硬件红利带来的巨大成本收益。为了更好的应对未来数据规模的增长,我们对 HDFS 数据进行了分级存储。


1)数据分级


①分级方案

我们将 HDFS 数据划分了以下四个级别,并选用不同方式进行存储。


知乎:不谈钱的大数据治理,都是不合格的!_hive_09


②热度分析

为了方便业务对 Hive 表分区路径进行热度分析,我们基于 fsimage 和Hive Metastore 分区信息表,整理出了一张hive_partition_detail 表。


知乎:不谈钱的大数据治理,都是不合格的!_hive_10


③热度划分举例

下图是我们提供的一个热度划分的例子,业务线会根据实际的热度分析结果,进行调整。


知乎:不谈钱的大数据治理,都是不合格的!_hdfs_11

2)EC 冷数据存储

我们基于以下两点原因,首先对冷数据选用了 EC 进行存储:


  • EC 相对三副本策略可以节省 50% 的存储空间
  • 目录的path,账号,权限等都保持不变,业务感知度极低。


①EC目录收集


知乎:不谈钱的大数据治理,都是不合格的!_hive_12


EC目录筛选


由于太小的目录不适用 EC,我们对集群数据的实际大小分布情况,进行分析后,决定选择目录平均文件大小 > 2M 的目录才允许使用 EC进行存储。


知乎:不谈钱的大数据治理,都是不合格的!_hdfs_13


EC 自动转储服务流程

我们开发了一套 EC转换服务,进行自动转储,详细流程如下:


知乎:不谈钱的大数据治理,都是不合格的!_hdfs_14

  • 筛选分区路径,入库
  • 调度 DistCp 同步 目录 A  到 临时目录 B(EC 目录)
  • 校验 A 和 B 数据
  • 目录 A 移动到回收站
  • 临时目录 B 移到 A


EC 需要关注的问题


  • 组件兼容性

    知乎:不谈钱的大数据治理,都是不合格的!_hive_15
  • EC和副本的性能差异
  • 适用 EC 的文件大小


⑤EC 收益

从5月中旬 EC上线后,HDFS 集群的存储使用量和增速得到了有效控制。


知乎:不谈钱的大数据治理,都是不合格的!_数据_16

收益:


知乎:不谈钱的大数据治理,都是不合格的!_hive_17


3)COS 极冷数据存储

处理完冷数据,我们又开始对极冷数据进行分析,这部分数据约占3%,我们选择了价格较低的腾讯云 COS 进行存储。


知乎:不谈钱的大数据治理,都是不合格的!_数据_18


①COS 自动转储流程

我们扩展了之前的 EC 自动转储服务,对 COS 进行了支持,详细流程如下:


  • 找出满足时间条件的分区路径
  • 以分区为粒度,DistCp 上传数据到 COS
  • 数据校验
  • 修改 Hive 表分区 location
  • 删除 HDFS 分区目录


②COS 问题

  • COS 校验失败

我们的COS 桶设置返回 SHA 值,而 DistCp 检测 md5 值,需要修改 COS 桶策略。


  • 使用 DistCp -update,COS 端数据被 overwrite 

提交 issue HADOOP-17256, 原因是 HADOOP-8143 引入的 Bug(默 认指定 -pb)


  • DistCp 触发大量 delete 操作影响性能

去掉 Delete 相关权限,保留 PUTObject 权限


知乎:不谈钱的大数据治理,都是不合格的!_数据_19


  • 同步小文件到 COS 比 HDFS 慢

社区有一些 S3A 相关的优化 HADOOP-16829


知乎:不谈钱的大数据治理,都是不合格的!_hive_20


  • Hive 查询慢

在做 split 的时候,COS 所有 block 对应到一个local 的 node,会创建 大切片,切片个数会变少,因此 COS job 的map 数比 HDFS job 少, 造成查询慢。需要对 mapred.max.split.size 参数进行调优。


知乎:不谈钱的大数据治理,都是不合格的!_hive_21

查询 HDFS 的 job

知乎:不谈钱的大数据治理,都是不合格的!_数据_22

查询 COS 的 job

  • hadoop-2.7.7 + Flink SqlClient 查询 COS 失败

低版本 aws sdk 解析 response 不过滤 /n/t,高版本已 fix。


知乎:不谈钱的大数据治理,都是不合格的!_hive_23


  • Hive 配置 AK / SK 无效

分析发现是hive.conf.hidden.list 参数隐藏了 AK 和 SK,需要去掉


知乎:不谈钱的大数据治理,都是不合格的!_数据_24


4)极热数据存储

处理完冷数据和极冷数据,我们计划对热数据进行加速。首先我们进行了机型筛选,找到了一种带一块 NVMe 盘的大存储机型,从成本角度看,比较适合做 DataNode 节点;同时,也对 Hadoop Cache Manager / Lazy Persist / 分级存储等方案进行了前期调研。因此,我们计划利用该机型自带的NVMe 盘做 Cache,进行热数据加速,该功能目前处于开发中。


四、云上功能扩展


在使用 COS 的过程中,我们进行了一些云上功能的扩展:


COS 认证



我们希望内部自研的「用户名+ 密码」机制,适配 COS;同时需要对业务隐藏 COS 的 AK/SK 信息,而目前的大数据组件只支持静态单 AK / SK 配置。因此,我们开发了「组账号/密码 -> COS AK/SK 自动切换」功能。


知乎:不谈钱的大数据治理,都是不合格的!_hdfs_25


 目前,我们已对 Hadoop,Hive,Presto,Spark,Flink 都做了支持。


COS Select



COS 提供了对 CSV 和 Parquet 格式的下推,因此,我们的内部计算组件也需要做相应支持。


知乎:不谈钱的大数据治理,都是不合格的!_数据_26

未来规划


  • 极热数据:NVMe Cache;
  • 统一管理:HDFS 和 COS 数据,包括生命周期,权限管理,auditlog,meta 管理等。
举报

相关推荐

0 条评论