hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理 |
您所在的位置:网站首页 › 增删改查表格 › hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理 |
两篇讲的不错文章 http://www.cnblogs.com/nexiyi/p/hbase_shell.html http://blog.csdn.net/u010967382/article/details/37878701?utm_source=tuicool&utm_medium=referral hbase操做 hbase web操作hbase shell 基本操作 1建表 具体命令 2建表后查看表describe 3清空表truncate lmj_test4删除表5修改表结构先disable后enable6对表中记录的操作4种行操作7表操作权限8命名空间 hbase原理及时间戳管理介绍 hbase 表 hbase操做 hbase web操作 访问地址 http://hmaster:60010 hmaster的ip配置在$HBASE_HOME/conf/hbase-site.xml中 ip映射成主机名 在env/hosts中配置 在windows系统中的C:\Windows\System32\drivers\etc目录下的hosts文件中配置) hbase shell 基本操作: hbase shell 进入hbase console命令 whoami 查用户 help查看基本命令集合 help command 查看命令帮助 list看库中所有表 status 查看当前运行服务器状态 version 版本查询 exits '表名字' 判断表存在 hbase shell中删除为 ctrl + backspace(单按删除键不好使) 1)建表 语法:create , {NAME => , VERSIONS => } 具体命令 hbase(main):004:0> exists 'test' hbase(main):005:0> create 'test','cf' hbase> create 't1', {NAME => 'f1', VERSIONS => 5} hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'} 省略模式建立列族 hbase> create 't1', 'f1', 'f2', 'f3' 指定每个列族参数 hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true} hbase> create 't1', 'f1', {SPLITS => ['10', '20', '30', '40']} hbase> create 't1', 'f1', {SPLITS_FILE => 'splits.txt'} hbase> # Optionally pre-split the table into NUMREGIONS, using hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname) hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'} 设置不同参数,提升表的读取性能。 create 'lmj_test', {NAME => 'adn', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROWCOL', REPLICATION_SCOPE => '0', COMPRESSION => 'SNAPPY', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'true', IN_MEMORY => 'false', BLOCKCACHE => 'false'}, {NAME => 'fixeddim', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROWCOL', REPLICATION_SCOPE => '0', COMPRESSION => 'SNAPPY', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'true', IN_MEMORY => 'false', BLOCKCACHE => 'false'}, {NAME => 'social', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROWCOL', REPLICATION_SCOPE => '0', COMPRESSION => 'SNAPPY', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'true', IN_MEMORY => 'false', BLOCKCACHE => 'false'} 每个参数属性都有性能意义,通过合理化的设置可以提升表的性能 create 'lmj_test', {NAME => 'adn', BLOOMFILTER => 'ROWCOL', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0', COMPRESSION => 'SNAPPY', BLOCKCACHE => 'false'}, {NAME => 'fixeddim',BLOOMFILTER => 'ROWCOL', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0', COMPRESSION => 'SNAPPY', BLOCKCACHE => 'false'}, {NAME => 'social',BLOOMFILTER => 'ROWCOL', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0',COMPRESSION => 'SNAPPY', BLOCKCACHE => 'false'} 2)建表后查看表:describe 得出 {NAME => 'lmj_test', FAMILIES => [ {NAME => 'adn', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROWCOL', REPLICATION_SCOPE => '0', COMPRESSION => 'SNAPPY', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'true', IN_MEMORY => 'false', BLOCKCACHE => 'false'}, {NAME => 'fixeddim', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROWCOL', REPLICATION_SCOPE => '0', COMPRESSION => 'SNAPPY', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'true', IN_MEMORY => 'false', BLOCKCACHE => 'false'}, {NAME => 'social', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROWCOL', REPLICATION_SCOPE => '0', COMPRESSION => 'SNAPPY', VERSIONS => '1', TTL => '15768000', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'true', IN_MEMORY => 'false', BLOCKCACHE => 'false'} ] } 3)清空表:truncate ‘lmj_test’ 4)删除表: 分两步,首先disable 'lmj_test',然后drop 'lmj_test' 5)修改表结构:先disable后enable alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'} 例如:修改表test1的cf的TTL为180天 hbase(main)> disable 'test1' hbase(main)> alter 'test1',{NAME=>'body',TTL=>'15552000'},{NAME=>'meta', TTL=>'15552000'} hbase(main)> enable 'test1' 6)对表中记录的操作(4种行操作) put 增加一行 语法:put ,,,, 其中,timestamp可以系统默认,也可以自己设定,如 put 't1', 'r1', 'c1', 'value', ts1 put 'lmj_test','00001','adn:adn_3','aaa',1432483200000 put 'lmj_test','00001','fixeddim:appcategory_1','1',1432483200000 put 'lmj_test','00001','fixeddim:interest_15','100',1432483200000 get查询对应数据(可以指定行、列族、列、版本) get 'lmj_test','000000104257464',{TIMESTAMP=>1432483200000} delete 删除数据 删除指定行中指定列: delete , , , (必须指定列名,删除其所有版本数据) delete 'lmj_test','000000104257464','f1:col1' 删除整行数据(可不指定列名): deleteall , , , deleteall 'lmj_test','000000104257464' scan 扫描全表,指定过滤条件,返回对应行 scan 'lxw_hbase', {LIMIT => 1} 其他条件继续添加在大括号中 以上4个操作类是 org.apache.hadoop.hbase.client的子类,参考官网API查看详细信息 count统计表中记录数 count 'lxw_hbase', {INTERVAL => 100, CACHE => 500} #每100条显示一次,缓存区为500 7)表操作权限 给用户分配对每个表的操作权限,有RWXCA五种,对应READ, WRITE, EXEC, CREATE, ADMIN grant 'liu_mja','RW','lxw_hbase' #分配给用户liu_mja表lxw_hbase的读写权限 还可以 查看权限 user_permission 'lxw_hbase' 收回权限 revoke 'liu_mja','lxw_hbase' 8)命名空间 关系数据库系统中,命名空间namespace是表的逻辑分组,同一组中的表有类似的用途。 以下引自: (http://blog.csdn.net/u010967382/article/details/37878701?utm_source=tuicool&utm_medium=referral) hbase的表也有命名空间的管理方式,命名空间的概念为即将到来的多租户特性打下基础: 配额管理( Quota Management (HBASE-8410)):限制一个namespace可以使用的资源,资源包括region和table等; 命名空间安全管理( Namespace Security Administration (HBASE-9206)):提供了另一个层面的多租户安全管理; Region服务器组(Region server groups (HBASE-6721)):一个命名空间或一张表,可以被固定到一组 regionservers上,从而保证了数据隔离性。 命名空间可以被创建、移除、修改。 建表时可以指定命名空间,格式如下:: #Create a namespace create_namespace 'my_ns' #create my_table in my_ns namespace create 'my_ns:my_table', 'fam' #drop namespace drop_namespace 'my_ns' #alter namespace alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'} 预定义的命名空间: 有两个系统内置的预定义命名空间 hbase 系统命名空间,用于包含hbase的内部表 default 所有未指定命名空间的表都自动进入该命名空间 使用默认的命名空间 #namespace=default and table qualifier=bar create 'bar', 'fam' 指定命名空间 #namespace=foo and table qualifier=bar create 'foo:bar', 'fam' hbase原理及时间戳管理介绍分布式的、面向列的开源数据库 hdfs文件存储 MR处理数据 zookeeper做协同服务 hbase 表 数据以表存储 表含行、列,列分为列簇(family)如图, 注意,version版本控制中,major compact不进行,则删除最近版本后,失效版本可以重新恢复为有效值 put的时间戳 默认使用的是currentTimeMillis。应用也可以使用自定义的值来做为每个列的 timestamp,只需要是一个long integer的值即可,不一定是时间 而get默认返回timestamp最大值的数据 delete的时间戳 1. 删除某个timestamp之前所有老版本 (指定timestamp比row中最新的版本大,则相当于删除整行,不是立即删除元数据,而是等到major compact时) 2. 删除某个timstamp点的版本 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |