zoukankan      html  css  js  c++  java
  • Hbase

    1:Hdfs分布式文件系统存的文件,文件存储。
    2:Hbase是存储的数据,海量数据存储,作用是缓存的数据,将缓存的数据满后写入到Hdfs中。
    3:hbase集群中的角色:
      (1)、一个或者多个主节点,Hmaster;
      (2)、多个从节点,HregionServer;
    4、hbase集群的配置是一主多从或者多主多从(一定注意区分和hive之间的关系,切记),一主多从可以动态添加主节点,配置成多主多从。

    5台机器IP:192.168.70.101(c7001)、192.168.70.102(c7002)、192.168.70.103(c7003)、192.168.70.104(c7004)、192.168.70.105(c7005)
    1.解压缩hbase的软件包,使用命令:
    tar -zxvf hbase-1.3.0-bin.tar.gz  
    2.进入hbase的配置目录,在hbase-env.sh文件里面加入java环境变量.即:
    JAVA_HOME=export JAVA_HOME=/opt/jdk1.8.0_121
    关闭HBase自带的Zookeeper,使用Zookeeper集群:
    export  HBASE_MANAGES_ZK=false  

    3. 编辑hbase-site.xml ,添加配置文件:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
      <property>
        <name>hbase.rootdir</name>
        <value>hdfs://c7001:8020/hbase</value>
      </property>
      <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
      </property>
      <property>
        <name>hbase.zookeeper.quorum</name>
        <value>c7003,c7004,c7005</value>
      </property>
      <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/hbase-1.3.0/tmp/zk/data</value>
      </property>
    </configuration>

    4. 编辑配置目录下面的文件regionservers. 命令:
    vi   regionservers    
    加入如下内容:
    c7004
    c7005
    5. 把Hbase复制到其他机器,命令如下:
    [vagrant@c7003 opt]$ scp -r hbase-1.3.0 vagrant@c7004:/opt/
    [vagrant@c7003 opt]$ scp -r hbase-1.3.0 vagrant@c7005:/opt/
    6. 在c7003机器开启hbase服务。命令如下:
    [vagrant@c7003 hbase-1.3.0]$ bin/start-hbase.sh   

    启动所有的hbase
        1:分别启动zk
            ./zkServer.sh start
        2:启动hbase集群
            start-dfs.sh
        3:启动hbase,在主节点上运行:
            start-hbase.sh
    通过浏览器访问hbase管理页面        c7001:60010

    HBase的一些基本命令
    1、#创建HBase数据表,如果不给定namespace的名称,默认创建在default命名空间中。
    hbase(main):032:0> create 'myTables',{NAME => 'base_info',VERSIONS => 3},{NAME => 'extra_info'}

    hbase(main):016:0> create 'user','info01','info02'
    #创建带有命名空间的hbase数据表,20180408是命名空间,user是表名称,col1是列簇。
    hbase(main):033:0> create '20180408:user','col1'
    hbase(main):034:0> list

    2、#查看有什么表,显示hbase表名称,类似mysql中的show tables;可以通过指定命名空间来查看对应命名空间中的表,默认是显示所有用户表,也支持模糊查询。类似命名list_namespace_table查看对命名空间内有那些表。
    hbase(main):032:0> list

    3、#查看表结构
    describe 'myTables'
    hbase(main):016:0> describe '20180408:user'

    4、#禁用表
    disable 'myTables'

    5、#删除表,删除之前要先禁用表。删除用户表之前需要将表设置为disable,然后删除。其实在hbase中如果需要对已有表进行ddl操作,均需要将其disable,在ddl操作完成后,再进行enable操作即可。
    drop 'myTables'
    hbase(main):040:0> disable '20180408:test'
    hbase(main):041:0> drop '20180408:test'
    hbase(main):042:0> list
    5.1 #delete命令是删除指定table的指定rowkey的指定列,也就是说delete命令适合删除列的情况。如果需要删除当然rowkey的所有列数据,那么可以使用deleteall命令。
    hbase(main):010:0> delete '20180408:user','row1','col1:sex'
    hbase(main):012:0> deleteall '20180408:user','row1'
    5.2 #清空数据表,truncate命令的作用是清空数据库,当我们数据库中的数据比较多的时候,我们可以选择该命令将数据库清空。底层原理是禁用表,删除表,创建表。
    hbase(main):015:0> truncate '20180408:user'

    6、#插入数据,插入一个表的一行的一列的一个值,最后一个字段不带。hbase的put命令是进行数据添加的命令。
    #不带分号
    #put '表名称','行','base_info/extra_info:列名称','列值'
    put 'myTables','0001','base_info:name','张三'
    put 'myTables','0001','base_info:age','22'
    put 'myTables','0001','base_info:sex','男'
    put 'myTables','0001','extra_info:addr','河南省'
    #带有命名空间的hbase数据表插入操作:
    hbase(main):001:0> put '20180408:user','row1','col1:name','zhangsan'
    hbase(main):004:0> put '20180408:user','row1','col1:sex','nan'
    hbase(main):005:0> put '20180408:user','row1','col1:age','20'

    7、#查询数据,查询某一行。get命名的作用是获取对应表中对应rowkey的数据。默认获取最新版本的全部列数据,可以通过时间戳指定版本信息,也可以指定获取的列。
    get 'myTables','0001'
    #row1是自己创建的行,注意,col1是列簇,都是自己创建的。
    hbase(main):008:0> get '20180408:user','row1'
    #查看指定行的指定列信息。
    hbase(main):009:0> get '20180408:user','row1','col1:name'

    get 'myTables','0001',{COLUMN => 'base_info:name',VERSION => 10}

    #scan命令是hbase的另一种检索方式,是通过范围查找hbase中的数据。默认情况下是获取table的全部数据,可以通过指定column和filter等相关信息进行数据的过滤。
    scan 'myTables'
    #可以查看插入的数据信息
    hbase(main):006:0> scan '20180408:user'

    #scan提供多种filter命令,常用的filter命令如下所示:ColumnPrefixFilter过滤列名是某前缀的,MultipleColumnValueExcludeFilter过滤多列的前缀只要满足其中一个的前缀,RowFilter满足那种类型的过滤,SingleColumnValueFilter某列的value值过滤,SingleColumnValueExcludeFilter过滤某列不符合给定的value值等等。需要注意的是,在指定的value之前需要加'binary';
    hbase(main):012:0> scan '20180408:user',{FILTER=>"MultipleColumnPrefixFilter('n')"}
    hbase(main):013:0> scan '20180408:user',{FILTER=>"MultipleColumnPrefixFilter('n','a')"}
    hbase(main):001:0> scan '20180408:user',{FILTER=>"ColumnPrefixFilter('n')"}
    hbase(main):002:0> scan '20180408:user',{FILTER=>"RowFilter(=,'binary:row1')"},注意,rowfilter需要给定两个参数,第一个参数:=,>,<,>=,<=。第二个参数是二进制的字符串数组。
    hbase(main):001:0> scan '20180408:user',{FILTER=>"SingleColumnValueFilter('col1','name',=,'binary:zhangsan')"}

    8、#修改值操作,默认不显示历史值
    put 'myTables','0001','base_info:name','李四'

    9、namespace的相关命令:
    #创建命名空间,create_namespace命令
    hbase(main):019:0> create_namespace '20180408',{'comment'=>'this is my namespace'}
    #显示命名空间,显示所有存在的命名空间,可以使用正则,可以验证自己创建的命名空间是否创建成功,也可以去hdfs上面查看。
    hbase(main):020:0> list_namespace
    hbase(main):020:0> list_namespace '20180408.*'
    #删除命名空间,删除指定的命名空间,注意删除的命名空间内不能有table存在,也就是说只能删除空的namespace。
    hbase(main):021:0> drop_namespace '20180408'
    #显示命名空间的相关信息。describe_namespace命令。
    hbase(main):026:0> describe_namespace '20180408'
    #查看这个命名空间下面的hbase数据表。
    hbase(main):035:0> list_namespace_table '20180408'

    10、count命令是统计hbase表行数的一个命令,由于相当于一个内置的mapreduce程序,所以当数据量比较大的时候可以选择使用协处理器方式计算行数。默认情况下INTERVAL是1000间隔数,CACHE是10。
    hbase(main):001:0> count '20180408:user'
    hbase(main):002:0> count '20180408:user',INTERVAL=2

  • 相关阅读:
    视图类
    基于前一天再补充
    多表与基表等概念
    模块与序列化
    vue简单实现购物车列表功能
    再顾vue
    再探vue
    iptables编辑
    python 字符串替换、正则查找替换
    Map的遍历
  • 原文地址:https://www.cnblogs.com/fengyouheng/p/10266853.html
Copyright © 2011-2022 走看看