一、 Hbase安装
1、解压安装包hbase-1.2.6-bin.tar.gz至路径 /home/hadoop1/Desktop,命令如下:
#cd /home/hadoop1/Desktop
#tar xfvz hbase-1.2.6-bin-tar.gz
2、将解压的文件名hbase-1.2.6改为hbase,以方便使用,命令如下:
# mv hbase-1.2.6 hbase
3、配置环境变量
将hbase下的bin目录添加到path中,这样,启动hbase就无需到/home/hadoop1/hbase/bin目录下方便了hbase的使用。
# vim /etc/profile
Export HBASE_HOME=/home/hadoop1/Desktop/hbase
exportPATH=$PATH:/home/hadoop1/Desktop/hbase/bin
如果已经引入过PATH在export PATH这行追加:/home/hadoop1/Desktop
执行sourse命令使修改生效:source /etc/profile
4、添加hbase权限
#chown -R hadoop:hadoop1hbase
5、查看HBase版本,确定hbase安装成功,命令如下
#hbase version
二、hbase配置
1、配置hbase/conf/hbase-env.sh。命令如下:
#vi hbase/conf/hbase-env.sh
export JAVA_HOME=/home/hadoop1/Desktop/jdk版本
export HBASE_MANAGES_ZK=true
2、配置hbase/conf/hbase-site.xml
配置成如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2,slave3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>zookeeper</value>
</property>
</configuration>
配置hbase/conf/regionservers,在regionservers文件中添加如下内容:
slave1
slave2
slave3
regionservers文件列出了所有运行hbase的机器(即HRegionServer)。此文件的配置和Hadoop中的slaves文件十分相似,每行指定一台机器的主机名。当HBase启动的时候,会将此文件中列出的所有机器启动。关闭时亦如此。我们的配置意为在slave1, slave2, slave3 上都将启动 RegionServer。
将配置好的 hbase 文件分发给各个 slave
#scp -r hbase hadoop1@slave1:/home/hadoop1/Desktop
#scp -r hbase hadoop1@slave2:/home/hadoop1/Desktop
#scp -r hbase hadoop1@slave3:/home/hadoop1/Desktop
三、接下来测试运行HBase。
第一步:首先登陆ssh,之前设置了无密码登陆,如果已经启动hadoop请跳过此步骤。命令如下:
#start-dfs.sh
第二步:启动HBase.命令如下:
#start-hbase.sh
输入命令jps发现HMaster、HQuorumPeer、HRegionServer都已经启动。Master会有HMaster、HQuorumPeer两个进程。Slave会有HQuorumPeer,HRegionServer两个进程。
进入shell界面:hbase shell
四、Hbase shell 命令
1、通用命令
命令 |
描述 |
status |
显示服务器状态,例如:5 servers,0 dead,25.000 average load 这里有三个开关,如下: hbase> status ‘simple’ hbase> status ‘summary’ hbase> status ‘detailed’ |
whoami |
显示hbase当前用户。 hbase> whoami |
version |
显示hbase版本 |
list |
这个命令将列出hbase已有的表。如下: list list ‘stu.*’ |
count |
统计指定表的记录数。如下: Count ‘tableName’ 默认每次显示1000行。这个计数间隔可以任意指定。扫描缓存默认启动计数扫描。默认缓存是10行。如果行规模小,可以增大这个参数。 hbase> count ‘table1’ hbase> count ‘table1’,INTERVAL=>100000 hbase> count ‘table1’,CACHE=>1000 hbase> count ‘table1’,INTERVAL=>10,CACHE=>1000 如果有很多行记录,Hbase默认的计数器会花费很多时间来进行计数。所以,可以用Hbase MapReduce JAR文件来加快这个操作,使用方法如下: hadoop jar hbase.jar rowcount tablenametocount |
describe |
这个命令以表名为参数,对表结构信息进行展示,语法如下: hbase> describe ‘tableName’ |
exist |
如果有成千上万张表,我们需要检查表是否存在于Hbase中,可以使用这个命令。如果表较少,可以很容易用list列出来,如果有很多表,很难通过滚动表的列来找到它,所以可以使用这个命令来找到它,语法如下:hbase> exists ‘tableName’ |
is_enabled |
检查表是否启用。语法如下: hbase> is_enabled ‘tableName’ |
is_disabled |
检查表是否被禁用。语法如下: hbase> is_disabled ‘tableName’ |
show_filters |
显示HBase中的过滤器列表。hbase> show_filters |
2、数据操作命令
命令 |
描述 |
alter |
使用这个命令可以改变表和列族的模式。 下面的命令将添加一个列族colFam到表中: hbase> alter ‘table’,{NAME=>’colFam’,VERSIONS=>1} 从表t1中删除f1列族,使用如下命令: hbase> alter ‘t1’,NAME=>’fam1’,METHOD=>’delete’ 之前的简化版本: hbase>alter ’t1’, ‘delete’=>’fam1’ 也可以更改表的范围属性,如MAX_FILESIZE、MEMSTORE_FLUSHSIZE、READONLY以及DEFERROR_LOG_FLUSH。 例如,为了改变一个列族的最大大小为128MB,使用如下命令: hbase> alter ‘table’,METHOD=>’table_att’,MAX_FILESIZE=>’12345678’ 也可以使用一个命令进行多次变更: hbase> alter ‘table’,{NAME=>’fam1’},{NAME=’fam2’,METHOD=’delete’} |
alter_status |
这个可以给出alter命令的状态。 hbase>alter_status ‘tableName’ |
alter_async |
不管alter是否完成,这个命令不等待所有的region获得模式的改变。 hbase> alter_async ‘t1’,NAME=>’f1’,METHOD=>’delete’ |
disable |
为了删除或更改而禁用表。 hbase> disable ‘tableName’ |
disable_all |
这将禁用匹配给定正则表达式的所有表。 hbase> disable_all ‘table*’ |
drop |
删除HBase中的表。在删除表之前必须先禁用。 hbase> disable ‘tableName’ hbase> drop ‘tableName |
drop_all |
这将删除匹配给定正则表达式的所有表。 hbase> drop_all ‘table*’ |
enable |
在更改之后启用表。 hbase> enable ‘tableName’ |
enable_all |
启用匹配给定正则表达式的所有表。 hbase> enable_all ‘table*’ |
delete |
删除一行中一个单元格的值。 hbase> delete ‘table’,’row1’,’colFam:name’ 这会删除row1中name列的值 |
Deleteal |
删除一个表的完整行或指定列。 deleteall ‘table’,’row1’ 这会删除整个row1 deleteall ‘table’,’row1’,’colFam:name’ 这也会删除row1中的name列 |
truncate |
这将禁用表、删除表、并重建表模式。所以当drop时,需要手动禁用表,然后再进行删除。如果只是想删除数据而不是删除表模式,可以使用truncate,它会自动删除并重新创建被删除的表模式: hbase> truncate |
3、数据创建命令
命令 |
描述 |
create |
这个命令用来创建制定模式的新表。 hbase> create ‘tableName’, ’cf1’ 这将创建一个列族为cf1的表。然后可以添加数据和动态添加列。 hbase> create ‘tableName’, {NAME=’colFam1’,’NAME=colFam2’,versions=>5} 这将创建一个列族为colFam1、colFam2,有5个版本记录的表。 |
4、数据读取命令
命令 |
描述 |
scan |
这个命令遍历表中的行并显示到标准输出。这将列出表中所有的记录。扫描器可能包括TIMERANGE、FILTER、LIMIT、STARTROW、STOPROW、TIMESTAMP、MAXLENGHT以及COLUMNS。如果没有指定列,所有的列将被扫描。为了扫描一个列族的所有成员,让列修饰符为空。如’col_family:’。 hbase> scan ‘.META’ hbase> scan ‘.META’, {COLOUMNS=>’info:regioninfo’} hbase> scan ‘t1’, {COLUMN=>[‘c1’, ‘c2’], LIMIT=>10,STARTROW=>’xyz’} hbase> scan ‘t1’, {COLUMNS=>’c1’, TIMERANGE=>[1303668804,1302668904]} |
get |
通过表明、行、选项、列字典、时间戳、时间范围以及版本获取行或单元格。 hbase> get ‘tableName’, ‘row1’ hbase> get ‘tableName’, ‘row1’, {TIMESTAMP=>[ts1,ts2]} hbase> get ‘tableName’, ‘row1’, {COLOUMN=>’c1’} hbase> get ‘tableName’, ‘row1’, {COLOUMN=>[’c1’, ‘c2’, ‘c3’]} hbase> get ‘tableName’, ‘row1’, {COLOUMN=>’c1’, TIMESTAMP=>ts1} hbase> get ‘tableName’, ‘row1’, {COLOUMN=>’c1’, TIMESTAMP=>[ts1,ts2],VERSIONS=>4} hbase> get ‘tableName’, ’row1’, ‘c1’ hbase> get ‘tableName’, ’row1’, ‘c1’, ’c2’ hbase> get ‘tableName’, ’row1’, [ ‘c1’, ‘c2’] |
get_counter |
这会返回指定表/行/列位置的单元格计数器的值。一个单元格可以通过HBase中原子自增函数来进行管理,并且数据应该是二进制编码。 hbase> get_counter ‘t1’, ‘r1’, ‘c1’ |
incr |
增加指定表/行/列位置单元格的值。为了使得表t1中的r1行c1列中的单元格的值增加1(可忽略)或者10,可以这么做: hbase> incr ‘t1’, ‘r1’, ‘c1’ hbase> incr ‘t1’, ‘r1’, ‘c1’, 1 hbase> incr ‘t1’, ‘r1’, ‘c1’, 10 |
5、复杂的管理命令
命令 |
描述 |
close_region |
关闭一个region。这个关闭操作是没有master参与的(它并不知道关闭操作)。一旦该region是关闭的,它将保持关闭。使用assign可重新打开/分配。使用unassigned或move可分配到集群的其他region上。 hbase> close_region ‘regionName’ hbase> close_region ‘regionName’, ‘REGIONSERVER_IP:PORT’ |
assign |
分配一个region并强制将分配的这个region设置为true。 |
balance_switch |
启用/禁用平衡器并返回到之前平衡器的状态。 Hbase> balance_switch true Hbase> balance_switch false |
balancer |
HBase具有一个内置的功能,称为平衡器,一旦启动,默认每5分钟运行一次,它将尝试让指定RegionServer分配的region保持平衡。这将表明HBase上的平衡器是否启用。 |
compact |
压缩指定表的所有region |
flush |
刷新指定表的所有region到磁盘上。 hbase> flush ‘tableName’ hbase> flush ‘regionName’ |
major_compact |
这个命令将在指定表上进行大合并 |
move |
移除一个region。 hbase> move ‘ENCODE_REGIONNAME’ hbase> move ‘ENCODE_REGIONNAME’, ‘SERVER_NAME’ |
split |
拆分一个表和一个独立的region |
unassign |
这个命令会取消RegionServer上的分配 |
hlog_roll |
开始写日志到一个新文件。RegionServer的名称应作为参数。 hbase> hlog_roll |
list_peers |
这会列出集群中所有的复制节点。 hbase > list_peers |
6、安全命令
命令 |
描述 |
grant |
这个命令用来授予用户特定的权限。授予权限是零或者来自更多字母序列,RWXCA:R表示读,W表示写,X表示执行,C表示创建,A表示管理。 hbase> grant ‘userName’, ‘RWXCA’ hbase> grant ‘userName’, ‘RWC’, ‘table1’, ‘colFam’ ,’column’ |
revoke |
回退/撤销访问权。 hbase> revoke ‘userName’, ‘table’, ‘colFam’, ‘column’ |
user_permission |
habse> user_permission ‘userName’ |
7、命名空间
命令 |
描述 |
create_namespace |
创建命名空间。 hbase> create_namespace ‘tableStugroup’ hbase> ’namespace:table’, ‘colFam’ 这将在namespace命名空间中创建列族为colFam的一张表。 |
drop_namespace |
这用于删除命名空间。 hbase> drop_namespace ‘snamespace’ |
alter_namespace |
hbase> alter_namespace ‘snamespace’, {METHOD=>’set’, ‘PROPERTY_NAME’=>‘PROPERTY_VALUE’} |
list_namespace_tables |
列出命名空间中的表。 hbase> list_namespace_tables ‘namespace’ |
list_namespace |
列出所有的命名空间。 hbase> list_namespace |
describe_namespace |
描述命名空间 hbase> describe_namespace |