云梯的多namenode和跨机房之路 罗李(花名:鬼厉) guili.ll@taobao.com @luoli523.

Slides:



Advertisements
Similar presentations
我们首先引入的计算概率的数学模型, 是在概率论的发展过程中最早出现的研究 对象,通常称为 古典概型.
Advertisements

概率论 第四节 等可能概型 ( 古典概型 ) 古典概型的定义 古典概率的求法举例 小结 布置作业.
大数据基础技术和应用. 大纲 大数据概述 大数据基础技术 工程技术 策略技术 典型应用 我们处于数据爆炸的时代 数据库 文字记录 照片 线下数据信息化 网页数据 用户行为记录 数字图像 互联网 - 移动互联网 设备监控 智能家居 摄像头 传感器 地球上至今总共的数据量: 在 2006 年,个人用户才刚刚迈.
EpiC elastic power-aware data intensive Cloud. LOGO epiC 大规模数据处理的难点 Page  2 如何查询处 理海量数据? 如何存储 海量数 据? 如何降低硬件成 本? 如何取得一劳 永逸的解决方案?
第六节 美国 ■移民国家与多元化 ■现代化的农业 ■引领美国制造业的高新技术产业.
行政法 之 行政救济篇.
我不在圖書館, 就是在 往圖書館的路上 圖書館館長 韓柏檉.
Big Data Ecosystem – Hadoop Distribution
液 体 高二物理.
第二章 复式记账原理*** 主要内容、重点难点: 1.会计要素与会计等式*** 2.会计科目与账户*** 3. 借贷记账法***
第八讲 基于Hadoop的数据仓库Hive (PPT版本号:2016年4月6日版本)
“大云”大数据平台及应用 中国移动通信研究院 郭磊涛 2013年11月.
穆公(朱金清 微博:淘穆公 阿里HBase业务设计实践 穆公(朱金清 微博:淘穆公
1、分别用双手在本上写下自己的名字 2、双手交叉
中部科學工業園區台中園區擴建 用地(原大肚山彈藥分庫)開發計畫
E-Mapreduce培训系列 基本介绍.
中小企業新增租稅優惠介紹 (研究發展支出適用投資抵減辦法 、增僱員工薪資費用加成減除辦法及智慧財產權讓與所得之減免規定)
云计算突飞猛进.
速收简历 速收简历移动APP项目 速收简历团队.
2007年11月考试相关工作安排 各考试点、培训中心和广大应考人员:
云计算学习报告 报告人: 陈 霁 大规模数据处理软件Apache Hadoop.
典型案例---医院.
第八課 蓼莪.
全省电大系统评聘工作有关事项说明 2014年9月17日.
分式的乘除(1) 周良中学 贾文荣.
第四章 制造业企业 主要经济业务核算.
云计算业务应用-数据挖掘.
巨量資料平台: Hadoop的生態系.
11.3 国产大数据库技术 阿里巴巴OceanBase 云创存储数据立方(DataCube)
《思想品德》七年级下册 教材、教法与评价的交流 金 利 2006年1月10日.
数据采集与Hadoop框架 报告人:黄文君 导 师:王华忠 BEA Confidential.
为教师开展大数据课程教学提供全方位、一站式服务
基于hadoop的数据仓库技术.
發展東華特色課程 期末成果發表 呂進瑞 國立東華大學財金系.
光的干涉.
走自立自强之路 自己的事情自己做.
人類的循環系統.
一种基于Hadoop的视频大数据分布式解码方法 冯强
Frontiers of Software Engineering
软件工程基础 Hadoop生态系统 刘 驰.
王耀聰 陳威宇 國家高速網路與計算中心(NCHC)
設置Hadoop環境 王耀聰 陳威宇 楊順發 國家高速網路與計算中心(NCHC)
YARN & MapReduce 2.0 Boyu Diao
厦门大学数据库实验室NoSQL系列学习之
第3章 分布式文件系统HDFS (PPT版本号:2017年2月版本)
第2章 大数据处理架构Hadoop (PPT版本号:2017年2月版本)
快速学习环境搭建 安装前预备工作(Linux相关配置) 实操演示(hadoop、hbase为例) 总结&练习题(课后练练手)
雲端計算 參考書籍:Python+Spark 2.0+Hadoop 機器學習與大數據分析實戰
云计算之分布式计算.
基于Hadoop的数据仓库Hive.
實現雲端運算 Hadoop HDFS 磁碟及記憶體之即時分級服務
面向高能所信息化系统的高可用数据库服务 王丽 计算中心 中科院高能所 第十八届全国科学计算与信息化会议.
《大数据技术原理与应用》 第七章 MapReduce (2016春季学期) 林子雨 厦门大学计算机科学系 主页:
Hadoop平台使用 计算中心
第九讲 Hadoop架构再探讨 (2016春季学期)
CHAPTER 6 認識MapReduce.
Spark在智慧图书馆建设中的应用探索 2017年12月22日.
Hadoop平台與應用規劃實作 報告者:劉育維.
从TDW-Hive到TDW-SparkSQL
Hadoop.
基于大数据的物流资源整合 福建师范大学协和学院 沈庆琼.
大数据时代的数据质量保障 -- 数据质量中心的设计与实现 阿里巴巴-CDO数据平台事业部 雨玟.
软件工程基础 云计算概论 刘 驰.
大数据介绍及应用案例分享 2016年7月 华信咨询设计研究院有限公司.
大数据与物流 沈庆琼 物流教研室.
基于大数据平台数据管理研究 何家乐 2013年7月 中国科学院高能物理研究所.
Hadoop入门
Unit 05 雲端分散式Hadoop實驗 -I M. S. Jian
密级: 亿赞普Hadoop应用浅析 IZP 肖燕京.
進度流程Demo.
Presentation transcript:

云梯的多namenode和跨机房之路 罗李(花名:鬼厉) guili.ll@taobao.com @luoli523

提纲 项目背景 构建跨机房集群的困难 我们的方案

项目背景 云梯集群 Hadoop集群 版本代码有云梯开发团队维护 2009年开始上线服务 跨机房之前(2013年4月)规模4500台,109PB 大集群,多租户(>5000),多资源组(>150) 生产任务、数据分析、数据开发和测试共享集群 计算分时,存储和计算quota 目前规模:5000 × 2 (分布在2个IDC)

项目背景 曾经限制云梯扩展性的因素 现在 NameNode处理RPC性能 NameNode内存 JobTracker处理RPC性能 JDK限制 。。。 现在 云梯集群机房机位不够 数据量的日增长速度让云梯机房最多支撑到2013年6月底

项目背景 云梯机房机位已满 存储利用率超过85% 计算利用率接近100% 几乎每天都有新的存储和计算资源的申请

需要解决的问题 NameNode的扩展性 机房间网络限制 数据应该如何跨机房分布? 计算应该如何跨机房分布? 几十PB数据的迁移,带数据升级 怎样做到对用户透明? 方案是否能扩展到多机房(>=3)?

NameNode的扩展性 性能压力:存储容量 性能压力:RPC请求压力 多NameNode的目的:水平扩展,分散Client的RPC请求压力 N亿文件,N亿block 可垂直扩展:物理内存,96GB->192GB->…->1TB? 性能压力:RPC请求压力 几乎所有的RPC是有状态的,需要全局锁,更新树 Client请求: 5000(slaves) * 20(slots/slaves) = 10w并发 DataNode请求: blockReport & heartbeat ≈ 2000 qps 垂直扩展?CPU主频1.8GHz->3.2GHz->??? 多核??? 多NameNode的目的:水平扩展,分散Client的RPC请求压力 借鉴成熟的方案——HDFS Federation Jobtracker的扩展性由hadoop 2.0 Yarn解决,这里不涉及

跨机房网络限制 带宽 延时 故障 单机房内:点对点的带宽1Gbps 跨机房间(5000 vs. 5000):点对点的带宽≈20Mbps 总带宽较小,容易被打满,成为瓶颈 延时 1ms之内 -> 5-10ms 对离线作业的影响可控 故障 机房间网络故障如何处理? 如何保障断网后,任意一个机房内部的服务是否正常?

数据和计算如何跨机房分布 N个资源组,M个机房 任意资源组的计算/存储资源不超过单个机房总量 GroupA DC1 GroupC GroupB DC2 GroupD 任意资源组的计算/存储资源不超过单个机房总量 单个计算任务 (Job) 的所有 Task 在同一机房内运行 (默认)产生的数据只写到本地机房 也有部分数据需要跨机房写 (默认)只读取本机房的文件副本 也有少部分作业直接跨机房读 这里的资源组包括计算和存储资源,存储资源就是HDFS上保存的数据 资源组被绑定到一个固定的机房。如果是完全独立的资源组,怎么划分都没有问题,只需要保证多个机房之间的资源分布均衡。 考虑到资源组之间有相互依赖,这里的依赖就是就是跨组的数据访问,如何更好的把数据和计算做跨机房分布是我们遇到的最大难题。 尽量减少跨机房的数据流量

跨机房的架构 NN1 NN2 JT1 JT2 用户Gateway 内部网络 机房1 机房2 独享带宽 /group/A /group/C /group/B /group/D 机房1 机房2 NN1 Cross Node NN2 DN TT DN TT DN TT DN TT 独享带宽 DN TT DN TT DN TT /group/B/tbl1 Task Task Task Task Task /group/A /tbl2 JT1 JT2 groupA groupB

技术实现

多namenode方案 —— federation 业界有成功案例:Facebook 原始方案:单机房多NameNode 目的:拆分Namespace /group/A /group/C /group/B /group/D NN1 NN2 DN DN DN DN DN DN Pool1 /disk*/p1 Block Pools Pool2 /disk*/p2

Namespace split distcp? —— 慢,代价大 FastCopy? —— 快很多,没有物理拷贝,但仍然太慢 我们的方案 From Facebook https://issues.apache.org/jira/browse/HDFS-2139 从源NameNode上获取文件信息和 block 信息,并在目标 NameNode 上创建同样的文件 获取 block 所在 DataNode 信息 在DataNode上多个block pool之间复制数据(Hard Link) block report 给目标 NameNode 我们的方案

Namespace split 我们的拆分方案 NN1 NN2 /group/B /group/D /group/A /group/B /group/C /group/D /group/A /group/C /group/A /group/B /group/C /group/D 1,nn2 load fsimag1 NN1 NN2 3,pool1 report to NN1 4,pool2 report to NN2 DN1 DN2 DN3 Pool1 /disk*/p1 Pool2 /disk*/p2 Pool1 /disk*/p1 Pool2 /disk*/p2 Pool1 /disk*/p1 Pool2 /disk*/p2 2,hardlink pool1 to pool2

对Client透明:ViewFS 用户无需感知集群多机房的细节 HDFS多NameNode MapReduce 计算 ViewFS JobTracker Proxy ResourceManager Proxy(Hadoop 2.0)

对Client透明:ViewFS 配合HDFS Federation使用 要点: 我们的改进 Client Side Mount Table 屏蔽多namespace细节 fs.default.name: hdfs://nn.ali.com:9000/ -> viewfs://nsX/ Defaut filesystem: DistributedFileSystem -> ViewFileSystem 用户路径随之改变 我们的改进 Zookeeper保存Mount table,方便更新和统一管理 需要对以下场景真正的透明化 用户代码hard code:hdfs://nn.ali.com:9000/ Hive元数据库:hdfs://nn.ali.com:9000/group/tb/hive/tb1 Hive local mode:把非hdfs开头的路径作为local方式 一个新的FileSystem封装了ViewFileSystem

对Client透明:ViewFS NewFileSystem fs.hdfs.impl hdfs://nn.ali.com:9000/group/A/file ViewFileSystem Config: mount table Zookeeper Watch ViewFS Admin Tools Update /group/A /group/B nn1.ali.com nn2…. nn3.ali.com

对Client透明:ViewFS create mkdir open Yunti3 View Distributed Distributed fs.hdfs.impl = Yunti3FileSystem hdfs://hdpnn:9000 /group/A -> nn1 /group/C-> nn1 /group/B -> nn2 /group/D -> nn2 Yunti3 FileSystem viewfs://nsX ZooKeeper View FileSystem Distributed FileSystem hdfs://nn1:9000 hdfs://nn2:9000 Distributed FileSystem Distributed FileSystem Client /group/A /group/C /group/B /group/D NameNode (NS1) NameNode (NS2)

MR ProxyNode MR ProxyNode: Job 调度机制优化:把计算调度到数据所在的地方 每个 JobTracker 只调度一个机房内的作业 ProxyNode 直接处理 JobClient 请求,并自动转发给相应的 JobTracker 或 ResourceManager 提供同一的Job查询接口(Web UI / App) Job 调度机制优化:把计算调度到数据所在的地方 跨机房列表中的数据正在传输中(DC1->DC2),DC2上的 Job 被暂停调度,等待传输完毕 Ad-hoc查询,DC2上的 Job 需要读DC1上的数据,Job暂停调度,通知 CrossNode,数据传输完毕后继续调度 跨机房数据 Join,DC1大表,DC2小表,Job 调度到DC1上,跨机房直接读取DC2数据,无需等待 第3个优化需要打破资源组和机房之间的绑定关系

MR proxynode (cont.) MR ProxyNode RM1 JT1 JT2 RM2 Mapping: JobClient JobClient Mapping: groupA -> JT1 groupB -> JT2 MR ProxyNode 计算还是跟着数据走? Proxy的图,JT,RM都画上 HA是个小问题 RM1 JT1 JT2 RM2 NM TT TT TT TT TT TT NM

数据跨机房迁移 CN1 CN2 CN2 NN1 NN2 NN2 /g/D 3:3 /g/B 3:3 /g/B 3:3 /g/B /g/D /g/A /g/C NN1 NN2 NN2 Pool2 DN1 Pool1 Pool2 DN2 Pool1 Pool2 DN3 Pool1 Pool2 DN4 Pool1 Pool2 DN5 Pool1 Pool2 DN6 Pool1 block copy DataCenter1 DataCenter2

CROSSNODE 一个独立的服务,对NameNode发送指令 主要功能 根据预置的跨机房文件列表计算待拷贝的文件 维护文件原始副本数,跨机房副本数,实际副本数等状态信息 从NameNode实时同步文件创建,移动,删除等信息 对跨机房的流量进行监控和限速 CrossFsck 检查当前跨机房文件的副本放置状况,并指挥NameNode 进行纠正 尽量减少对HDFS的改动

CrossNode (cont.) 跨机房数据迁移,几十PB的数据迁移 如何预先知道需要跨机房的文件? HDFS文件副本复制不及时? 将整个资源组的数据作为跨机房文件列表(/group/B) 副本数 3:0 -> 3:3 -> 0:3 如何预先知道需要跨机房的文件? 通过历史作业分析得到大部分需要跨机房的文件或目录 形成一个跨机房文件列表,作为CrossNode的输入 HDFS文件副本复制不及时? JobTracker对所有的Job输入做检查 和CrossNode进行通信 可以暂停Job的执行

CrossNode内部结构 /a/b DC2 /c/d DC2

云梯现在的样子 多NameNode,跨越2个物理机房: 跨机房副本管理,数据迁移 多机房对用户透明 HDFS Federation 跨机房副本管理,数据迁移 CrossNode 多机房对用户透明 ViewFS MR ProxyNode 规模已接近万台(还没到一万,到那天我会告诉大家的) 可存储数据容量220PB

云梯将来的样子 对外服务? 云端企业私有hadoop集群? 集成分布式解决方案? hadoop淘宝开源发行版? 。。。。。 搭载我们的hbase版本和hive版本 hadoop淘宝开源发行版? 。。。。。

加入我们 阿里巴巴数据平台事业部 阿里巴巴技术保障部 我们正在招聘Hadoop/Hbase/Hive开发工程师,运维工程师,SA,Java工程师,数据开发工程师,算法工程师,妹子等等。。。 guili.ll@taobao.com dawu@taobao.com @luoli523 @淘大舞(此乃牛人)

Q & A 谢谢!