Hadoop跨机房架构实践_陈昱康

2020-03-01 610浏览

  • 1.Hadoop跨机房架构实践 陈昱康
  • 2.陈昱康 • 携程大数据平台基础架构负责人 请将照片嵌入 灰色图形中 • 曾就职于大众点评,阿里云 • 16年加入携程,负责Hadoop,Spark研发
  • 3.目录 1 跨机房项目背景 2 跨机房项目落地实践 3 总结和展望
  • 4.携程大数据平台架构 开发平台Zeus AI开发和管理平台 查询平台ART 调度系统 主数据 ART Nova 特征管理平台 AI计算云平台 传输系统 数据质量 Adhoc AI协作平台 JanusGraph 分布式存储和批量计算框架 Hive Spark Presto 实时框架 ClickHouse Kylin Hadoop(HDFS / YARN) JStorm Spark Streaming MQ(Kafka/Hermes/QMQ) 资源部署和运维监控 自动运维系统 实时数据平台 Muise 大数据 框架设施监控 大数据 业务监控 Flink
  • 5.Hadoop在携程 • 2014年落地 • 数据量每年以两倍速度增长 • 2019年 • 数百PB,数千计算存储节点,4个ns,nnproxy, 冷热存储分离,一 套EC集群 • 两套计算集群,近15w vcore, 每天30w Hadoop job,90% spark • 四个机房,在线离线混部
  • 6.项目背景 • • • • • 四个机房,机房搬迁 预计到2024年底集群规模将达到万台 单机房机架数物理瓶颈 跨机房带宽仅200Gbps 同地域网络延迟约1ms(带宽打满后,延迟10ms,丢包率10%) 带宽200Gb 机房-B 机房-C
  • 7.原生Hadoop架构 • Shuffle读写 • hdfs读 • hdfs pipeline写 MR Task Reduce Task DataNode DataNode 机房1 机房2
  • 8.可选方案 • 不需要改代码 • 对用户不透明 多机房多集群 • 运维成本高 • 数据一致性难以保证 • 需要改Hadoop core • 对用户透明 多机房单集群 • 运维简单 • 保证数据一致性
  • 9.在线离线混部跨机房 • 在线离线跨机房 • 多机房多集群,在线服务部署独立Yarn集群 • 通过作业的资源画像,分配低shuffle量和hdfs读写量的作业到在线机房Yarn集群 • 动态反压 • 对用户透明 • Yarn支持基于label调度,一个机房一个label,禁止shuffle • 缓解集群计算压力百分之八
  • 10.多机房单集群方案 • 多机房单HDFS集群 • 多机房多Yarn集群 • 自动化迁移工具 • 跨机房带宽监控&限流
  • 11.多机房单HDFS架构 • Datanode拓扑 机房-C • 改造namenode核心, 增 加机房感知 机房-B Namenodemeta • <机房, 机架, Datanode> • 优先读写客户端所在的本 地机房副本 Datanode C:机架x Datanode B:机架y
  • 12.多机房单HDFS架构 • 跨机房多副本管理 • 增加设置目录多机房副本命令 • <文件路径,机房,副本数> • 按hive账号设置默认机房 • namenode一份元数据管理多机房副本 • 数据一致性 • 增加Editlog Op,写到fsimage, 无外部依赖,nn切换后不变
  • 13.Balancer & Mover & EC • Balancer • 支持多实例 • 增加IP范围列表,每个机房起一个,只balance本机房的数据 • Mover • 支持多实例 • 按照跨机房的副本策略move数据到archive节点 • Proxy和target节点尽量保证在同一机房 • EC • Hadoop 3.0,不跨机房,只部署在新机房
  • 14.Cross Fsck • 跨机房HDFS版本按namespace灰度上线 • 感知跨机房配置策略,修正不正确放置的副本 • 大量getBlockLocations rpc,从standby nn读 • 错误副本调用reportBadBlocks rpc,block manager删除错误副本,重新选择 新的副本 • 限流
  • 15.多机房多Yarn集群 • 基于RM Proxy和Yarn federation的跨机房调度 • 作业同机房内调度,禁止跨机房shuffle • 用户机房mapping管理&持久化, eg.• 一键账号对应机房切换 • 收拢Hadoop客户端,作业提交统一走rm proxy • 降级策略, 本地cache
  • 16.多机房多Yarn集群RMProxy C Resource Manager Nodemanager B Resource Manager Nodemanager
  • 17.Spark/Hive service/Presto • 每个机房各部署一套服务 • 客户端改造接入rmproxy,建立jdbc连接前,先从rmproxy中拿到该用 户对应机房的服务链接URL,再连接 • 对用户透明
  • 18.自动化迁移工具 • 做到自动化迁移,迁移流程常态化 • 按照BU->账号粒度进行迁移 批量设置迁移的 按账号下的db和 Hive账号(初始 用户目录依次以 3:0) 3:3复制到新机房 观察跨机房流量, 账号和队列迁移 回收老机房的计 到新机房 算和存储资源 (0:3)
  • 19.自动化迁移工具
  • 20.UnderReplicatedBlocks 自动化迁移工具 • 实践中的注意点 • 集群低峰时间执行 • 控制迁移速率,实时监控nn的UnderReplicatedBlocks和跨机房流量 metrics • 实时监控被迁移机房的hdfs可用容量,包括不同的storage type • 公共目录可单独设置多机房副本
  • 21.UnderReplicatedBlocks 跨机房带宽监控&限流 • 读写block/文件流量监控 • dfsclient,datanode埋点实时汇报 • dfsclient remote block read、data streamer写 • datanode, balance, block recovery/transfer • 路径,blockId, 读写大小,类型,pipeline,优先级,zeusid等
  • 22.UnderReplicatedBlocks 跨机房带宽监控&限流 • 流控服务 • 基于Permit(上下行),客户端获得 后才可继续执行,否则sleep • 优先级排序 • 实时监控Hickwall网络流量作为开 启条件 • 流量分析和副本调整 • 流量数据实时进ES和HDFS,实时 分析流量 • 按需调整公共目录的跨机房副本数 跨机房Block读请求 量下降到原来20%
  • 23.UnderReplicatedBlocks 效果 跨机房带宽下降到原来10%
  • 24.UnderReplicatedBlocks 总结和未来规划 • 总结 • 实现单hdfs集群机房感知功能,跨机房副本设置 • 实现基于rm proxy和yarn federation的计算调度 • 实时自动化存储和计算迁移工具 • 实现跨机房流量监控和限流服务 • 未来规划 • 智能决定迁移哪些账号 • 智能公共路径跨机房副本设置和回收 • Hadoop 3支持跨机房
  • 25.Thanks For Watching 本PPT来自2019携程技术峰会 更多信息请关注“携程技术”微信公众号~