搭建HBase伪分布环境之十三


一、什么是 HBase?以及常见的 NoSQL 数据库


    1、什么是 NoSQL 数据库?
        
        基于 Key—Value 保存数据跟关系型数据库最大的区别:NoSQL 不支持事务(transaction)

    2、常见的 NoSQL 数据库
        
        (*)HBase:基于 HDFS 之上的 NoSQL 数据库,面向列的 NoSQL 数据库
        
             HBase           HDFS

            表    -----> 目录

            数据    -----> 文件

        (*)Redis:基于内存的 NoSQL,支持持久化(把内存的数据写成文件:RDB 和 AOF)

        (*)MongoDB:文档(Bson 文档)型的 NoSQL 数据库 Bson 是 Json 的二进制
            
            举例:设计表保存电影的信息
            
        (*)Cassandra:类似 HBase,面向列的 NoSQL 数据库

            Oracle 和 MySQL 是行式数据库----->  适合:insert update delete    --->OLTP 应用

            列式数据库:-----> 适合:select    -----> OLAP 应用

二、HBase 的体系结构和表结构(重要)
    
    1、表结构: create ******

    2、HBase 的体系结构

    3、HBase 中没有数据类型,都是二进制

三、安装和配置 HBase 三种模式

    1、本地模式

        (*)不需要 HDFS,将数据保存到操作系统

        (*)步骤:

            (1)解压: tar -zxvf hbase-0.96.2-hadoop2-bin.tar.gz -C ~/training/

            (2)设置环境变量: vi ~/.bash_profile

                HBASE_HOME=/root/training/hbase-0.96.2-hadoop2 export HBASE_HOME

                PATH=$HBASE_HOME/bin:$PATH export PATH

            (3)hbase-env.sh

                export JAVA_HOME=/root/training/jdk1.7.0_75


            (4)hbase-site.xml

                配置本地(操作系统)保存数据的路径

                <property>

                    <name>hbase.rootdir</name>
                        
                    <value>file:///root/training/hbase-0.96.2-hadoop2/data</value>

                </property>

            (5) 启动 HBase start-hbase.sh

                命令行工具: hbase shell



    2、伪分布模式:在单机上模拟分布式的环境

        (1)hbase-env.sh:增加:

            export JAVA_HOME=/root/training/jdk1.7.0_75

            export HBASE_MANAGES_ZK=true

        (2) hbase-site.xml <!--HBase 在 HDFS 上对应保存目录-->
                
            <property>

                <name>hbase.rootdir</name>

                <value>hdfs://192.168.88.111:9000/hbase</value>

            </property>

        <!--指定 HBase 是分布式环境-->
            
            <property>

                <name>hbase.cluster.distributed</name>

                <value>true</value>

            </property>

        <!--ZK 的地址-->
    
            <property>

                <name>hbase.zookeeper.quorum</name>

                <value>192.168.88.111</value>

            </property>

        <!--冗余度-->

             <property>

                <name>dfs.replication</name>

                <value>1</value>

            </property>

        (3) regionservers

            192.168.88.111



        3、全分布模式

四、操作 HBase

    1、命令行
        
        (1)创建表:create 'student','info','grade'

        (2)插入数据:

            put 'student','stu001','info:name','Tom'
        
            put 'student','stu001','info:age','23'

            put 'student','stu001','info:gender','M'

            put 'student','stu001','grade:Chinese','80'

            put 'student','stu002','info:name','Mike'

        (3)查询数据: scan: select *

                scan 'student'



            get: select *** from *** where id=???
            
            根据 rowkey 查询 get 'student','stu001'

        (4) count 'student'

        (5)清空表:truncate 'student' ----> Oracle 数据库: truncate table *** --->本质:先摧毁表,再重建日志:

            Truncating 'student' table (it may take a while):

            -Disabling table...

            -Dropping table...

            -Creating table...

            0 row(s) in 1.8380 seconds

        (6)删除表:
            
            disable 'student'  
    
            drop 'student'

            ERROR: Table student is enabled. Disable it first.'




    2、Java API   $HBASE_HOME/lib



    3、Web Console:http://192.168.88.111:60010/

五、数据保存的过程

    


六、特殊表

1、名字:-ROOT- .META.

2、维护 Region 的元信息




七、过滤器

    

    (1)列值过滤器: SingleColumnValueFilter

    
        查询工资等于 3000 的员工 select ename from emp where sal=3000;

    (2)列名前缀过滤器 ColumnPrefixFilter:
        
        根据列名查询数据查询员工的姓名: select ename from emp;

    (3)多个列名前缀过滤器:MultipleColumnPrefixFiltera查询员工的姓名和薪水:

        select ename,sal from emp;

        

    (4)rowkey 过滤器
    


    (5)组合:多个过滤器

    

八、HBase 上 MapReduce


1、创建表保存要分析的数据参考讲义:P67

    create 'word','content'

    put 'word','1','content:info','I love Beijing' put 'word','2','content:info','I love China'
    put 'word','3','content:info','Beijing is the capital of China'

    创建表保存结果:create 'wordcount','content'

2、问题?

    public class WordCountMapper extends TableMapper<KEYOUT2,VALUEOUT2> {

        Mapper 的 key1 和 value1 哪里去了?


    public class WordCountReducer extends TableReducer<KEYIN3, VALUEIN3, KEYOUT> {

        Reducer 的 k4 和 v4 哪里去了?

        KEYOUT 是什么?----->  就是 HBase 表中的一条记录



九、HBase 的 HA


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值