HBase基本介绍
• 写缓存: Memstore • 写操作⽇日志: WAL • 数据⽂文件: HFile 系统组成 RegionServer 深⼊入RegionServer内部. 有两个Cache和两种⽂文件 • 先写WAL做故障恢复⽤用 • 写到Memstore中 • ⾜足够⼤大时flush到HFile • Compaction (Minor/Major) 系统组成 RegionServer写操作 就整个Region flush 这⾥里里每隔⼀一会就flush, 会⽣生成很多⼩小的HFile, HBase会执⾏行行两种compaction, minor com只是将⼩小的何为⼀一些⼤大的. major更更狠⼀一些, 合成⼀一个⽂文件 (all the HFiles in a region to one HFile per column family). 归并排序. • 先找BlockCache 根据index去HFile⾥里里找 • HBase如何在hdfs这种append- only⽂文件系统上实现, 修改/删除 操作的 系统组成 RegionServer读操作 这⾥里里需要提的⼀一点是, BlockCache⾥里里不不光对数据做了了缓存, 其实在RegionServer启动的时候, 会把所有region的索引信息加载进去. 系统组成 HFile • 整个HFile分为4⼤大部分0 码力 | 33 页 | 4.86 MB | 1 年前3HBase最佳实践及优化
Conference China 2016 中国用户大会 读写性能取舍* Postgres Conference China 2016 中国用户大会 性能优化目标 • 读 vs. 写? – 读需要合并HFile,因此文件越少越好 – 写需要减少Compaction操作,因此文件越多越好 – 优化读或者写之一,而不是全部 • 顺序 vs. 随机? • 参考值——每个RegionServer吞吐率>20MB/s 及访问压力(每个Region的服务量)而定 • 过多Region的症状: – CPU线程切换频繁 – 内存使用过大,造成GC频繁,服务Timeout – 每个Region的Memstore太小,磁盘flush频繁, HFile文件过多小文件 Postgres Conference China 2016 中国用户大会 Major Compaction • HBase根据时间来计划执行Major Compaction 写入非常慢,甚至慢上万倍,一般问题在服务器端: – 写入Memstore慢 • HLog写入超时——考虑HDFS及硬盘异常 • GC——考虑优化内存使用(GC参数及算法调优有限) – Flush慢 • HFile写入超时——考虑HDFS及硬盘异常 • Compaction被触发且运行时间长——优化高峰期Compaction 策略 Postgres Conference China 2016 中国用户大会0 码力 | 45 页 | 4.33 MB | 1 年前3《深入浅出MFC》2/e
WIN32_FIND_DATA fd; // prepare srcFiles[]... bRet = TRUE; iSrcFiles = 0; hFile = FindFirstFile(SrcDir, &fd); while (hFile != INVALID_HANDLE_VALUE && bRet) { if (fd.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE) srcFiles[iSrcFiles].fd = fd; srcFiles[iSrcFiles].bIsNew = FALSE; iSrcFiles++; } 34 bRet = FindNextFile(hFile, &fd); } 再把DstDir 中的所有文件(不含子目录文件)搜寻一遍,储存在一个destFiles[ ] 数组 中,每个数组元素是一个我自定的DESTFILE 数据结构: typedef DESTFILE destFiles[FILEMAX]; WIN32_FIND_DATA fd; bRet = TRUE; iDestFiles = 0; hFile = FindFirstFile(DstDir, &fd); while (hFile != INVALID_HANDLE_VALUE && bRet) { if (fd.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE)0 码力 | 1009 页 | 11.08 MB | 1 年前3
共 3 条
- 1