HBase存储架构1、HBase采用了类似Google Bigtable的数据模型,即一个稀疏的、分布式的、持久化的多维映射表,每个表都由行键、列族、列限定符和时间戳组成 。
2、/hbase/.archiveHBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到.archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理 。
3、hbase的核心数据结构为LSM树 。LSM树分为内存部分和磁盘部分 。内存部分是一个维护有序数据集合的数据结构 。
4、HBase系统架构如下所示,包括客户端、Zookeeper服务器、Master主服务器、Region服务器 。一般而言,HBase会采用HDFS作为底层数据存储 。
5、其中Hbase是基于HDFS , 而oceanbase是自己内部实现的分布式文件系统,在此也可以说分布式数据库以分布式文件系统做基础存储 。
6、HRegion:Hbase中分布式存储的最小单元 , 可以理解成一个Table HStore:HBase存储的核心 。由MemStore和StoreFile组成 。
深入理解HBASE(4)HFile1、依次加载各部分的HFileBlock(load-on-open所有部分都是以HFileBlock格式存储):data index block、meta index block、FileInfo block、generate bloom filter index、和delete bloom filter 。HFileBlock的格式会在下面介绍 。
2、混合了BloomFilter Block以后的HFile构成如下图所示:再来看hbase如何在hdfs上去检索一行数据 。
3、在Region里面管理的Store管理的是列族,Store里面有Mem Store(内存),Flush之后,删除内存中的数据,同时写入文件StoreFile Hfile,Hfile 其实是在DataNode里面的 。Hbase的读比写慢 。Hbase命名空间下有一张元数据表meta表和namespace表 。
4、/hbase/.archiveHBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到.archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理 。
5、因为HBase在HDFS中是以HFile文件结构存储的,所以高效便捷的方法就是直接生成HFile文件然后使用Bulk Load方法,即HBase提供的HFileOutputFormat类 。
六、HBase写入流程1、(1)当一个Region中的某个Store下的StoreFile的总大小查过某个值,由参数hbase.hregion.max.filesize设定(默认10g) , 该Region就会按照RowKey进行拆分 。
2、使用bulk load功能最简单的方式就是使用importtsv 工具 。importtsv 是从TSV文件直接加载内容至HBase的一个内置工具 。它通过运行一个MapReduce Job,将数据从TSV文件中直接写入HBase的表或者写入一个HBase的自有格式数据文件 。
3、当 RegionServer crash 或者目录达到一定大?。?会开启 replay 模式,类似 MySQL 的 binlog 。/hbase/oldlogs当.logs 文件夹中的 HLog 没用之后会 move 到.oldlogs 中 , HMaster 会定期去清理 。
HBase写数据的异常问题以及优化HBase数据写入通常会遇到两类问题,一类是写性能较差,另一类是数据根本写不进去 。
BloomFilter的数据存在StoreFile的meta中,一旦写入无法更新,因为StoreFile是不可变的 。
出现这种问题的原因是因为和服务器通信超时导致的 。所以需要将下面两个参数的默认值进行调整 。hbase.snapshot.region.timeout hbase.snapshot.master.timeoutMillis 这两个值的默认值为60000,单位是毫秒,也即1min 。
逻辑故障中的一种常见情况就是配置错误 , 就是指因为网络设备的配置原因而导致的网络异常或故障 。配置错误可能是路由器端口参数设定有误,或路由器路由配置错误以致于路由循环或找不到远端地址 , 或者是网络掩码设置错误等 。
)对于读端,捕获异常后 , 可以采取休眠一段时间后进行重试等方式 。3)当然,还可以根据实际情况合理调整hbase.client.retries.number和hbase.client.pause配置选项 。
Spark如何写入HBase/Redis/MySQL/Kafka开启调试,可以看到 log 中Spark执行了 3 个 Job ,并已经正确输出了预期的结果 。
通过sparkSQL 将df数据写入到指定的hive表格中 。
通过上述结构设计图可以很清晰的知道用到的组件:MySQL、Canal、Kafka、ZooKeeper、Redis 。
如何用MapReduce程序操作hbaseMapReduce与HBase没有关系:MapReduce:MapReduce是一种编程模型 , 用于大规模数据集的并行运算 。概念"Map"和"Reduce",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性 。
输入分片(input split):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身 。
combiner阶段:combiner阶段是程序员可以选择的,combiner其实也是一种reduce操作,因此我们看见WordCount类里是用reduce进行加载的 。
当然我们可以使用MapReduce向HBase导入数据,但海量的数据集会使得MapReduce Job也变得很繁重 。若处理不当,则可能使得MapReduce的job运行时的吞吐量很小 。
【复杂对象写入hbase,hbase导入重复数据能覆盖吗】关于复杂对象写入hbase和hbase导入重复数据能覆盖吗的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- c语言的函数冒泡排序 c语言 冒泡排序法
- 柳州如何注册跨境电商,怎么注册跨境电商卖家
- 零食html模板免费下载,零食网站模板
- python布林带函数 python布尔值函数
- 足疗店如何营销方案,足疗店如何营销方案范文
- 斗鱼直播pandalive,斗鱼直播是干什么的
- mysql漏洞怎么办 mysql漏洞补丁
- python的os打开的图片怎么关闭,python ossystem 如何关闭程序运行
- 体育游戏独木桥规则图片,好玩的独木桥体育教案