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

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

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

集群规划

    主机名      IP               安装的软件                    运行的进程
    it01    192.168.1.201    jdk、hadoop                   NameNode、DFSZKFailoverController
    it02    192.168.1.202    jdk、hadoop                   NameNode、DFSZKFailoverController
    it03    192.168.1.203    jdk、hadoop                   ResourceManager
    it04    192.168.1.204    jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain
    it05    192.168.1.205    jdk、hadoop、zookeeper        DataNode、NodeManager、JournalNode、QuorumPeerMain
    it06    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
    <configuration>
        <!-- 指定hbase在hdfs上存储的路径 -->
        <property>
            <name>hbase.rootdir</name>
            <value>hdfs://ns1/hbase</value>
        </property>
        <!-- 指定hbase是分布式的 -->
        <property>
            <name>hbase.cluster.distributed</name>
            <value>true</value>
        </property>
        <!-- 指定zk的地址,多个用“,”分割 -->
        <property>
            <name>hbase.zookeeper.quorum</name>
            <value>it04:2181,it05:2181,it06:2181</value>
        </property>
    </configuration>

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

测试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 为每个值维护了多级索引,即:<key, column family, column name, timestamp>

物理存储:
    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的元数据信息,负载很低

文章最后,给大家推荐一些受欢迎的技术博客链接

  1. Hadoop相关技术博客链接
  2. Spark 核心技术链接
  3. JAVA相关的深度技术博客链接
  4. 超全干货--Flink思维导图,花了3周左右编写、校对
  5. 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
  6. 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
  7. 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂

 


欢迎扫描下方的二维码或 搜索 公众号“10点进修”,我们会有更多、且及时的资料推送给您,欢迎多多交流!

                                           

       

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不埋雷的探长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值