大数据存储技术HDFS与HBase实践_第1页
大数据存储技术HDFS与HBase实践_第2页
大数据存储技术HDFS与HBase实践_第3页
大数据存储技术HDFS与HBase实践_第4页
大数据存储技术HDFS与HBase实践_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026/06/16大数据存储技术HDFS与HBase实践汇报人:大数据技术团队目录大数据存储技术背景与核心概念HDFS与HBase架构原理深度解析技术对比与选型策略典型应用场景实战性能调优最佳实践0102030405大数据存储技术背景与核心概念01大数据时代的存储挑战存储容量瓶颈单机磁盘容量有限,难以支撑TB/PB级数据存储纵向扩展成本高昂,硬件采购周期长性能瓶颈单机I/O吞吐量受限,无法满足高并发访问需求数据量增长导致查询响应时间线性增长可靠性瓶颈单点故障风险高,硬件故障可能导致数据丢失传统RAID方案在大规模集群中成本过高HDFS核心概念与设计理念一次写入,多次读取优化顺序读写,适合离线批处理场景高容错性通过多副本机制自动应对节点故障高吞吐量将大文件分块存储,支持并行读写廉价硬件运行在普通商用服务器上,降低成本数据块大小128MBHadoop2.x/3.x默认配置副本策略3副本默认策略保障数据可靠性机架感知智能调度优化数据传输效率,降低网络开销主从架构NameNode管理元数据DataNode存储实际数据HBase核心概念与定位HBase核心定位HBase是构建在HDFS之上的分布式、面向列的NoSQL数据库实时随机读写:提供海量数据的实时随机读写能力亿级高并发:支持亿级数据量的高并发访问弥补HDFS不足:弥补HDFS在低延迟随机访问场景的不足关键特性面向列存储数据按列族组织,支持动态列稀疏数据友好空列不占用存储空间多版本支持每个单元格可存储多个版本数据水平扩展通过Region分裂实现线性扩容依赖关系HDFS提供底层持久化存储Zookeeper实现集群协调与高可用HMaster负责元数据管理与负载均衡RegionServer处理实际数据读写请求HDFS与HBase的关系HDFS是HBase的唯一持久化存储底座HBase本身不存储文件,只规定文件格式与内容HBase所有数据与日志文件最终存储在HDFS组件核心职责适用场景HDFS分布式文件存储、多副本容灾大文件顺序读写、离线批处理HBase数据组织管理、随机读写优化实时查询、高并发写入HDFS提供高可靠、可扩展的存储能力HBase提供低延迟、高并发的数据访问能力两者结合实现从离线分析到实时查询的全场景覆盖HDFS与HBase架构原理深度解析02HDFS架构详解:核心组件NameNode主节点管理文件系统命名空间(目录树、文件元数据)维护文件与数据块的映射关系处理客户端请求(创建、删除、重命名文件)内存中存储fsimage镜像和edits操作日志DataNode从节点存储实际数据块(默认128MB/块)定期向NameNode发送心跳和块报告(每3秒)执行数据块的读写、复制、删除操作处理客户端的数据读写请求SecondaryNameNode辅助节点定期合并fsimage和edits日志(默认每小时)减轻NameNode启动时的元数据合并压力非NameNode热备,无法实现故障自动切换HDFS架构详解:数据读写流程副本放置策略与数据流水线读文件流程1请求文件元数据客户端调用open(),向NameNode请求文件元数据2获取块位置列表NameNode返回文件所有块的位置列表(包含副本的DataNode地址)3就近选择DataNode客户端根据就近原则选择最近的DataNode读取块数据4并行读取块数据并行读取多个块,边读边交给应用程序写文件流程1创建新文件记录客户端调用create(),NameNode检查权限并创建新文件记录2选择目标DataNodeNameNode根据副本策略选出目标DataNode列表(如3个节点)3建立数据管道写入客户端建立数据管道,依次向DataNode写入数据块4确认完成写入DataNode接收数据后向客户端发送确认,完成写入HDFS架构详解:高可用机制ActiveNameNode对外提供服务StandbyNameNode热备状态JournalNode集群存储edits日志ZKFailoverController监控与自动切换主备切换流程1ZKFailoverController检测到ActiveNameNode故障2向Zookeeper申请分布式锁3将StandbyNameNode切换为Active状态4客户端自动连接新的Active节点继续服务元数据同步机制ActiveNameNode将edits日志写入JournalNode集群StandbyNameNode持续从JournalNode读取并应用edits保证主备节点元数据实时一致HBase架构详解:核心组件HMaster管理表结构(创建、删除、修改表)负载均衡:Region分配与迁移故障恢复:RegionServer故障时重新分配Region不参与实际数据读写,避免成为性能瓶颈RegionServer处理客户端读写请求管理多个Region(数据分片)执行数据Flush、Compaction、Split操作定期向Zookeeper发送心跳Region表按RowKey范围划分为多个Region每个Region存储一段连续的行数据Region过大时自动分裂为两个子RegionHBase架构详解:数据模型与存储表Table数据的逻辑组织单元行键RowKey唯一标识一行数据,按字典序排序列族ColumnFamily列的逻辑分组,需预先定义列限定符ColumnQualifier列族下的具体列,可动态添加单元格Cell由RowKey、列族、列限定符、时间戳唯一确定时间戳Timestamp支持多版本数据存储数据按RowKey排序存储所有数据依据行键的字典序进行物理存储排列每个RegionServer管理多个RegionRegionServer作为计算节点负责多个数据分片的读写服务每个Region包含多个Store(对应列族)Store是列族级别的物理存储单元,与列族一一对应Store分为MemStore(内存)和HFile(磁盘)内存缓存加速写入,磁盘文件持久化存储写入流程1数据先写WAL日志(预写日志,保证可靠性)2再写MemStore(内存缓冲区,提升写入性能)3满后Flush为HFile(持久化到HDFS磁盘文件)HBase架构详解:读写流程写数据流程1获取meta表位置客户端向Zookeeper获取hbase:meta表位置→2查询目标Region从meta表查询目标Region所在的RegionServer→3发送写请求向RegionServer发送写请求→4写入WAL日志RegionServer将数据写入WAL日志(保障持久性)→5写入MemStore数据写入MemStore内存→6返回成功返回客户端写入成功读数据流程1查询meta表客户端查询meta表定位目标RegionServer→2发送读请求向RegionServer发送读请求→3查询MemStore和HFileRegionServer同时查询MemStore和HFile→4合并返回结果合并结果返回客户端MemStoreFlush默认128MBCompaction合并HFile过多时触发RegionSplit分裂默认10GBWAL日志保障故障后可恢复HBase架构详解:Zookeeper协调机制存储hbase:meta元数据表位置维护元数据表节点索引,确保客户端快速定位客户端读写时先访问ZK获取meta表节点读写请求优先查询ZK,减少直接访问HMaster减轻HMaster访问压力,实现分布式调度分散请求负载,提升集群整体吞吐量支持部署多台HMaster(1主多备)多实例部署消除单点故障风险通过ZK临时节点机制实现选举利用临时节点特性自动触发Leader选举主Master故障时秒级完成主备切换快速故障转移保障服务连续性RegionServer定时向ZK发送心跳周期性健康上报维持节点存活状态ZK实时监控节点状态持续追踪集群各节点运行状况节点故障时自动清除临时节点并通知Master会话超时触发自动清理与故障通知提供分布式锁机制协调多节点互斥访问共享资源管控表创建/删除、Region迁移等关键操作序列化执行敏感DDL与数据重分布防止多节点并发操作引发数据错乱保障元数据一致性与操作原子性技术对比与选型策略03HDFS与HBase核心差异对比维度HDFSHBase数据模型文件系统(目录/文件)面向列的宽表(SortedMapofMaps)数据组织固定大小数据块(128MB)按RowKey排序的Region分片灵活性文件结构固定,不支持随机修改列动态添加,支持随机读写维度HDFSHBase访问模式高吞吐顺序读写低延迟随机读写写入方式一次写入,多次读取支持实时更新与删除查询能力全文件扫描按RowKey快速查询维度HDFSHBase一致性副本间最终一致性单行强一致性扩展性易于水平扩展DataNode易于水平扩展RegionServer单点风险NameNode单点(HA可解决)HMaster单点(HA可解决)适用场景分析大文件存储GB/TB/PB级文件,如日志归档、数据湖存储离线批处理MapReduce、Spark等批量计算任务一次写入多次读取数据写入后不再频繁修改顺序访问视频、图片等大文件的流式读取实时随机读写需要毫秒级响应的在线业务海量数据查询亿级数据量,按主键快速查询高并发写入每秒百万级写入吞吐稀疏数据列经常变化,空列不占存储时序数据IoT设备监控、用户行为日志需要实时随机读写?→HBase只需离线批处理?→HDFS数据量小(万级以下)?→MySQL等关系型数据库需要复杂SQL多表JOIN?→Hive/SparkSQL典型应用场景实战04场景一:用户行为日志存储核心优势业务背景互联网应用需记录用户点击、浏览、购买等行为数据每天产生数十亿条日志,需实时存储和查询HBase表结构设计RowKeyuserId_reversedTimestamp(反转时间戳避免热点)列族behavior列page_view(浏览页面)、click(点击位置)、duration(停留时长)查询示例scan'user_log',{STARTROW=>'123_',LIMIT=>100}百万级每秒写入线性扩展加机器即可扩容<100ms时间范围扫描实际案例某APP用户行为日志系统,单表存储千亿级数据,查询响应时间<100ms场景二:物联网时序数据核心优势业务背景10万台智能设备日数据量17亿条每5秒上报温度、湿度、电量等数据HBase表结构设计RowKey设备ID_反转时间戳列族metrics列voltage(电压)、current(电流)、power(功率)、temperature(温度)查询示例scan'meter_data',{STARTROW=>'A1001_9223370000000000000',ENDROW=>'A1001_9223379999999999999'}海量时序数据存储按设备ID+时间范围快速查询支持TTL自动过期(保留最近30天)实际案例智能电表监控系统万亿级数据存储支持实时监控与历史查询场景三:用户画像与标签系统业务背景电商平台需为2亿用户构建画像,每个用户有数百个标签标签经常新增、修改,需实时更新表结构设计RowKey:userId列族:basic(基础信息)、interest(兴趣标签)、behavior(行为标签)列:age(年龄)、gender(性别)、purchase_power(购买力)...列动态增加新增标签无需改表结构单行读取快查一个用户所有标签O(1)复杂度稀疏数据友好用户A有100个标签,用户B只有10个阿里用户画像系统通过BulkLoad实现千万级标签5分钟更新支撑双十一万亿级请求场景四:Facebook实时推荐系统数百亿条每日处理事件数数百个记录参数维度核心应用用户Like计数实时统计用户点赞次数内容推荐基于用户行为实时推荐内容FacebookInsight系统提供实时数据分析技术亮点计数器功能使用HBase计数器功能横向扩展支持横向扩展,服务数百万用户运维经验基于HBase集群运维经验,稳定可靠选型理由关系型数据库内存数据库CassandraHBase最终选择HBase:可扩展性强、运维经验丰富、成本可控场景五:HDFS数据湖存储ODS层原始数据层:存储原始日志、数据库备份DWD层明细数据层:清洗后的明细数据DWS层汇总数据层:按主题汇总的数据ADS层应用数据层:面向应用的数据集市统一数据湖企业需构建统一数据湖,存储多源异构数据多场景支持支持离线分析、机器学习、数据挖掘等场景存储成本低廉价硬件,高压缩比扩展性强线性扩容,支持PB级存储生态完善与Hive、Spark、Presto等无缝集成实际案例某电商平台数据湖,存储PB级数据,支撑离线分析、实时推荐、数据挖掘等业务性能调优最佳实践05HDFS性能调优策略硬件层面使用SSD替代HDD提升I/O性能增加DataNode数量提升并发读写能力确保快速低延迟的网络连接配置参数块大小256MB大文件场景调大块大小,减轻NameNode压力副本数量热数据2副本/冷数据3副本NameNode内存增加堆内存提升元数据处理能力DataNode线程dfs.datanode.max.transfer.threads默认4096,按需增加运维优化定期运行hdfsbalancer均衡数据分布合并小文件减少NameNode内存占用启用回收站功能避免误删数据监控NameNode和DataNode日志定位性能瓶颈HBase性能调优策略合理设置scan缓存大小大场景调至500-1000,减少RPC次数使用批量get请求减少客户端与RegionServer连接数精确指定列族或列避免全表扫描,提升查询效率离线批量读取禁用缓存避免影响实时业务性能确保读请求均衡避免热点RegionServer,分散负载压力合理配置blockcache占比选择LRUBlockCache或BucketCache策略JVM内存建议小于20G减少GC影响,降低停顿时间调整handler.count参数适配读写请求量,提升并发处理能力合理设计RowKey避免热点问题,采用反转、加盐等策略避免过多列族和冗余数据精简数据模型,提升读写效率使用压缩算法Snappy、LZO降低存储和传输开销合理设置HFile大小避免Region过大,优化分裂策略HBase与HDFS协同优化ShortCircuitLocalRead允许客户端绕过DataNode直接读取本地数据减少网络I/O,提升读取性能配置:dfs.client.read.shortcircuit=trueHedgedRead应对短暂网络或磁盘问题同时从多个DataNode读取数据,取最快响应提升读取成功率HDFS副本策略优化HBase场景可适当降低副本数(如2副本)牺牲部分可靠性换取存储空间和写入性能需权衡业务容灾需求数据本地性优化RegionServer与DataNode部署在同一节点提升数据本地读取比例减少跨节点网络传输常见问题与解决方案小文件问题大量小文件消耗NameNode内存合并小文件使用SequenceFile或Parquet格式NameNode单点故障NameNode宕机导致集群不可用部署HA架构配置JournalNode集群数据倾斜部分DataNode负载过高定期运行balancer均衡数据分布Region热点大量请求集中在少数RegionRowKey设计避免热点(反转、加盐、哈希)RegionServer故障节点宕机导致服务中断Zookeeper自动检测Master重新分配RegionWAL文件损坏导致数据不一致监控/hbase/corrupt目录及时处理损坏文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论