Hbase集群安装配置

来源:互联网 发布:淘宝会员名大全霸气 编辑:程序博客网 时间:2024/06/05 07:49

一、   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