个人超全hbase集群搭建过程!!!

个人超全hbase集群搭建过程!!!

Hbase集群是建立在hadoop集群之上,需要先搭建好hadoop集群,再搭建hbase集群。

集群规划

    主机名      IP               安装的软件                    运行的进程
    itcast01    192.168.1.201    jdk、hadoop                   NameNode、DFSZKFailoverController
    itcast02    192.168.1.202    jdk、hadoop                   NameNode、DFSZKFailoverController
    itcast03    192.168.1.203    jdk、hadoop                   ResourceManager
    itcast04    192.168.1.204    jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain
    itcast05    192.168.1.205    jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain
    itcast06    192.168.1.206    jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain

hadoop集群搭建链接(hbase是工作在hadoop之上,所以必须先搭建好hadoop集群)

集群版本说明

    zookeeper:
        zookeeper-3.4.6.tar.gz
    hadoop:
        hadoop-2.2.0.tar.gz
    hbase:
        hbase-0.96.2-hadoop2-bin.tar.gz

搭建hbase集群过程

1.配置vim hbase-env.sh
    export JAVA_HOME=/usr/java/jdk1.7.0_60
    export HBASE_MANAGES_ZK=false

2.配置vim hbase-site.xml
    
        
        
            hbase.rootdir
            hdfs://ns1/hbase
        
        
        
            hbase.cluster.distributed
            true
        
        
        
            hbase.zookeeper.quorum
            itcast04:2181,itcast05:2181,itcast06:2181
        
    

3.配置vim regionservers
    itcast03
    itcast04
    itcast05
    itcast06
    
4.将hadoop的datanode、namenode映射关系拷贝到/hbase-0.96.2-hadoop2/conf/
    cp core-site.xml hdfs-site.xml /itcast/hbase-0.96.2-hadoop2/conf/
    
5.配置vim backup-masters 
    itcast02
    
6.将配置好的hbase拷贝到02、03、04、05、06机器上(拷贝前将docs数据删除)
    scp -r /itcast/hbase-0.96.2-hadoop2/ itcast02:/itcast/
    scp -r /itcast/hbase-0.96.2-hadoop2/ itcast03:/itcast/
    scp -r /itcast/hbase-0.96.2-hadoop2/ itcast04:/itcast/
    scp -r /itcast/hbase-0.96.2-hadoop2/ itcast05:/itcast/
    scp -r /itcast/hbase-0.96.2-hadoop2/ itcast06:/itcast/

测试hbase集群

1.启动hbase
    ./start-hbase.sh
    
2.打开浏览器查看hbase
    http://192.168.8.201:60010
3.我们也可以将02机器上的master启动起来,作为备用的master,其中一个挂掉,另一个也可以启动起来(如果01机器挂掉,我们可以在02机器上查看http://192.168.8.202:60010/master-status )
    ./hbase-daemon.sh start master

创建hbase数据(常规操作)

1.启动hbase shell
    ./hbase shell

2.创建表,这一个表是建立在分布式机器上的
    create 'people',{NAME=>'info',VERSIONS=>3},{NAME=>'data',VERSIONS=>1}

3.查看表
    list

4.描述表
    describe 'people'

5.查看数据
    scan 'people'
    
6.追加数据
    put 'people', 'rk001','info:gender','female'
    put 'people', 'rk001','info:size',24
    put 'people', 'rk001','info:size',25
    put 'people', 'rk001','info:size',26
    put 'people', 'rk001','info:size',27

7.查询以前版本数据
    scan 'people',{COLUMNS=>'info',VERSIONS=>3}
    --------------------------
    ROW                   COLUMN+CELL                                               
     rk001                column=info:gender, timestamp=1498658679302, value=female
     rk001                column=info:name, timestamp=1498658588992, value=cls      
     rk001                column=info:size, timestamp=1498658928193, value=27       
     rk001                column=info:size, timestamp=1498658918718, value=26       
     rk001                column=info:size, timestamp=1498658825136, value=25       
    1 row(s) in 0.0160 seconds

    --------------------------
    put 'people', 'rk001','data:nation','JAPAN'
    put 'people', 'rk001','data:nation','CHINA'
    
    hbase(main):025:0> scan 'people',{COLUMNS=>['info','data'],VERSIONS=>3}
    ROW                   COLUMN+CELL                                               
     rk001                column=data:nation, timestamp=1498659306398, value=CHINA  
     rk001                column=info:gender, timestamp=1498658679302, value=female
     rk001                column=info:name, timestamp=1498658588992, value=cls      
     rk001                column=info:size, timestamp=1498658928193, value=27       
     rk001                column=info:size, timestamp=1498658918718, value=26       
     rk001                column=info:size, timestamp=1498658825136, value=25       
    1 row(s) in 0.0090 seconds
    
8.追加不同RowID记录
    put 'people','rk002','info:high',800
    --------------------------
    hbase(main):027:0> scan 'people'
    ROW                   COLUMN+CELL                                               
     rk001                column=data:nation, timestamp=1498659306398, value=CHINA  
     rk001                column=info:gender, timestamp=1498658679302, value=female
     rk001                column=info:name, timestamp=1498658588992, value=cls      
     rk001                column=info:size, timestamp=1498658928193, value=27       
     rk002                column=info:high, timestamp=1498659421253, value=800      
    2 row(s) in 0.0150 seconds

hbase表结构图

-----------------------------------------------------------------------------
          |                                            |                    |
rowkey    |                info (列族)                 |    data (列族)     |
(行键)    |                                            |                    |
          |------------------------------------------------------------------
          |    name(列)  |    size(列)|    high(列)   |    nation(列)      |
-----------------------------------------------------------------------------
          |    cls       |    26       |               |    china           |
rk001     |              |    27       |               |                    |
          |              |    28       |               |                    |
-----------------------------------------------------------------------------
          |              |             |    800        |                    |
rk002     |              |             |               |                    |
          |              |             |               |                    |
-----------------------------------------------------------------------------

hbase介绍说明

HBase是一个构建在HDFS上的分布式列存储系统;
HBase是基于Google BigTable模型开发的,典型的key/value系统;
HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储;
从逻辑上讲,HBase将数据按照表、行和列进行存储。
与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
Hbase表的特点
大:一个表可以有数十亿行,上百万列;
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;
面向列:面向列(族)的存储和权限控制,列(族)独立检索;
稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;
数据类型单一:Hbase中的数据都是字符串,没有类型。
-----------------------------
1.hbase基本概念
    RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。
    Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
    Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加
    Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
    Value(Cell):Byte array
2.Hbase物理模型
    每个column family存储在HDFS上的一个单独文件中,空值不会被保存。
    Key 和 Version number在每个 column family中均有一份;
    HBase 为每个值维护了多级索引,即:

物理存储:
    1、Table中所有行都按照row key的字典序排列;
    2、Table在行的方向上分割为多个Region;
    3、Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,
    当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region;
    4、Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同HRegionServer(机器)上;
        但同一个Region是不会拆分到多个HRegionServer(机器)上
    5、Region虽然是分布式存储的最小单元,但并不是存储的最小单元。
        Region由一个或者多个Store组成,每个store保存一个columns family(列族);
        每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;
        memStore存储在内存中,StoreFile存储在HDFS上。

分布式Hbase协调工作说明

zookeeper
1.保证任何时候,集群中只有一个master
2.存贮所有Region的寻址入口
3.实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
4.存储Hbase的schema,包括有哪些table,每个table有哪些column family

master
1.为Region server分配region
2.负责region server的负载均衡
3.发现失效的region server并重新分配其上的region
4.GFS上的垃圾回收
5.处理schema更新请求

Region server
1.Region server 维护Master分配给它的region,处理对这些region的IO请求
2.Region server 负责切分在运行过程中变得过大的region

可以看到,client访问hbase上数据的过程并不需要master参与
(寻址访问zookeeper和region server,数据读写访问region server),
master仅仅维护着table和region的元数据信息,负载很低





你可能感兴趣的:(hbase)