HBase讲解及部署

HBase讲解及部署

HBase 是一个 NoSQL 数据库

什么是 NoSQL 数据库?
            基于 Key-value  来保存数据
            NoSQL 数据库不支持事物
        
常见的 NoSQL 数据库:
    HBase:  基于 HDFS ,面向列的数据库
                表     ---->  目录
                数据 ---->  文件
                
        Redis:  基于内存的一个 NoSQL 数据库, 支持持久化(RDB,AOF)
            前身: MemCached    不支持持久化
                
        MongoDB: 文档型的 NoSQL 数据库(BSON文档,JSON的二进制)
        
        Cassandra:  面向列的 NoSQL 数据库

HBase 的表结构

article(表)

rowkey
内容
作者
评论
标题
正文

用户
内容
文章1
先有鸡还是先有蛋
……
某人
喷手
鸡都不造你是肿么造的
文章……
……
…… …… …… ……


体系结构

HBase讲解及部署

HBase讲解及部署


HBase 环境部署:

            本地模式   ---1台主机: 不需要 HDFS ,直接把数据存在操作系统上

                      1. 安装 JAVA 环境,修改环境变量

                      2. 安装 HBase

            伪分布模式---1台主机: 需要HDFS 支持,数据直接存在 HDFS 上

                      1. 安装 JAVA 环境,修改环境变量

                      2. 部署 HDFS 伪分布式

                      3. 部署 HBase 伪分布式

            全分布模式---3台主机: 需要HDFS 支持,数据直接存在 HDFS 上

                      1. 安装 JAVA 环境,修改环境变量

                      2. 部署 HDFS 全分布式

                      3. 部署 HBase 全分布式

            HA 全分布模式---3台主机


        环境部署前期准备:

            设置环境变量  vi ~/.bash_profile
                HBASE_HOME=/root/training/hbase-1.3.1
                export HBASE_HOME

                PATH=$HBASE_HOME/bin:$PATH
                export PATH

        本地模式:
        hbase-env.sh
                28 export JAVA_HOME=/root/training/jdk1.8.0_144
                
        hbase-site.xml
                <property>
                   <name>hbase.rootdir</name>
                   <value>file:///root/training/hbase-1.3.1/data</value>
                </property>

         启动 HBase:  start-hbase.sh


伪分布模式
        hbase-env.sh
                129 export HBASE_MANAGES_ZK=true
                
        hbase-site.xml
                <property>
                   <name>hbase.rootdir</name>
                   <value>hdfs://192.168.157.11:9000/hbase</value>
                </property>

                <property>
                   <name>hbase.cluster.distributed</name>
                   <value>true</value>
                </property>

                <property>
                   <name>hbase.zookeeper.quorum</name>
                   <value>192.168.157.11</value>
                </property>

                <property>
                   <name>dfs.replication</name>
                   <value>1</value>
                </property>            

        regionservers
                192.168.157.11

          启动 HBase:  start-hbase.sh       

全分布模式
        hbase-site.xml
            <property>
               <name>hbase.rootdir</name>
               <value>hdfs://192.168.157.12:9000/hbase</value>
            </property>

            <property>
               <name>hbase.cluster.distributed</name>
               <value>true</value>
            </property>

            <property>
               <name>hbase.zookeeper.quorum</name>
               <value>192.168.157.12</value>
            </property>

            <property>
               <name>dfs.replication</name>
               <value>2</value>
            </property>            

            <property>
               <name>hbase.master.maxclockskew</name>
               <value>180000</value>
            </property>                    
                
        regionservers
                192.168.157.13
                192.168.157.14
                
        scp -r hbase-1.3.1/ root@bigdata13:/root/training
        scp -r hbase-1.3.1/ root@bigdata14:/root/training

         启动 HBase:  start-hbase.sh

HBase的HA
        不需要额外配置,只用在其中一个从节点上单点启动Hmaster

         启动 HBase:  start-hbase.sh

        bigdata13:hbase-daemon.sh start master


HBase Web Console网页端口:16010


HBase 命令行操作:

         进入命令行:hbase  shell

            查看:

                    查看表:list

                    查询数据:

                             scan   相当于  select   *  from   表名

                            get    相当于  select  *   from  表名  where  rowkey=?

                   插入数据:

                            put   '表', ' 行',  '列族:列名',   '值'

                            put   'students',  'stu1',  'info:name', 'Tom'

                  清空表中的数据:

                            truncate  '表名'   ---------> 其实质就是先删除表,然后再创建

                            truncate   'students'

                  删除表:

                            disable  '表名'

                            drop   '表名'