一、HBase概述

1、简介
    1.11.介绍
        是分布式 面向列族 的数据库,构建在hadoop之上.
        类似于google的big table,对海量结构化数据的快速随机访问。
        是hadoop生态系统的一部分,提供随机实时读写。
    
    1.2.hbase和hadoop的区别
            hdfs                                hbase
        1)    分布式文件系统,存储大量数据        数据库,构建在hadoop的hdfs之上
        2)    不支持快速单个记录的查找            支持大表的快速查找
        3) 提供高延迟批处理                    提供单行记录低延迟随机访问(10亿级别)
        4) 只提供数据按序访问                    内部使用hash表提供的随机访问。在hdfs上存放索引文件,用于快速查找。
       
2、Hbase存储机制
    2.1.面向列族的数据库。基于HDFS。随机访问,实时读写。
    
    2.2.table中只定义了列族,表按照row存储。
    
    2.3.术语
        table            :表,是row的集合
        row:            :行,是column family的集合
        column family:    :列族,是column的集合
        column            :列,是kv对的集合
    
    2.4.面向行和面向列的区别:    
            面向行                面向列            
        1)    适合于OLTP            适合于OLAP
        2)    针对行列较少的        大表
    
    2.5.hbase和RDBMS区别        
            hbase                                RDBMS
        1)  是无模式的,没有列的定义,            有模式,描述整个table结构
            只定义列族,列是key
        2)  适合于宽表,水平可伸缩                适合于小表,难于扩展
        3)  没有事务支持                        事务性的
        4)  不是规范化的                        规范化的
        5)  结构化和半结构化                    结构化的
               
3、Hbase架构
    3.1.master-server 主从结构
    
    3.2.table从竖直方向进行切割,分成若干个区域,由每个region server进行处理。
    
    3.3.master server(MS)
        a.负责指派region给RS,通过ZK获得task的帮助
        b.处理跨RS的region的负载均衡问题
        c.从繁忙服务到空闲服务器之间的数据转载
        d.通过裁定负载均衡判断集群的状态。
    
    3.4.region
        被切割的块,跨RS
        
    3.5.region server(RS)
        和client通信
        处理数据操作
        处理他下面的所有region的读写请求
        通过阈值决定region的大小。
    
二、HBase安装

1.下载 hbase-1.2.6-bin.tar.gz
    
2.解压到 /opt 目录下
    
3.配置环境变量
    
4.配置HBase的本地模式
    

[hbase/conf/hbase-site.xml]
        <configuration>
            <property>
                <name>hbase.rootdir</name>
                <value>file:///home/cyx/hbase/root</value>
            </property>
            <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/home/cyx/hbase/zk</value>
            </property>
        </configuration>



5.启动
        start-hbase.sh

三、HBase部署,三种方式
---------------------------------------------
    配置文件路径:[hbase/conf/hbase-site.xml]
    
    1.本地模式,local
        hbase.rootdir=file:///
        所有hbase进程和zk运行在同一个JVM中
    
    2.伪分布式,psesudo,相当于完全分布式,但是只有一个节点
        hbase.rootdir=hdfs:///h1:8020/hbase
        dfs.replication=1
        
    3.完全分布式
        3.1.配置
         

[hbase/conf/hbase-site.xml]
            # hbase 配置
            hbase.rootdir=hdfs:///h1:8020/hbase
            dfs.replication=3
            hbase.cluster.distributed=true        
            
            # zk 配置
                <property>
                    <name>hbase.tmp.dir</name>
                    <value>/home/cyx/hbase</value>
                </property>
                
                <property>
                    <name>hbase.zookeeper.property.clientPort</name>
                    <value>2181</value>
                </property>

                <property>
                    <name>hbase.zookeeper.quorum</name>
                    <value>h3,h4,h5</value>
                </property>

                <property>
                    <name>hbase.zookeeper.property.dataDir</name>
                    <value>${hbase.tmp.dir}/zk</value>
                </property>
                      
            
            [conf/regionservers]
            h3
            h4
            h5



        3.2.分发配置、环境变量配置
      

[hbase安装配置目录]
            $> rm -rf /opt/hbase/docs            //无用的文件html,比较大
            $> xsync hbase
            $> xsync hbase-1.2.6
            
            $> source /etc/profile


            
        3.3.重启客户机
        
        
        3.4.启动hbase集群,一定要在master主机启动 h1
      

$> start-hbase.sh


            
        3.5.查看进程
        

$> xcall jps
            .....省略 Hadoop
            HMaster                    // master
            HRegionServer            // regionserver
            HQuorumpeer                // zk

            
        3.6.查看WebUI
  

http://h1:16010            // master 
            http://h3:16030            // regionserver