Hbase 安装| shell操作

GFS -->hdfs
mapreduce --->hadoop mr
bigtable-->hbase

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统

海量存储;列式存储;极易扩展;高并发;稀疏(针对HBase列的灵活性,在列族中,你可以指定任意多的列;稀疏性体现了它的非结构化特点)

hbase是一个基于hdfs的列式存储系统,可以用廉价pc组建集群,对10亿行百万列的数据量级提供随机实时读写。

标示 列族
rowkey column family
列族中有若干列,列并不是它的结构;

HBase安装

1 Zookeeper正常部署
首先保证Zookeeper集群的正常部署,并启动之

[kris@hadoop101 zookeeper-3.4.10]$ bin/zkServer.sh start
[kris@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start
[kris@hadoop103 zookeeper-3.4.10]$ bin/zkServer.sh start
View Code

2 Hadoop正常部署
Hadoop集群的正常部署并启动

[kris@hadoop101 hadoop-2.7.2]$ sbin/start-dfs.sh
[kris@hadoop102 hadoop-2.7.2]$ sbin/start-yarn.sh
View Code


3 HBase解压
解压HBase到指定目录
[kris@hadoop101 software]$ tar -zxvf hbase-1.3.1-bin.tar.gz -C /opt/module
4 HBase配置
修改HBase对应的配置文件
1)hbase-env.sh修改内容

export JAVA_HOME=/opt/module/jdk1.8.0_144
export HBASE_MANAGES_ZK=false

2)hbase-site.xml修改内容

<configuration>
    <property>     
        <name>hbase.rootdir</name>     
        <value>hdfs://hadoop101:9000/hbase</value>               
    </property>

    <property>   
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

   <!-- 0.98后的新变动,之前版本没有.port,默认端口为60000(可省略) -->
    <property>
        <name>hbase.master.port</name>
        <value>16000</value>
    </property>

    <property>
        <name>hbase.zookeeper.quorum</name>
          <value>hadoop101,hadoop102,hadoop103</value>
    </property>
    
<!-- 参照zk的zoo.cfg文件中的dataDir值 -->
    <property>   
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/module/zookeeper-3.4.10/zkData</value>
    </property>
</configuration>
View Code

  说明:hbase.rootdir:这个目录是region server的共享目录,用来持久化Hbase 。

    hbase.cluster.distributed :Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。

3)hbase/conf/regionservers

hadoop101
hadoop102
hadoop103
View Code

4)软连接hadoop配置文件到HBase

[kris@hadoop101 module]$ ln -s /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml
[kris@hadoop101 module]$ ln -s /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml
View Code

 

5 HBase发送到其他集群
  [kris@hadoop101 module]$ xsync hbase/
6 HBase服务启动
  1)启动方式1

启动前确保时间是同步的;因为要hbase有version,所以要保证时间的一致性

[kris@hadoop101 ~]$ date
2019年 03月 05日 星期二 09:24:52 CST 
[kris@hadoop102 module]$ date
2019年 03月 05日 星期二 09:24:52 CST 
[kris@hadoop103 ~]$ date
2019年 03月 05日 星期二 09:24:52 CST
View Code

[kris@hadoop101 hbase]$ bin/hbase-daemon.sh start master
[kris@hadoop101 hbase]$ bin/hbase-daemon.sh start regionserver
提示:如果集群之间的节点时间不同步,会导致regionserver无法启动,抛出ClockOutOfSyncException异常。

修复提示:

a、同步时间服务
b、属性:hbase.master.maxclockskew设置更大的值
<property>
        <name>hbase.master.maxclockskew</name>
        <value>180000</value>
        <description>Time difference of regionserver from master</description>
 </property>
View Code

  2)启动方式2
[kris@hadoop101 hbase]$ bin/start-hbase.sh
对应的停止服务:
[kris@hadoop101 hbase]$ bin/stop-hbase.sh
7 查看HBase页面
启动成功后,可以通过“host:port”的方式来访问HBase管理页面,例如:
  http://hadoop101:16010

jar包冲突//启动时若出现hadoop和hbase下的jar包冲突,可删掉一个;不删也不影响运行
[kris@hadoop101 lib]$ rm -rf slf4j-log4j12-1.7.5.jar 

 

HBase Shell操作

复制代码
1)进入HBase客户端命令行
[kris@hadoop101 hbase]$ bin/hbase shell
2)查看帮助命令
hbase(main):001:0> help
hbase(main):001:0> help ‘create’
3)查看当前数据库中有哪些表
   查看所有的数据库:list_namespace
   查看某个数据库下的所有表:list_namespace_tables ‘库名’
hbase(main):002:0> list
复制代码

 

复制代码
namespace相关的操作
create_namespace 'my_ns'
drop_namespace 'my_ns'
alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}

建表 create 表名 , 列族中有若干列 create
'student', 'cf1' desc 'student' 隐式列rowkey put 'default:student', '1001', 'cf1:name', 'alex' hbase(main):032:0> put 'student', '1002', 'cf1:salary', '20000' hbase(main):031:0> put 'student', '1002', 'cf1:hoby', 'java' scan 'student' put 'student', '1002', 'cf1:hoby', 'math' delete 'student' '1000', 'cf1:age'{左值要大写=>‘1000’, } [ ) hbase(main):036:0> scan 'student', {STARTROW=>'1001', STOPROW=>'1001'} hbase(main):037:0> scan 'student', {STARTROW=>'1001'} ROW COLUMN+CELL 1001 column=cf1:age, timestamp=1551762695324, value=22 1001 column=cf1:gender, timestamp=1551762910336, value=male 1001 column=cf1:name, timestamp=1551762679483, value=alex 1002 column=cf1:hoby, timestamp=1551763319863, value=math 1002 column=cf1:job, timestamp=1551763148832, value=bigData 1002 column=cf1:name, timestamp=1551763038621, value=kris 1002 column=cf1:salary, timestamp=1551763126022, value=20000 2 row(s) in 0.0230 seconds hbase(main):038:0> scan 'student', {STOPROW=>'1002'} get 'student', '1000', 'cf1:name' hbase(main):040:0> get 'student', '1001', 'cf1:name' delete 'student', '1001', 'cf1:name' deleteall 'student', '1001' truncate 'student' disable 'student' drop 'student' hbase(main):041:0> count 'student' 2 row(s) in 0.0230 seconds => 2 rowkey是根据自动字典排序的
复制代码

version版本,毫秒数时间戳即默认版本号,scan默认的是加载最新的版本号的数据;

RAW最原始数据;VERSION=>4是本次查询可以看到4个版本的值
它是没有真正的修改,只是在后边追加

flush由内存到hdfs,不是最新的就会丢弃

 长整型longint,也可自定义 倒叙排列

复制代码
hbase(main):013:0> create 'stu1', 'cf1', {NAME=>'cf2', VERSIONS=>3}
0 row(s) in 1.2800 seconds

=> Hbase::Table - stu1
hbase(main):014:0> desc 'stu1'
Table stu1 is ENABLED                                                                                                     
stu1                                                                                                                      
COLUMN FAMILIES DESCRIPTION                                                                                               
{NAME => 'cf1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENC
ODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536',
 REPLICATION_SCOPE => '0'}                                                                                                
{NAME => 'cf2', BLOOMFILTER => 'ROW', VERSIONS => '3', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENC
ODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536',
 REPLICATION_SCOPE => '0'}                                                                                                
2 row(s) in 0.0260 seconds
复制代码

往里put数据

hbase(main):015:0> put 'stu1', '1001', 'cf1:name', 'alex1'
0 row(s) in 0.1060 seconds

hbase(main):016:0> put 'stu1', '1001', 'cf1:name', 'alex2'
0 row(s) in 0.0090 seconds

hbase(main):017:0> put 'stu1', '1001', 'cf1:name', 'alex3'
0 row(s) in 0.0050 seconds

hbase(main):018:0> put 'stu1', '1001', 'cf1:name', 'alex4'
0 row(s) in 0.0060 seconds

hbase(main):019:0> put 'stu1', '1001', 'cf1:name', 'alex5'
0 row(s) in 0.0050 seconds

hbase(main):020:0> put 'stu1', '1001', 'cf2:name', 'kris1'
0 row(s) in 0.0090 seconds

hbase(main):021:0> put 'stu1', '1001', 'cf2:name', 'kris2'
0 row(s) in 0.0110 seconds

hbase(main):022:0> put 'stu1', '1001', 'cf2:name', 'kris3'
0 row(s) in 0.0060 seconds

hbase(main):023:0> put 'stu1', '1001', 'cf2:name', 'kris4'
0 row(s) in 0.0060 seconds

hbase(main):024:0> put 'stu1', '1001', 'cf2:name', 'kris5'
0 row(s) in 0.0060 seconds
View Code
复制代码
hbase(main):025:0> scan 'stu1'
ROW                             COLUMN+CELL                                                                               
 1001                           column=cf1:name, timestamp=1551780927829, value=alex5                                     
 1001                           column=cf2:name, timestamp=1551780984629, value=kris5                                     
1 row(s) in 0.0140 seconds
hbase(main):027:0> scan 'stu1', {VERSIONS=>6, RAW=>true}
ROW                             COLUMN+CELL                                                                               
 1001                           column=cf1:name, timestamp=1551780927829, value=alex5                                     
 1001                           column=cf1:name, timestamp=1551780925379, value=alex4                                     
 1001                           column=cf1:name, timestamp=1551780923004, value=alex3                                     
 1001                           column=cf1:name, timestamp=1551780920152, value=alex2                                     
 1001                           column=cf1:name, timestamp=1551780916196, value=alex1                                     
 1001                           column=cf2:name, timestamp=1551780984629, value=kris5                                     
 1001                           column=cf2:name, timestamp=1551780982196, value=kris4                                     
 1001                           column=cf2:name, timestamp=1551780979552, value=kris3                                     
 1001                           column=cf2:name, timestamp=1551780977159, value=kris2                                     
 1001                           column=cf2:name, timestamp=1551780972972, value=kris1                                     
1 row(s) in 0.0240 seconds

hbase(main):028:0> flush 'stu1'
0 row(s) in 0.4880 seconds

hbase(main):029:0> scan 'stu1', {VERSIONS=>6, RAW=>true}
ROW                             COLUMN+CELL                                                                               
 1001                           column=cf1:name, timestamp=1551780927829, value=alex5                                     
 1001                           column=cf2:name, timestamp=1551780984629, value=kris5                                     
 1001                           column=cf2:name, timestamp=1551780982196, value=kris4                                     
 1001                           column=cf2:name, timestamp=1551780979552, value=kris3                                     
1 row(s) in 0.0390 seconds
复制代码

墓碑数据
删除会把删掉的数据让他们成为墓碑
会新增一条最新的墓碑数据
会存到hdfs,但最终会被删除

复制代码
hbase(main):038:0> put 'stu1', '1001', 'cf1:age', '22'
0 row(s) in 0.0430 seconds
hbase(main):040:0> put 'stu1', '1001', 'cf1:name', 'alex6'
0 row(s) in 0.0060 seconds

hbase(main):041:0> scan 'stu1', {VERSIONS=>6, RAW=>true}
ROW                             COLUMN+CELL                                                                               
 1001                           column=cf1:age, timestamp=1551782031431, value=22                                         
 1001                           column=cf1:name, timestamp=1551782055498, value=alex6                                     
 1001                           column=cf1:name, timestamp=1551780927829, value=alex5                                     
 1001                           column=cf2:name, timestamp=1551780984629, value=kris5                                     
 1001                           column=cf2:name, timestamp=1551780982196, value=kris4                                     
 1001                           column=cf2:name, timestamp=1551780979552, value=kris3                                     
1 row(s) in 0.0110 seconds

hbase(main):042:0> delete 'stu1', '1001', 'cf1:name'
0 row(s) in 0.0580 seconds

hbase(main):043:0> scan 'stu1'
ROW                             COLUMN+CELL                                                                               
 1001                           column=cf1:age, timestamp=1551782031431, value=22                                         
 1001                           column=cf2:name, timestamp=1551780984629, value=kris5                                     
1 row(s) in 0.0160 seconds

hbase(main):044:0> scan 'stu1', {VERSIONS=>6, RAW=>true}
ROW                             COLUMN+CELL                                                                               
 1001                           column=cf1:age, timestamp=1551782031431, value=22                                         
 1001                           column=cf1:name, timestamp=1551782116703, type=DeleteColumn                               
 1001                           column=cf1:name, timestamp=1551782055498, value=alex6                                     
 1001                           column=cf1:name, timestamp=1551780927829, value=alex5                                     
 1001                           column=cf2:name, timestamp=1551780984629, value=kris5                                     
 1001                           column=cf2:name, timestamp=1551780982196, value=kris4                                     
 1001                           column=cf2:name, timestamp=1551780979552, value=kris3                                     
1 row(s) in 0.0170 seconds
复制代码
posted @ 2020-02-19 11:46  啊啊啊啊鹏  阅读(320)  评论(0编辑  收藏  举报
1 2