hbase shell 常用命令
- 格式:docx
- 大小:16.97 KB
- 文档页数:4
HBaseshell命令情况总结通过shell操作HBase(在C60U10版本)1.登录连接客户端所在服务器:**************.0.24进⼊安装⽬录:cd /opt/hadoopclient导⼊环境变量:source bigdata_env进⼊HBase: cd HBase/hbase/bin启动HBase: hbase shell注:此版本不需要认证(查看是否认证klist,认证kinit ⽤户名)(admin Huawei@123)2.HBase shell命令2.1.⼀般操作2.1.1.查询服务器状态:status语法:status⽰例:四个服务器2.1.2.查询HBase版本:version语法:version⽰例:2.1.3.查看当前⽤户:whoami语法:whoami⽰例:2.1.4.退出HBase shell:exit语法:exit⽰例:2.1.5.关闭HBase集群:shutdown语法:shutdown说明:shutdown表⽰关闭HBase服务,必须重新启动HBase才可以恢复,exit只是退出HBase shell,退出之后完全可以重新进⼊。
⽰例:2.1.6.帮助命令:help “命令”语法:help “命令”2.2.DDL操作2.2.1.创建表:create语法:create ‘表名’, {NAME=>’列族名’,VERSIONS=>版本数},{…},…说明:定义表的时候只需要指定列族名,列名在put时动态指定。
⽰例:创建⼀个表名为t1含有三个列族f1,f2,f3。
只指定列族名时可以如下简写。
2.2.2.删除表:drop语法:drop ‘表名’说明:⾸先disable,然后drop⽰例:2.2.3.查看表结构:describe语法:describe ‘表名’说明:只能查看到列族,对列族下的列怎么查看?⽰例:2.2.4.修改表结构:alter语法:说明:修改表结构前必须先disable⽰例1:添加⼀个列族,添加列族f4⽰例2:删除⼀个列族,删除列族f4.⽰例3:修改列族属性,将f1,f2,f3的VERSIONS修改为3⽰例4:修改表属性,如MAX_FILESIZE,MEMSTORE_FLUSHSIZE,READONLY, DEFERRED_LOG_FLUSH ⽰例5:添加⼀个表协同处理器2.2.5.列出所有表:list语法:list⽰例:下⾯显⽰三个表2.2.6.查询表是否存在:exists语法:exists ‘表名’⽰例:2.2.7.查询表是否可⽤:enable,disable,is_enabled,is_disabled语法:enable ‘表名’,disable ‘表名’,is_enabled ‘表名’,is_disabled ‘表名’⽰例:2.3.DML操作2.3.1.添加记录:put语法:put ‘表名’, ’⾏键名’, ’列族名:列名’, ’值’, ‘时间戳’说明:⼀次只能向指定⾏的⼀个列族中的⼀个列put⼀个值,因此必须指定⾏名,列族名:列名。
Hbaseshell命令基本操作Hbase shell命令基本操作1、进⼊Hbase shell客户端命令操作界⾯如果配置过hbase环境变量hbase shell如果没有配置过环境变量# 进⼊hbase⽂件夹中cd /hc/install/hbase-2.2.6/bin/hbase shell2、help帮助命令help# 查看具体命令的帮助信息help 'create'3、list查看有哪些表list4、create创建表创建user表,包含info、data两个列族使⽤create命令create 'user', 'info', 'data'#或者create 'user',{NAME => 'info', VERSIONS => '3'},{NAME => 'data'}5、put 插⼊数据操作向表中插⼊数据使⽤put命令#向user表中插⼊信息,row key为rk0001,列族info中添加名为name的列,值为zhangsanput 'user', 'rk0001', 'info:name', 'zhangsan'#向user表中插⼊信息,row key为rk0001,列族info中添加名为gender的列,值为femaleput 'user', 'rk0001', 'info:gender', 'female'#向user表中插⼊信息,row key为rk0001,列族info中添加名为age的列,值为20put 'user', 'rk0001', 'info:age', 20#向user表中插⼊信息,row key为rk0001,列族data中添加名为pic的列,值为pictureput 'user', 'rk0001', 'data:pic', 'picture'6、查询数据操作6.1 通过rowkey进⾏查询获取user表中row key为rk0001的所有信息(即所有cell的数据)使⽤get命令get 'user', 'rk0001'6.2 查看rowkey下某个列族的信息获取user表中row key为rk0001,info列族的所有信息get 'user', 'rk0001', 'info'6.3 查看rowkey指定列族指定字段的值获取user表中row key为rk0001,info列族的name、age列的信息get 'user', 'rk0001', 'info:name', 'info:age'6.4 查看rowkey指定多个列族的信息获取user表中row key为rk0001,info、data列族的信息get 'user', 'rk0001', 'info', 'data'#或者你也可以这样写get 'user', 'rk0001', {COLUMN => ['info', 'data']}#或者你也可以这样写,也⾏get 'user', 'rk0001', {COLUMN => ['info:name', 'data:pic']}6.5 指定rowkey与列值过滤器查询获取user表中row key为rk0001,cell的值为zhangsan的信息get 'user', 'rk0001', {FILTER => "ValueFilter(=, 'binary:zhangsan')"}4.6.6 指定rowkey与列名模糊查询获取user表中row key为rk0001,列标⽰符中含有a的信息get 'user', 'rk0001', {FILTER => "QualifierFilter(=,'substring:a')"}6.7 查询所有⾏的数据查询user表中的所有信息使⽤scan命令scan 'user'6.8 列族查询查询user表中列族为info的信息scan 'user', {COLUMNS => 'info'}#当把某些列的值删除后,具体的数据并不会马上从存储⽂件中删除;查询的时候,不显⽰被删除的数据;如果想要查询出来的话,RAW => true scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 3}6.9 多列族查询查询user表中列族为info和data的信息scan 'user', {COLUMNS => ['info', 'data']}6.10 指定列族与某个列名查询查询user表中列族为info、列标⽰符为name的信息scan 'user', {COLUMNS => 'info:name'}查询info:name列、data:pic列的数据scan 'user', {COLUMNS => ['info:name', 'data:pic']}查询user表中列族为info、列标⽰符为name的信息,并且版本最新的5个scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}6.11 指定多个列族与条件模糊查询查询user表中列族为info和data且列标⽰符中含有a字符的信息scan 'user', {COLUMNS => ['info', 'data'], FILTER => "QualifierFilter(=,'substring:a')"}6.12 指定rowkey的范围查询查询user表中列族为info,rk范围是[rk0001, rk0003)的数据scan 'user', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}6.13 指定rowkey模糊查询查询user表中row key以rk字符开头的数据scan 'user',{FILTER=>"PrefixFilter('rk')"}6.14 指定数据版本的范围查询查询user表中指定范围的数据(前闭后开)scan 'user', {TIMERANGE => [1392368783980, 1610288780669]}7、更新数据操作7.1 更新数据值更新操作同插⼊操作⼀模⼀样,只不过有数据就更新,没数据就添加使⽤put命令7.2 更新版本号将user表的info列族版本数改为5alter 'user', NAME => 'info', VERSIONS => 58、删除数据以及删除表操作8.1 指定rowkey以及列名进⾏删除删除user表row key为rk0001,列标⽰符为info:name的数据delete 'user', 'rk0001', 'info:name'8.2 指定rowkey,列名以及版本号进⾏删除删除user表row key为rk0001,列标⽰符为info:name,timestamp为1392383705316的数据delete 'user', 'rk0001', 'info:name', 13923837053168.3 删除⼀个列族删除⼀个列族:alter 'user', NAME => 'data', METHOD => 'delete'#或alter 'user', 'delete' => 'info'8.4 清空表数据truncate 'user'8.5 删除表⾸先需要先让该表为disable状态,使⽤命令:disable 'user'然后使⽤drop命令删除这个表drop 'user'(注意:如果直接drop表,会报错:Drop the named table. Table must first be disabled)。
HBase基础之Hbaseshell常⽤操作⼀般操作查看服务器状态status查看hbase版本versionDDL操作创建表create 'member','member_id','address','info'创建了3个列族,分别是member_id, address, info知识点回顾:cf是schema的⼀部分,⽽column不是。
查看表信息describe 'member'DESCRIPTION ENABLED'member', {NAME => 'address', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTE trueR => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CELLS =>'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CELLS => 'false',BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'member_id', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW',REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}1 row(s) in 0.1800 seconds查询所有的表list删除⼀个列族member表建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。
hbaseshell常⽤命令1、查看读取器状态status2、查看hbase版本version3、创建⼀个表:格式: create 表名,列簇1,列簇2...列簇Ncreate ‘member’,'member_id','address','info'4、查看表描述describe 'member'5、删除⼀个列簇:先关闭,再更新,再打开disable 'member'alter'member',NAME=>'member_id',METHOD=>'delete'enable 'member'6、列出所有表list7、删除⼀个表:先关闭,再删除disable 'member'drop 'member'8、查询表是否存在exists 'member'9、判断表是否enableis_enabled 'member'10、判断表是否disableis_disabled 'member'11、插⼊数据:在列簇中插⼊数据:格式:put 表名,⾏键id,列簇名:列名,值put 'member','xiaoming','address:contry','china'put 'member','xiaoming','address:province','sc'put 'member','xiaoming','address:city','cd'put 'member','xiaoming','info:age','25'put 'member','xiaoming','info:birthday','1992-10-21'put 'member','xiaoming','info:company','alibaba'12、获取⼀个id的所有数据get 'member','xiaoming'13、获取⼀个id,⼀个列族的所有数据get 'member','xubiao','info'14、获取⼀个id,⼀个列族中⼀个列的所有数据get 'member','xiaoming,'info:age'15、更新⼀条记录:给rowId重新put即可,put 'member','xiaoming','info:age','26' // 把xiaoming的age改为2616、通过timestamp来获取两个版本的数据get 'member','xiaoming',{COLUMN=>'info:age',TIMESTAMP=>1510840447626}17、全表扫描scan 'member'18、删除id为xiaomiing的值的'info:age'字段delete 'member','xiaoming','info:age'19、删除整⾏deteleall 'member','xiaoming'20、查询表中有多少⾏count 'member'21、将整张表清空:实际执⾏过程:hbase是先将表disable,然后drop,后重建表,来实现truncate的功能的truncate 'member'总结可以加深印象,同时还能为⼤家提供⽅便。
HBaseShell脚本命令1、启动Hbase整个集群:$HBASE_HOME/bin/start-hbase.shbin/start-hbase.sh前者在服务器任意位置执⾏都ok,后者必须在安装路径下执⾏才有效,其实$HBASE_HOME的作⽤就是调⽤Hbase的安装路径2、停⽌Hbase整个集群:$HBASE_HOME/bin/stop-hbase.shbin/stop-hbase.sh前者在服务器任意位置执⾏都ok,后者必须在安装路径下执⾏才有效3、启动或停⽌,所有的regionserver或zookeeper或backup-master :$HBASE_HOME/bin/hbase-daemons.shbin/hbase-daemons.sh前者在服务器任意位置执⾏都ok,后者必须在安装路径下执⾏才有效4、启动或停⽌,单个master或regionserver或zookeeper :$HBASE_HOME/bin/hbase-daemon.shbin/hbase-daemon.sh前者在服务器任意位置执⾏都ok,后者必须在安装路径下执⾏才有效6、进⼊shell命令模式:$HBASE_HOME/bin/hbase shell7、HBase的⼀些基本操作命令,我列出了⼏个常⽤的HBase Shell命令,如下:8、脚本之间的调⽤关系:(1)、start-hbase.sh流程:a.运⾏hbase-config.sh(hbase-config.sh的作⽤是装载相关配置,如hbase_home⽬录,conf⽬录,regionserver机器列表,java_home⽬录等,他会调⽤$HBASE_HOME/conf/hbase-env.sh)b.解析参数(0.96后的版本可以带唯⼀参数autorestart(重启))c.调⽤hbase-daemon.sh来启动master;调⽤hbase-daemon.sh来启动regionserver、zookeeper、master-backup9、hbase-env.sh的作⽤:主要配置JVM及其GC参数,还可以配置log⽬录及参数,配置是否需要hbase管理zk,配置进程id⽬录等10、hbase-daemon.sh的作⽤:根据需要启动的进程,eg:为zookeeper,则调⽤zookeepers.sh;为regionserver,则调⽤regionserver.sh;为master-backup,则调⽤master-backup.sh11、zookeeper.sh的作⽤:如果hbase-env.sh中的HBASE_MANAGES_ZK=True/Flase,那么通过ZKServerTool这个类解析xml配置⽂件,获取ZK节点列表(即hbase.zookeeper.quorum的配置值),然后通过ssh向这些节点发送远程命令:cd ${HBASE_HOME}$bin/hbase-daemon.sh --config S{HBASE_CONF_DIR} start/stop zookeeper12、regionserver.sh的作⽤:与zookeepers.sh类似,通过${HBASE_CONF_DIR}/regionservers配置⽂件,获取regionserver机器列表,然后SSH向这些机器发送远程命令:cd ${HBASE_HOME};$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop regionserver13、master-backup.sh的作⽤:通过${HBASE_CONF_DIR}/backup-masters这个配置⽂件,获取backup-masters机器列表(默认配置中,这个配置⽂件是不存在的,所有并不会启动backup-master),然后ssh向这些机器发送远程命令:cd ${HBASE_HOME}$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop master --backup14、hbase-daemin.sh的作⽤:⽆论是zookeepers.sh还是regionservers.sh或是master-backup.sh,最终都会调⽤本地的hbase-daemon.sh,其执⾏过程如下:(1)、运⾏hbase-config.sh,装载各种配置(java环境、log配置、进程ID⽬录等)(2)、如果是start命令,滚动out输出⽂件,滚动gc⽇志⽂件,⽇志⽂件中输出启动时间+ulimit -a信息,如“Mon Nov 26 10:31:42 CST 2012 Starting master on dwxx.yy.taobao”"..open files (-n) 65536.."(3)、调⽤$HBASE_HOME/bin/hbase start master/regionserver/zookeeper(4)、执⾏wait,等待3中开启的进程结束(5)、执⾏cleanZNode,将regionserver在zk上登记的节点删除,这样做的⽬的是:在regionserver进程意外退出的情况下,可以免去3分钟的ZK⼼跳超时等待,直接由master进⾏宕机恢复(6)、如果是stop命令?根据进程ID,检查进程是否存在;调⽤kill命令,然后等待到进程不存在为⽌(7)、如果是restart命令,调⽤stop后,再调⽤start15、$HBASE_HOME/bin/hbase的作⽤:(1)、可以通过$HBASE_HOME/bin/hbase查看其usage(2)、bin/hbase shell,这个就是常⽤的shell⼯具,运维常⽤的DDL和DML都会通过此进⾏,其具体实现(对hbase的调⽤)是⽤ruby写的(3)、bin/hbase hbck, 运维常⽤⼯具,检查集群的数据⼀致性状态,其执⾏是直接调⽤ org.apache.hadoop.hbase.util.HBaseFsck中的main 函数(4)、bin/hbase hlog, log分析⼯具,其执⾏是直接调⽤org.apache.hadoop.hbase.regionserver.wal.HLogPrettyPrinter中的main函数(5)、bin/hbase hfile, hfile分析⼯具,其执⾏是直接调⽤org.apache.hadoop.hbase.io.hfile.HFile中的main函数(6)、bin/hbase zkcli,查看/管理ZK的shell⼯具,很实⽤,经常⽤,⽐如你可以通过(get /hbase-tianwu-94/master)其得知当前的active master,可以通过(get /hbase-tianwu-94/root-region-server)得知当前root region所在的server,你也可以在测试中通过(delete /hbase-tianwu-94/rs/dwxx.yy.taobao),模拟regionserver与ZK断开连接,其执⾏则是调⽤了org.apache.zookeeper.ZooKeeperMain的main函数(7)、回归到刚才hbase-daemon.sh对此脚本的调⽤为:$HBASE_HOME/bin/hbase start master/regionserver/zookeeper 其执⾏则直接调⽤org.apache.hadoop.hbase.master.HMasterorg.apache.hadoop.hbase.regionserver.HRegionServerorg.apache.hadoop.hbase.zookeeper.HQuorumPeer 的main函数,⽽这些main函数就是了new⼀个了RunnableHMaster/HRegionServer/QuorumPeer,在不停的Running(8)、bin/hbase classpath 打印classpath(9)、bin/hbase version 打印hbase版本信息(10)、bin/hbase CLASSNAME,这个很实⽤,所有实现了main函数的类都可以通过这个脚本来运⾏,⽐如前⾯的hlog hfile hbck⼯具,实质是对这个接⼝的⼀个快捷调⽤,⽽其他未提供快捷⽅式的class我们也可以⽤这个接⼝调⽤,如Region merge 调⽤:$HBASE_HOME/bin/hbase/org.apache.hadoop.hbase.util.Merge16、注意:(1)、hbase-daemon.sh start master 与 hbase-daemon.sh start master --backup,这2个命令的作⽤⼀样的,是否成为backup或active是由master的内部逻辑来控制的(2)、stop-hbase.sh 不会调⽤hbase-daemons.sh stop regionserver 来关闭regionserver,但是会调⽤hbase-daemons.sh stop zookeeper/master-backup来关闭zk和backup master,关闭regionserver实际调⽤的是hbaseAdmin的shutdown接⼝(3)、通过$HBASE_HOME/bin/hbase stop master关闭的是整个集群⽽⾮单个master,只关闭单个master的话使⽤$HBASE_HOME/bin/hbase-daemon.sh stop master(4)、$HBASE_HOME/bin/hbase stop regionserver/zookeeper 不能这么调,调了也会出错,也没有路径会调⽤这个命令,但是可以通过$HBASE_HOME/bin/hbase start regionserver/zookeeper 来启动rs或者zk,hbase-daemon.sh调⽤的就是这个命令。
hbase shell 常用命令HBase Shell 是用于与 HBase 进行交互的命令行工具。
它提供了丰富的命令来管理和操作 HBase 数据库。
下面会详细介绍一些常用的 HBase Shell 命令。
1. 创建表命令:create 'table_name', 'column_family'这个命令用于创建一个新的表。
你需要指定表的名称和列族名称。
列族是表的主要组成部分,用于组织数据。
2. 查看表列表命令:list使用该命令可以列出当前 HBase 中所有的表。
3. 查看表结构命令:describe 'table_name'此命令用于获取指定表的详细结构信息,包括表名、列族以及相关选项。
4. 插入数据命令:put 'table_name', 'row_key', 'column_family:column', 'value'使用该命令可以向指定的表中插入数据。
你需要提供表名、行键、列族、列和值。
5. 查询数据命令:get 'table_name', 'row_key'通过该命令可以根据行键从指定的表中获取数据。
6. 扫描表命令:scan 'table_name'该命令用于扫描整个表的数据,返回结果包括表中的所有行。
7. 删除数据命令:delete 'table_name', 'row_key', 'column_family:column'使用该命令可以删除表中指定行键和列族的数据。
8. 禁用表命令:disable 'table_name'9. 删除表命令:drop 'table_name'该命令用于永久删除指定的表及其所有相关数据。
10. 退出 HBase Shell:exit使用 exit 命令可以退出 HBase Shell。
Hbase常⽤操作命令Hbase常⽤操作命令1. 进⼊hbase./hbase shell参数说明1. 进⼊到hbase⽬录并进⼊hbase2. 浏览所有表list参数说明1. 查看表列表3. 查看表结构describe 'BizvaneV2.VipSearch'参数说明1. describe 动作命令,BizvaneV2.VipSearch 为要查看表结构的表名4. 创建表create 'UserInfo', { NAME => 'info', REPLICATION_SCOPE => '1' }参数说明1. create 动作命令,UserInfo 为要创建的表名2. NAME 列族名,info 为列族名称3. REPLICATION_SCOPE 是否复制,0为不复制,1为复制5. 修改表结构disable 'UserInfo'alter 'UserInfo', {NAME => 'extendInfo', REPLICATION_SCOPE => '1'}describe 'UserInfo'参数说明修改表结构要使表不启⽤状态1. disable 动作命令,使要修改结构的表⽆效,UserInfo 为表名2. 修改命令1. alter 动作命令2. UserInfo 要修改的表名称3. {NAME => 'extendInfo', REPLICATION_SCOPE => '1'} 要修改的结构体3. describe 动作命令,查看表结构描述,验证是否修改成功6. 添加数据put 'UserInfo','row_1','info:firstname','liu'参数说明1. 添加命令1. put 动作命令,2. UserInfo 要添加数据的表名称3. row_1 数据⾏4. info:firstname 列及列名字5. liu 要添加的值7. 查看数据scan 'UserInfo'参数说明1. scan 动作命令1. 要查看表的名称8. 修改数据put 'UserInfo','row_1','info:firstname','liu_copy'参数说明1. 添加命令1. put 动作命令,2. UserInfo 要修改数据的表名称3. row_1 数据⾏4. info:firstname 列及列名字5. liu 新数据值9. 删除数据delete 'UserInfo','row_1','info:firstname'参数说明1. 删除命令1. delete 动作命令,2. UserInfo 要修改数据的表名称3. row_1 数据⾏4. info:firstname 列及列名字10. 删除表disable 'UserInfo'drop 'UserInfo'参数说明修改表结构要使表不启⽤状态1. 删除命令1. disable 使表不启⽤,UserInfo 要不启⽤的表名称2. drop 删除命令 UserInfo 要删除的表名称11. 帮助help参数说明1. help 帮助命令,可以查看Hbase提供的命令清单。
hbase shell的基本命令HBase是一个分布式、可扩展的面向列的NoSQL数据库,它运行在Hadoop集群之上。
HBase提供了一个交互式的命令行工具——HBase Shell,用于与HBase进行交互操作。
本文将介绍HBase Shell的基本命令,包括创建表、插入数据、查询数据、删除数据等操作。
一、连接HBase我们需要使用HBase Shell连接到HBase数据库。
在命令行中输入"hbase shell",即可进入HBase Shell环境。
二、创建表创建表是使用HBase的第一步。
在HBase Shell中,使用"create"命令可以创建表。
例如,我们可以创建一个名为"student"的表,其中包含"info"和"score"两个列族。
具体命令如下:create 'student', 'info', 'score'三、插入数据创建完表之后,我们可以使用"put"命令向表中插入数据。
插入数据需要指定表名、行键、列族、列和值。
以下是插入一条学生信息的命令示例:put 'student', '1001', 'info:name', 'Tom'put 'student', '1001', 'score:math', '90'put 'student', '1001', 'score:english', '85'四、查询数据使用HBase Shell可以方便地查询表中的数据。
通过"get"命令可以根据行键获取对应的数据。
两个月前使用过hbase,现在最基本的命令都淡忘了,留一个备查~要注意shutdown与exit之间的不同:shutdown表示关闭hbase服务,必须重新启动hbase才可以恢复,exit只是退出hbase shell,退出之后完全可以重新进入。
hbase使用坐标来定位表中的数据,行健是第一个坐标,下一个坐标是列族。
hbase是一个在线系统,和hadoop mapreduce的紧密结合又赋予它离线访问的功能。
hbase接到命令后存下变化信息或者写入失败异常的抛出,默认情况下。
执行写入时会写到两个地方:预写式日志(write-ahead log,也称hlog)和memstore,以保证数据持久化。
memstore是内存里的写入缓冲区。
客户端在写的过程中不会与底层的hf ile直接交互,当menstore写满时,会刷新到硬盘,生成一个新的hfile.hfile是hbase使用的底层存储格式。
menstore的大小由hbase-site.xml文件里的系统级属性h base.hregion.memstore.flush.size来定义。
hbase在读操作上使用了lru缓存机制(blockcache),blockcache设计用来保存从hfile里读入内存的频繁访问的数据,避免硬盘读。
每个列族都有自己的blockcache。
b lockcache中的block是hbase从硬盘完成一次读取的数据单位。
block是建立索引的最小数据单位,也是从硬盘读取的最小数据单位。
如果主要用于随机查询,小一点的block会好一些,但是会导致索引变大,消耗更多内存,如果主要执行顺序扫描,大一点的bloc k会好一些,block变大索引项变小,因此节省内存。
LRU是Least Recently Used 近期最少使用算法。
内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。
hbase shell命令总结HBase Shell是HBase的命令行界面,用于与HBase进行交互。
以下是一些常用的HBase Shell命令和它们的功能总结:1. `help 'command'`:显示指定命令的帮助信息。
2. `status`:显示HBase集群的状态信息。
3. `list`:列出当前存在的所有表。
4. `create 'table', 'column_family'`:创建一个新表,并指定列族。
5. `disable 'table'`:禁用指定的表。
6. `enable 'table'`:启用指定的表。
7. `describe 'table'`:显示指定表的结构信息。
8. `alter 'table', {NAME=>'column_family', VERSIONS=>num}`:修改表的列族属性,如版本数。
9. `put 'table', 'rowkey', 'column_family:column', 'value'`:向指定表中插入或更新数据。
10. `get 'table', 'rowkey'`:获取指定表中指定行的数据。
11. `scan 'table'`:扫描指定表中的所有数据。
12. `delete 'table', 'rowkey', 'column_family:column'`:删除指定表中指定行列的数据。
13. `deleteall 'table', 'rowkey'`:删除指定表中指定行的所有数据。
14. `truncate 'table'`:删除指定表的所有数据。
进入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbase shell进入可以使用whoami命令可查看当前用户hbase(main)>whoami表的管理1)查看有哪些表hbase(main)> list2)创建表# 语法:create<table>, {NAME =><family>, VERSIONS =><VERSIONS>}# 例如:创建表t1,有两个family name:f1,f2,且版本数均为2hbase(main)> create 't1',{NAME => 'f1', VERSIONS => 2},{NAME => 'f2', VERSIONS => 2}3)删除表分两步:首先disable,然后drop例如:删除表t1hbase(main)> disable 't1'hbase(main)> drop 't1'4)查看表的结构# 语法:describe<table># 例如:查看表t1的结构hbase(main)> describe 't1'5)修改表结构修改表结构必须先disable# 语法: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'权限管理1)分配权限# 语法: grant <user><permissions><table><column family><column qualifier>参数后面用逗号分隔# 权限用五个字母表示:"RWXCA".# READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')# 例如,给用户‘test'分配对表t1有读写的权限,hbase(main)> grant 'test','RW','t1'2)查看权限# 语法:user_permission<table># 例如,查看表t1的权限列表hbase(main)>user_permission 't1'3)收回权限# 与分配权限类似,语法:revoke<user><table><column family><column qualifier># 例如,收回test用户在表t1上的权限hbase(main)> revoke 'test','t1'表数据的增删改查1)添加数据# 语法:put<table>,<rowkey>,<family:column>,<value>,<timestamp># 例如:给表t1的添加一行记录:rowkey是rowkey001,family name:f1,column name:col1,value:value01,timestamp:系统默认hbase(main)> put 't1','rowkey001','f1:col1','value01'用法比较单一。
2)查询数据a)查询某行记录# 语法:get<table>,<rowkey>,[<family:column>,....]# 例如:查询表t1,rowkey001中的f1下的col1的值hbase(main)> get 't1','rowkey001', 'f1:col1'# 或者:hbase(main)> get 't1','rowkey001', {COLUMN=>'f1:col1'}# 查询表t1,rowke002中的f1下的所有列值hbase(main)> get 't1','rowkey001'b)扫描表# 语法:scan<table>, {COLUMNS => [ <family:column>,.... ], LIMIT =>num}# 另外,还可以添加STARTROW、TIMERANGE和FITLER等高级功能# 例如:扫描表t1的前5条数据hbase(main)> scan 't1',{LIMIT=>5}c)查询表中的数据行数# 语法:count<table>, {INTERVAL =>intervalNum, CACHE =>cacheNum}# INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度# 例如,查询表t1中的行数,每100条显示一次,缓存区为500hbase(main)> count 't1', {INTERVAL => 100, CACHE => 500}3)删除数据a )删除行中的某个列值# 语法:delete <table>, <rowkey>, <family:column> , <timestamp>,必须指定列名# 例如:删除表t1,rowkey001中的f1:col1的数据hbase(main)> delete 't1','rowkey001','f1:col1'注:将删除改行f1:col1列所有版本的数据b )删除行# 语法:deleteall<table>, <rowkey>, <family:column> , <timestamp>,可以不指定列名,删除整行数据# 例如:删除表t1,rowk001的数据hbase(main)>deleteall 't1','rowkey001'c)删除表中的所有数据# 语法:truncate<table># 其具体过程是:disable table -> drop table -> create table# 例如:删除表t1的所有数据hbase(main)> truncate 't1'Region管理1)移动region# 语法:move 'encodeRegionName', 'ServerName'# encodeRegionName指的regioName后面的编码,ServerName指的是master-status的Region Servers列表# 示例hbase(main)>move '4343995a58be8e5bbc739af1e91cd72d', ',60020,1390274516739'2)开启/关闭region# 语法:balance_switchtrue|falsehbase(main)>balance_switch3)手动split# 语法:split 'regionName', 'splitKey'4)手动触发major compaction#语法:#Compact all regions in a table:#hbase>major_compact 't1'#Compact an entire region:#hbase>major_compact 'r1'#Compact a single column family within a region:#hbase>major_compact 'r1', 'c1'#Compact a single column family within a table:#hbase>major_compact 't1', 'c1'配置管理及节点重启1)修改hdfs配置hdfs配置位置:/etc/hadoop/conf# 同步hdfs配置cat /home/hadoop/slaves|xargs -i -t scp /etc/hadoop/conf/hdfs-site.xml hadoop@{}:/etc/hadoop/conf/hdfs-site.xml#关闭:cat /home/hadoop/slaves|xargs -i -t sshhadoop@{} "sudo /home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh --config /etc/hadoop/conf stop datanode"#启动:cat /home/hadoop/slaves|xargs -i -t sshhadoop@{} "sudo /home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh --config /etc/hadoop/conf start datanode"2)修改hbase配置hbase配置位置:# 同步hbase配置cat /home/hadoop/hbase/conf/regionservers|xargs -i -t scp /home/hadoop/hbase/conf/hbase-site.xmlhadoop@{}:/home/hadoop/hbase/conf/hbase-site.xml# graceful重启cd ~/hbasebin/graceful_stop.sh --restart --reload --debug 。