• 欢迎来到魔据教育大数据学院,专注大数据工程师培养!
    当前位置:首页 > 学习资料 > 讲师博文 > Hbase理论

    Hbase理论

    时间:2019-04-12 14:24:03作者:魔据大数据学院

    还记得我们配置hbase的dir路径吗:

    看hbase-site.xml
     
    Hbase理论 
     
    也就是说,我们目前的数据是保存到了家目录的hbasedir这个路径下
     
    那么我们来看一下:
     
    Hbase理论 
     
    这个目录里面存储着数据行健和version数据
     
    那么我们hbase的数据应该是存储到HDFS才对?#21069;桑?#37027;么接下来我们来改一改这个配置文件:
     
    [[email protected] hbase-hive]$ vim hbase-1.2.5/conf/hbase-site.xml
     
    <configuration>
    <!-- 指定hbase数据存储在hdfs的位置-->
            <property>
                    <name>hbase.rootdir</name>
                    <value>hdfs://master:9000/hbase</value>
            </property>
    <!-- 指定hbase是否是分布式的 -->
            <property>
                    <name>hbase.cluster.distributed</name>
                    <value>true</value>
            </property>
    <!-- 指定zooleeper的端口号 -->
            <property>
                    <name>hbase.zookeeper.property.clientPort</name>
                    <value>2181</value>
            </property>
    <!-- 指定zk的地址,多个用“,”分割 ,咱们这是单节点-->
            <property>
                    <name>hbase.zookeeper.quorum</name>
                    <value>master</value>
            </property>
    <!-- zookeeper存储数据的地址,咱们启动的zookeeper是hbase自带的-->
            <property>
                    <name>hbase.zookeeper.property.dataDir</name>
                    <value>/home/hyxy/hbase-hive/hbase-1.2.5/zookeeper</value>
            </property>
     
    </configuration>
     
    Hbase理论 
     
    然后我们再编辑env.sh ,加入:
     
    export HBASE_MANAGES_ZK=true  开启hbase集群
     
    Hbase理论 
     
    保存退出
     
    配置一下环境变量:
     
    Hbase理论 
     
    然后别忘了关闭hbase进程,再启动hadoop然后再来开启hbase
     
    你不能不开启hdfs就直接开启hbase否则会报错
     
    Hbase理论 
     
    这个时候我们jps查看一下:
     
    Hbase理论 
     
    你会发现多了三个进程
     
    HMaster 进程Hbase的主节点,类似hadoop的namenode
    HQuorumPeer 是zookpeer进程,负责协调主从节点的切换
    HRegionServer 进程一般存在从节点上,就是小弟,负责存储数据,类似hadoop的datanode
     
    这个时候你再list,你会发?#32622;?#26377;一张表,因为hdfs上没有数据
     
    Hbase理论 
     
    看一下hdfs:
     
    Hbase理论 
     
    有一个hbasedir 目录,这个就是存放数据的目录
     
    接下来我们创建一张user表,表中有两个列族,一个是info1 一个是info2
     
    create 'user', 'info1', 'info2'
     
    Hbase理论 
     
    那么hbase是有web端的,那么查看hbase的web页面很简单:
     
    在浏览器输入:ip:60010即可
     
    Hbase理论 
     
    我们往下看tables那块
     
    Hbase理论 
     
    很详细的说了有多少张表,和表的信息
     
     
    接下来咱们说一下hbase的理论:
     
    1.物理存储:
     Table 在行的方向上分割为多个HRegion,一个region由[startkey,endkey)表示(包左不包右),每个HRegion分散在不同的RegionServer中
    在分布式存储过程中,存储的最小单位就是region,也就是说,hbase中表的数据是分割成多个region然后再放到hdfs中,我们想,如果将一张表放在一台机器上,那么?#21015;?#30340;时候一直访问这一台机器,机器压力会很大,所以我们要分布式存储,?#21015;?#25805;作多台机器,实?#25351;?#36733;均衡,看下图:
     
     
    Hbase理论 
     
    此图将两张表都分成了多个region,以row key进行分割,存储在Region Servers , 也就是jps进程中的HRegion Server
    Hbase理论 
     
    那么到达了这个HRegion Server 后,并不是直接存储在hdfs?#31995;模?#32780;是先存储在内存中,经过一系列的内部操作后,才会写入到hdfs中,这点要记住
     
    说完了region之后我们再来说一个重点:hbase表中row key 顺序问题:
     
    假设现在有?#27426;?#25968;字,让你排序,你试着排一下:
     
    1 11 21 41
     
    现在加入一个2 和 5  ,?#26149;?#19979;面hbase是怎么排的:
     
    1 11 2 21 41 5
     
    那么现在再加入一个50 和 20 怎么排?
     
    1 11 2 20 21 41 5 50
     
    也就是说,hbase的排序是根据第一位进?#20449;?#24207;,同一位的数据根据下一位的大小再继续拍
     
    现在加入一个200怎么排?
     
    1 11 2 20 200 21 41 5 50
     
    这样做的?#20040;?#26159;每一位数字都在一起,例如这张表的row key是1到100那么就是1-9 之间都是分段排序,只要知道了开头第一位数字就可以去相应的位置查询,方便快捷
     
    那么到这里我们总结一下:
     
    Region是分布式存储的最小单元,并且开始是存储在Hregion Server内存中,最终存储在
    HDFS  存储的格式?#21069;?#29031;row key分割?#27573;?#23384;储的, hbase的排序是非常特殊的字典排序,每一?#27426;加?#19968;个区间?#27573;В?#26041;便查找
     
    那么两者结合一下,看下图:
    Hbase理论 
     
    上图一张表分为了5个region,并且分布式存储在regionServers上,但是一个region也不见得就能保存[0,2)区间?#27573;?#30340;值,有可能1区间的数据非常大,那么这一个region可能1区间的值都存不下,所以还要?#20204;?#32771;虑
     
    这里扩展一下:每个region能够存储的默认大小是128MB~256MB
     
    接下来看下图region的内部结构图,挺复杂的:
     
    Hbase理论 
     
    其中Region包含了 HLog  Store MemStore StoreFile HFile
     
    HLog存储的是对写入数据的存储操作,类似于yarn中的elogs,当机器宕机时可以通过HLog进行?#25351;?/span>
     
    Store:HRegin 虽然是负载均衡的最小单元,但并不是物理存储的最小单元,事实上,HRegion由一个或者多个Store组成,每个store保存一个column family 列族,每个store又由一个memStore和0至多个StoreFile组成
     
    一个 region 由多个 store 组成,每个 store 包含一个列族的所有数据 Store 包括位于内存
     
    的 memstore 和位于?#25165;?#30340; storefile
     
    写操作先写入 memstore,当 memstore 中的数据?#30475;?#21040;某个阈值, HRegionServer 启动
     
    flushcache 进程写入 storefile, ?#30475;?#20889;入形成单独一个 Hfile
     
    当 storefile 大小超过?#27426;?#38408;值后,会?#35757;?#21069;的 storefile 分割成两个
     
     
     
    写流程
    1、 client向Zookeeper发送写请求,zookeeper和Hmaster?#25442;ィ?#21453;馈可以写入
    2、 Client向hregionserver 发送数据写入
    3、 hregionserver将数据写到hlog(write ahead log)。为了数据的持?#27809;?#21644;?#25351;础?/span>
    4、 hregionserver将数据写到内存(memstore)
    5、 反馈client写成功。
     
    数据flush过程
    1、 当memstore数据达到阈值(默认是128M),将数据刷到?#25165;蹋?#23558;内存中的数据?#22659;?#21516;时?#22659;鼿log中的历史数据。
    2、 并将数据存储到hdfs中。
    3、 在hlog中做标记点。
     
    hbase的读流程
    1、 通过zookeeper和HMETA.表定位hregionserver。
    2、 数据从内存和?#25165;?#21512;并后返回给client
    3、 数据块会缓存
    hmaster的职责
    1、管理用户对Table的增、删、改、查操作;
    2、记录region在哪台Hregion server上
    3、在Region Split后,负责新Region的分配;
    4、新机器加入时,管理HRegion Server的负载均衡,调整Region分布
    5、在HRegion Server宕机后,负责失效HRegion Server ?#31995;腞egions迁移。
     
    hregionserver的职责
    HRegion Server主要负责响应用户I/O请求,向HDFS文件系统中?#21015;?#25968;据,是HBASE中最核心的模块。
    HRegion Server管理了很多table的分区,也就是region。
     
    client职责
    Client
    HBASE Client使用HBASE的RPC机制与HMaster和RegionServer进行通信
    管理类操作:Client与HMaster进行RPC;
    数据?#21015;?#31867;操作:Client与HRegionServer进行RPC。
     
    好好理解一下,掌握了以上理论,我觉得你的hbase就学的差?#27426;?#20102;;
     
    接下来带大家看一下hdfs上我们存储的表信息:
     
    如果想要知道数据存储在哪,首先要看hbase-site.xml文件:
     
    Hbase理论 
     
    找一下:/hbase/data/default 路径下
     
    表信息:
    Hbase理论 

    更多大数据相关资讯敬请关注魔据教育,为您分享最及时的大数据资讯。
    学习大数据敬请关注魔据教育微信二维码。
    魔据教育微信二维码

    【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发?#22987;?#33267;[email protected],我们将及时沟通与处理。本站内容除非来源注明魔据教育,否则均为网友转载,涉?#25226;?#35770;、版权与本站无关。

    全国咨询热线:18501996998,值班手机:18501996998(7*24小时)

    在线咨询:张老师QQ 320169340

    企业合作服务专线:010-82340234-821, 院校合作洽谈专线:010-82340234

    Copyright 2001-2019 魔据教育 - 北京华育兴业科技有限公司 版权所?#26657;?#20140;ICP备17018991号-2

    安徽十一选五开奖号码