写在前面
在老师的要求下,我们学习了hbase的相关操作。hbase是一个非关系型数据库,其存储机构与关系型数据库有着很大的不同,同时hbase也是一个分布式数据库。其查询效率很高。
准备环境
hbase建立在hadoop的HDFS和zookeeper的基础上,所以要配置hbase之前首先要把HDFS和zookeeper配置好。这里我配置的是分布式的hbase,所以要建立在已配好hdfs和zookeeper的基础上。
首先使用sftp软件把压缩包传到/opt/software下,然后解压到/opt/module/目录下:
[liuge@hadoop03 software]$ tar -zxvf hbase-1.3.1-bin.tar.gz -C /opt/module/
之后我们就可以开始配置了。
配置分布式hbase
首先正确启动Zookeeper和HDFS:
[liuge@hadoop03 zookeeper-3.4.10]$ bin/zkServer.sh start
[liuge@hadoop04 zookeeper-3.4.10]$ bin/zkServer.sh start
[liuge@hadoop05 zookeeper-3.4.10]$ bin/zkServer.sh start
[liuge@hadoop03 hadoop-2.7.2]$ sbin/start-dfs.sh
这里可以暂时不启动yarn,因为用不到MapReduce。
首先修改hbase-env.sh(在conf目录下):
export JAVA_HOME=/opt/module/jdk1.8.0_202
export HBASE_MANAGES_ZK=false
这里可以把这两行注释掉,这样启动的时候就不会报警告了:
之后,修改hbase-site.xml:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop03: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>hadoop03,hadoop04,hadoop05</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/zookeeper-3.4.10/zkData</value>
</property>
</configuration>
这里需要注意的点是,hbase.rootdir的value里要把hadoop03换成你自己的主机名或者ip地址,hbase.zookerper.quorum的value要把这三个换成你自己的主机名或者ip地址,hbase.zookeeper.property.dataDir的value根据你自己配置的zookeeper目录设置。
打开regionservers,把三台主机名或者IP地址放进去:
hadoop03
hadoop04
hadoop05
之后,配置一下软连接hadoop配置文件到hbase:
[liuge@hadoop03 module]$ ln -s /opt/module/hadoop-
2.7.2/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml
[liuge@hadoop03 module]$ ln -s /opt/module/hadoop-
2.7.2/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml
最后,把配置好的Hbase分发到其他集群:
[liuge@hadoop03 module]$ xsync hbase/
到这里,配置就算是完成了。
启动Hbase
启动方式1
[liuge@hadoop03 hbase]$ bin/hbase-daemon.sh start master
[liuge@hadoop03 hbase]$ bin/hbase-daemon.sh start regionserver
启动方式2
[liuge@hadoop03 hbase]$ bin/start-hbase.sh
对应的停止方式为:
[liuge@hadoop03 hbase]$ bin/stop-hbase.sh
启动成功后,我们可以直接查看web界面,端口号为16010:
http://hadoop03:16010
这里的hadoop03要换成你自己的主机名或者ip地址。
hbase的shell操作
hbase作为一个数据库,肯定是API操作要更加重要,shell命令只是作为简单补充,这里只简单记录一下。
-
进入Hbase客户端:
[liuge@hadoop03 hbase]$ bin/hbase shell
-
查看帮助命令:
hbase(main):001:0> help
-
列出数据库中的所有表:
hbase(main):002:0> list
-
创建表:
hbase(main):002:0> create 'student','info'
-
插入数据到表
hbase(main):003:0> put 'student','1001','info:sex','male' hbase(main):004:0> put 'student','1001','info:age','18' hbase(main):005:0> put 'student','1002','info:name','Janna' hbase(main):006:0> put 'student','1002','info:sex','female' hbase(main):007:0> put 'student','1002','info:age','20'
-
扫描查看表数据:
hbase(main):008:0> scan 'student' hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW => '1001'} hbase(main):010:0> scan 'student',{STARTROW => '1001'}
-
查看表结构
hbase(main):011:0> describe ‘student’
-
更新指定字段的数据(其实还是put):
hbase(main):012:0> put 'student','1001','info:name','Nick' hbase(main):013:0> put 'student','1001','info:age','100'
-
查看指定行或指定列族:列的数据:
hbase(main):014:0> get 'student','1001' hbase(main):015:0> get 'student','1001','info:name'
-
统计表数据行数:
hbase(main):021:0> count 'student'
-
删除表数据:
删除某rowKey的全部数据: hbase(main):016:0> deleteall 'student','1001' 删除某rowKey的某一列数据: hbase(main):017:0> delete 'student','1002','info:sex'
-
清空表数据:
hbase(main):018:0> truncate 'student'
提示 清空表前先disable,再truncate
-
删除表:
首先要让表disable: hbase(main):019:0> disable 'student' 然后才能把表drop: hbase(main):020:0> drop 'student'
-
变更表信息:
hbase(main):022:0> alter 'student' {NAME=>'info',VERSIONS=>3} hbase(main):022:0> get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
总结
总的来说,这篇文章简单记录了一下hbase的配置及shell操作,最重要的API操作等我过几天再整理一篇博客,那个内容要更多。