HBase是Google Bigtable的开源实现,通过在Windows下部署HBase,可以解决在单机开发中用到HBase问题,项目正式上线时,可以使用Linux分布式部署的HBase。本文hbase的数据保存在磁盘上。
![9e8e52b7562f2862a44b73ec5c8f972d.png](https://i-blog.csdnimg.cn/blog_migrate/fba873b756ba5fc8b7477bbdcbf76274.jpeg)
1、 搭建环境
下载HBase
从官网上下载hbase-2.1.5-bin.tar安装包。
下载地址:https://hbase.apache.org/downloads.html,
下载hbase-2.1.5-bin.tar,解压缩到D:hadoophbase-2.1.5。
![1f3e4981dbf77322f617209d68ace851.png](https://i-blog.csdnimg.cn/blog_migrate/fd3feede44ee8702788fc39c1ae34e76.jpeg)
可能需要两个jar包:htrace-core4-4.1.0-incubating.jar和jansi-1.8.jar否则启动会报如下两个错误。
如有需要可私信关键词:20190616,获取下载地址。
![076436a4309ef304f86ee98468c67655.png](https://i-blog.csdnimg.cn/blog_migrate/d84aa65d6b701b8b9156fc59e4153509.jpeg)
![adc573bb86b8f9e6bd673fdfd1a5a42f.png](https://i-blog.csdnimg.cn/blog_migrate/4bc9c47042f0cfea4c98fed28e37d0a5.jpeg)
2、 配置 Hbase
1. 配置hbase-env.cmd
首先进入目录D:hadoophbase-2.1.5conf找到hbase-env.cmd
![f58c8338b30021beb949712e13af93a2.png](https://i-blog.csdnimg.cn/blog_migrate/5914396e8b6efd9a607721064970b905.jpeg)
用记事本打开,在文件的末尾添加下面配置(HBASE_MANAGES_ZK为true时使用默认自带的):
set HBASE_MANAGES_ZK=true
Hbase提供了HBASE_MANAGES_ZK变量来设置是否管理zookeeper集群,默认情况,HBASE_MANAGES_ZK设置为true
如果没用配置java。可在这个文件末尾在增加一行,指定java路径:
set JAVA_HOME= D:Javajdk1.8.0_181
以管理员方式启动 CMD 命令提示符
进入 D:hadoophbase-2.1.5conf 目录,执行 hbase-env.cmd
![e14369b96c61b67e8af7161e7dc877a6.png](https://i-blog.csdnimg.cn/blog_migrate/0bd486a6cc9d3aa95ffd01b064d64604.jpeg)
2. 配置core-site.xml
用记事本打开,在文件的末尾间添加下面配置:
hbase.masterlocalhost:60000hbase.rootdirfile:///D:/hadoop/hbase-2.1.5/data/roothbase.tmp.dirD:/hadoop/hbase-2.1.5/data/tmphbase.zookeeper.quorumlocalhosthbase.zookeeper.property.dataDirD:/hadoop/hbase-2.1.5/data/zoohbase.cluster.distributedfalse
hbase.rootdir:来设置文件的保存位置指定一个文件夹,,被所有regionserver共享,例如:file:///you/hbase-data/path,你建立的HBase中的表和数据就直接写到了你的磁盘上,同样你也可以指定你的分布式文件系统HDFS的路径例:如:hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR,这样就写到了你的分布式文件系统上了。不改这个配置,数据会在重启的时候丢失。
hbase.tmp.dir:本地文件系统的临时文件夹。可以修改到一个更为持久的目录上。(/tmp会在重启时清除)默认:/tmp/hbase-${user.name}
hbase.zookeeper.quorum:重要的也是必须设置的,启动zk的服务器列表,逗号分隔,cluster模式下必须设置,默认是localhost,hbase客户端也需要设置这个值去访问zk;
hbase.zookeeper.property.dataDir:zk的配置,快照的存储位置
默认:${hbase.tmp.dir}/zookeeper;
hbase.cluster.distributed:hbase集群模式运作与否的标志,默认是false,开启需要设置为true,false时启动hbase会在一个jvm中运行hbase和zk;
3、 启动 Hbase
以管理员方式启动 CMD 命令提示符 进入 D:hadoophbase-2.1.5bin 目录
start-hbase.cmd,启动成功会开启 hbase 的窗口
![f32704ccbcb00658fd7c43ff44f08e6d.png](https://i-blog.csdnimg.cn/blog_migrate/3ef99780888f936e516cdc4c3989ad5c.jpeg)
4、 访问web
http://127.0.0.1:16010/master-status
![c6137aa5a041cc5bbf494b626da197cb.png](https://i-blog.csdnimg.cn/blog_migrate/7648dd25a8b15876f071e253348f8287.jpeg)
5、 Hbase Shell基本操作
1. 进入shell
以管理员方式启动 CMD 命令提示符 进入 D:hadoophbase-2.1.5bin 目录,执行命令Hbase shell
启动成功会开启 hbase 的窗口
![7110dfdae650ffe56219e0576cf2dd7c.png](https://i-blog.csdnimg.cn/blog_migrate/3169fce9d3feb183f9114edf9e2f3f91.jpeg)
2. 使用 shell
输入 help 可以看到一列 shell 命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。
![fd61a50ffa81a9bfca3ab770d3d11e1d.png](https://i-blog.csdnimg.cn/blog_migrate/e4a84d853885ef5c723670f0ee8e5a0c.jpeg)
3. 创建表
创建一个名为 test 的表,这个表只有一个 列族 为 cf。可以列出所有的表来检查创建情况, 然后插入些值。
create 'test_account','id','realname','username','age'
![81ea2e4c134b32a8d23ddde89b9c9a00.png](https://i-blog.csdnimg.cn/blog_migrate/fe50be4e9637f4c63dfa4a6bbdfda2ea.jpeg)
可以使用list命令来查看当前HBase里有哪些表。使用describe命令来查看表结构。
![d54eebd9870d3e5c91e30316fd4bd171.png](https://i-blog.csdnimg.cn/blog_migrate/d0c0b766d5df70a44df1e2223de8f4cd.jpeg)
4. 按设计的表结构插入值
列族里边可以自由添加子列很方便。如果列族下没有子列,加不加冒号都是可以的。
put 'test_account','1','id:','1'put 'test_account','1','realname:','李晓燕'put 'test_account','1','username:','lxy'put 'test_account','1','age:','18'put 'test_account','2','id:','2'put 'test_account','2','realname:','张国鹏'put 'test_account','2','username:','zgp'put 'test_account','2','age:','23'
![cb14fc24284f9871326be5e23111a00c.png](https://i-blog.csdnimg.cn/blog_migrate/6c5954fec6a97cb78d3b7cf471e79da4.jpeg)
put命令比较简单,只有这一种用法:
put't1','r1','c1','value', ts1
t1指表名,r1指行键名,c1指列名,value指单元格值。ts1指时间戳,一般都省略掉了。
5. 根据键值查询数据
get 'test_account','1'get 'test_account','2','realname'
![07564bbb793c9f61fcf60fc6e1d44ac2.png](https://i-blog.csdnimg.cn/blog_migrate/471d1aa8cf6ea9f22f7757db1248d350.jpeg)
get有用法如下:
get't1′,'r1′get't1′,'r1′, {TIMERANGE => [ts1, ts2]}get't1′,'r1′, {COLUMN =>'c1′}get't1′,'r1′, {COLUMN => ['c1','c2','c3']}get't1′,'r1′, {COLUMN =>'c1′, TIMESTAMP => ts1}get't1′,'r1′, {COLUMN =>'c1′, TIMERANGE => [ts1, ts2], VERSIONS => 4}get't1′,'r1′, {COLUMN =>'c1′, TIMESTAMP => ts1, VERSIONS => 4}get't1′,'r1′,'c1′get't1′,'r1′,'c1′,'c2′get't1′,'r1′, ['c1','c2']
6. 扫描所有数据
scan 'test_account'
也可以指定一些修饰词:TIMERANGE, FILTER, LIMIT,STARTROW, STOPROW, TIMESTAMP, MAXLENGTH,or COLUMNS。没任何修饰词,就会显示所有数据行。
![f1f09ba051f59d6818744ea7d7782a0a.png](https://i-blog.csdnimg.cn/blog_migrate/54209aeb73a98719fe63306cc9035db7.jpeg)
7. 删除指定数据
get 'test_account','2','realname'delete 'test_account','2','realname'get 'test_account','2','realname'get 'test_account','1','age'delete 'test_account','1','age'get 'test_account','1','age'
![0f038954a96e5984ac8dd6bbba7ae745.png](https://i-blog.csdnimg.cn/blog_migrate/3d2743bf0eb2cc3faed6f5687f95cfe3.jpeg)
deleteall命令,可以进行整行的范围的删除操作,慎用!
deleteall 'test_account','1'
![a2d2e5d2c9166c1ed0e6af09bf5e879f.png](https://i-blog.csdnimg.cn/blog_migrate/3f6f6dc746ebf8d94523e159e4e5aa48.jpeg)
truncate命令,可以进行全表删除操作。
truncate 'test_account'
![a8d5d00b852d07e1517f5f3e44d2cc7f.png](https://i-blog.csdnimg.cn/blog_migrate/cb09b7a828c8316cf1161e6643a24703.jpeg)
8. 删除表
Hbase删除表,必须先 disable 再 drop 这张表
listdisable 'test_account'drop 'test_account'list
![a263b278a1afe2d8d5f7c734fe4803f6.png](https://i-blog.csdnimg.cn/blog_migrate/c30ed1e1bd39b73f6729c0637b46dfbc.jpeg)
9. 关闭 shell
![f7e27b96b64973f90da3346f3994e18e.png](https://i-blog.csdnimg.cn/blog_migrate/443795264d4bb745a0e1a47237c88dc6.jpeg)