1.Why
1.1.为什么要学习hbase
Web框架图
Model2
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9EkTykFRPFzZU5EM4wmYwhGWhxGZzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuIjMwATO0kTMzEjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 开发的顺序:从下到上
- 读别人代码的时候是从上到下
- 总结(共性)
所有的项目,数据都存储到了数据库中 数据库只认sql语句(crud)
用户会在网页上进行:点击,双击,右击,滑动此效果;会被jsp(Servlet)(java)翻译成sql语句,发送给数据库
Cud:是对数据库进行更改操作,R:对数据库进行查询操作;一张的crud:最常用的是R(查询);而每一次发送查询,都会发送一条sql语句;数据库见到sql语句就会执行;同样的查询会发送多条sql语句;如果发现sql语句执行的结果是一样的,直接只查询一次数据库;把查询的数据放到一个地儿(内存);下次查询的时候直接查询内存,这样会超级快;对于数据库来说减轻了压力;如果数据库里面的记录发生了修改,请顺手把缓存也更新一次3
- 缓存的条件
表里面的记录超级多;
表里面的记录不经常修改
命中率:得经常访问
- 缓存的分类:
Jvm的集合:map;缺点:jvm(tomcat)要是重启了咋办
早期的Memcache:它是一个独立的软件,使用的时候当成map使用;缺点:电脑重启咋办
Redis:把数据放到内存中,会定时的把数据放到磁盘中; Web项目映射到大数据项目中
- Web项目映射到大数据项目中
web项目 | 大数据 |
---|---|
磁盘 | Hdfs |
Db | hive |
缓存(Redis) | Hbase |
2.介绍
官网:http://hbase.apache.org/
- 谷歌的三篇论文
Gfs===>hadoop的hdfs
Mapreduce—>hadoop的mapReduce
bigTable—>Hbase
下载:http://hbase.apache.org/downloads.html
上图解析:
Bin:可执行文件
Conf:配置文件
Docs:帮助文档
Hbase-webapps:web界面
Lib:jar包
README.txt:帮助文档
3.配置单机版本
-
将下载好的HBase压缩包拉到虚拟机上
#解压目录
tar -xzvf hbase-2.2.2-bin.tar.gz
#重新命名
mv hbase-2.2.2/ hbase
#删除docs目录
rm -rf docs/(此目录是帮助文档,可删可不删)
-
修改hbase下的 conf hbase-env.sh配置文件
配置JAVE_HOME路径
如何查看java安装的目录?HBase配置及使用 - 修改hbase下的 conf hbase-site.xml配置文件HBase配置及使用
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<!--
file://表示的是本地目录
hdfs://表示的是hdfs的目录;
hdfs://namenode.example.org:8020/hbase
-->
<value>file:///data/hbase/data</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<!-- zookeeper的目录:data目录 -->
<value>/data/hbase/zookeeper_data</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
<description>
检查兼容性,如果设置为false,数据有可能丢失(这是一个警告)
Controls whether HBase will check for stream capabilities (hflush/hsync).
Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
with the 'file://' scheme, but be mindful of the NOTE below.
WARNING: Setting this to false blinds you to potential data loss and
inconsistent system state in the event of process and/or node failures. If
HBase is complaining of an inability to use hsync or hflush it's most
likely not a false positive.
</description>
</property>
</configuration>
- 启动hbase
bin/start-hbase.sh
如果启动报错,去查看日志
网页访问 :http://主机名:16010
- 停止
bin/stop-hbase.sh
- 启动客户端
bin/hbase shell
- 帮助文档
- 查看所有的命令 :Help
HBase配置及使用 查看指定命令的用法
help ‘create_namespace’
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191213201404439.png
创建一张表
create ‘表名’,’列族’(column family)
创建指定namespace目录下面的表;所有的表名左边要加上namespace,如果不加,默认是default
创建namespace
查看表结构
list 表名
插入数据
put 表名,键(主键),列的名字,值
put ‘test’,‘01’,‘cf:name’,‘zhangsan’
put ‘test’,‘01’,‘cf:age’,‘18’
查询
查询所有记录
scan 表名
根据主键查询
查询所有记录(这里相当于mysql里的 select * from test where id = 01;)
删除表(删除表一定要先停用表,不然无法删除)
停用表:disable 表名
drop ‘表名’
退出客户端:quit, exit
数据库mysql | Hbase |
---|---|
数据库 | Namespace |
表 | 表 |
记录 | 记录 |
列 | 列族下面才有列 |