大数据开发 -- 学习笔记 --Hbase

Hbase
    概述
        基于HDFS的面向列存储的非关系型数据库,可满足大数据存储以及快速查询更新需求。
       数据持久化存储的体现形式是Hfile,存放于DataNode中,被ResionServer以region的形式进行管理。
   构成
        架构
            数据按照列族存储在一起,一个列族数据存储在一个Store中。(存储形式 = 内存 + 硬盘)
            多个Store构成HRegion存储表格部分数据。 HRegion = n * Store
            Store = Mem Store(内存) + Store File(硬盘) + HFile(实际存储格式)
            写数据时,先写到内存MemStore中,超过阈值以后,将数据刷到硬盘行成StoreFile.
            StoreFile底层以Hfile的形式进行保存。

            HregionServer:管理Hregions,处理客户端读写请求,与HDFS进行交互(接受请求数据读取)
            使用Hlog文件保证稳定性:写文件到MemStore时,备份到Hlog,机器宕机时,保证数据的磁盘刷新。

            主要流程: 
            Client客户端请求Zookeeper获取HregionServer地址。根据地址发送读写请求,获得返回值。

            优化管理
                数据分布 -- Rowkey 行键
                RowKey按照字典序排列,Hbase根据有序的RowKey进行表的横向切分。
                读写时根据RowKey以及HRegion的start-key、end-key属性进行定位。
                该原则会出现热点数据问题,不同Region数据量分布差异大。需要对Rowkey做优化处理。
                1. 指定RowKey分割点
                2. 集群来均衡预分区,,设定始末的RowKey,以及根据数据量给定大致的region数
                生成RowKey时,尽量进行加盐或者哈希的处理,这样很大程度上可以缓解数据热点问题.

                HMaster -- HregionServer管理
                处理元数据变更以及RegionServer状态监控。
                HRegion的数据量过大时,HMaster会对拆分后的Regin重新分配HregionServer

        存储理论
            列式存储:
                一条行数据转换成若干条列数据以key-value形式进行存储,null数据不占用存储资源。
                key = 主键, value = 列族(UserInfo) + 列标识符(name) + 列值 + 时间戳。
                列族 -- 列的属性类别, 列族下可以任意添加列不受限制。
                时间戳 -- 数据写到HBase的时候都会被记录一个时间戳,更新数据的本质是新增一条带有最新时间戳的数据,读数据的时候按照时间戳读最新记录。


    面试问题
        Hbase主要特点

1.低成本 -- redis数据读写在内存,成本高昂
2.海量数据存储 -- 基于hdfs分布式文件系统
3.高并发随机写和实时查询 -- 对hdfs的功能补充 [主键有序存储好定位]

PS : 
Hbase与HDFS
Hbase基于HDFS,作为分布式文件系统,HDFS可存储海量数据,
Hbase在其基础之上提供了高并发的随机写和支持实时查询功能。

        类似组件有哪些,和Hbase对比情况

Mysql -- 单机, 存储数据量取决于服务器硬盘大小(数据量受限)

分布式消息队列Kafka -- 消息处理(解耦异步削峰) 数据到Kafka,Kafka会将数据持久化到硬盘中,并且Kafka是分布式的(很方便的扩展),
理论上Kafka可以存储很大的数据。但是Kafka的数据我们不会「单独」取出来。
持久化了的数据,最常见的用法就是重新设置offset,做「回溯」操作

缓存数据库 Redis -- 缓存数据库,所有的读写都在内存中,速度贼快。
AOF/RDB存储的数据都会加载到内存中,Redis不适合存大量的数据(因为内存太贵了!)

分布式搜索引擎 ES -- 分布式的搜索引擎,分布式特点可存储大量数据,
但如果数据没有经常「检索」的需求,其实不必放到Elasticsearch,数据写入Elasticsearch需要分词,无疑会浪费资源。

分布式文件系统HDFS -- 可存海量数据,但是不支持随机修改,查询效率低,对小文件支持不友好


    数据来源:https://zhuanlan.zhihu.com/p/145551967
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
目录 第一部分 Spark学习 ....................................................................................................................... 6 第1章 Spark介绍 ................................................................................................................... 7 1.1 Spark简介与发展 ...................................................................................................... 7 1.2 Spark特点 .................................................................................................................. 7 1.3 Spark与Hadoop集成 ................................................................................................ 7 1.4 Spark组件 .................................................................................................................. 8 第2章 Spark弹性分布数据集 ............................................................................................... 9 2.1 弹性分布式数据集 .................................................................................................... 9 2.2 MapReduce数据分享效率低..................................................................................... 9 2.3 MapReduce进行迭代操作 ........................................................................................ 9 2.4 MapReduce进行交互操作 ...................................................................................... 10 2.5 Spark RDD数据分享 ............................................................................................... 10 2.6 Spark RDD 迭代操作 .............................................................................................. 10 2.7 Spark RDD交互操作 ............................................................................................... 10 第3章 Spark安装 ................................................................................................................. 11 第4章 Spark CORE编程 ....................................................................................................... 13 4.1 Spark Shell ........................................................

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值