Hbase总结

总结内容

  • 为什么要使用hbase
  • 介绍hbase
  • 实战hbase单机和高可用版本
  • 客户端命令

在这里插入图片描述

1.为什么要使用hbase

Redis:

  • 同时有1w人访问;
  • 查询使用的最频繁;
  • 查询20次,查询的结果都是一样的(因为木有新的记录进去);你拿着查询的第一次结果,做一个缓存,用户后19次查询,就不用查询数据库了;
  • 对于mysql只做了一次查询;查询的第一次数据已经放到缓存中,后19次直接从缓存中取数据;(mysql就少执行了19次sql语句)
  • 缓存的数据如何更新:CUD操作(不是很频繁),直接清除缓存;更新缓存;(缓存工作于内存中)
    缓存的条件
  • 记录超级大,超级大,超级大,
  • 记录经常查询,不经常更新;
  • 命中率;
  • 放缓存耗时20分钟;
    缓存有三个级别;缓存就是一个容器,(List,Set,Map)
  • javase容器,Map;缺点:程序重启了,缓存的数据已经木有了(JVM的所有操作都是在内存中)
  • 早期的Memcache:Memcache是一个独立于java的软件,java重启只要memcache不重启,缓存的数据依然有效;缺点:电脑重启,所有的软件都关闭,当然memcache也得关闭(软件的logo是一个狐狸头)
  • 最牛逼的Redis:把数据放到内存中,同时也会在合适的时间放到硬盘中;电脑重启多次,磁盘的数据不会丢;
所有的缓存软件就当成一个map使用;
  • Map和数据库中的表做一个对比
    在这里插入图片描述
    把学习的Hbase当成一个Map使用;
    Hbase是大数据体系下面的,Redis是一个javaweb体系下面的;

2.介绍hbase

  • Hbase:是谷歌三篇论文的bigtable的实现
  • 官网:http://hbase.apache.org/
  • Hbase:hadoop的database;
  • 非关系型数据库NoSql,Redis,memcache,mongodb,Hbase

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

	Bin:可执行文件
	Conf:配置文件
	Docs:文档
	Hbase-webapp:网页
	Lib:jar包
	readMe.txt:读我

在这里插入图片描述
如果发现一个目录下面有好多个html文件,我们只找index.html

3.实战

tab键可以提示+补全

  • 随机选择一台服务器(node-3)
  • 将hbase上传到node-3服务器上;
执行的命令:
#所有的操作都是在/data/hbase目录下面;
 解压压缩包
tar -xzf hbase-2.1.1-bin.tar.gz
 去掉版本号
mv hbase-2.1.1 hbase
 删除文档
rm -rf docs/

在这里插入图片描述
在这里插入图片描述

  • 配置文件:(conf/hbase-env.sh)
    在这里插入图片描述
    在这里插入图片描述
  • 配置文件(conf/hbase-site.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- hadoop的数据存储位置 -->
	<property>
		<name>hbase.rootdir</name>
		<!-- 
			file:///:本地文件
			http://http协议
		-->
		<value>file:///data/hbase/data</value>
	</property>
	<!-- 
		zookeeper的目录
		hbase必须得有一个zookeepr;
		hbase自带了一个zookeeper
	 -->
	<property>
		<name>hbase.zookeeper.property.dataDir</name>
		<value>/data/hbase/zookeeper</value>
	</property>
	<!-- 
		hbase自带的一个安全机制
	-->
	<property>
		<name>hbase.unsafe.stream.capability.enforce</name>
		<value>false</value>
	</property>
</configuration>
  • 启动服务器
 bin/start-hbase.sh
  • 停止服务器
bin/stop-hbase.sh
  • 访问网页
    http://node-3:16010
    在这里插入图片描述
    在这里插入图片描述

  • 目录结构
    在这里插入图片描述

  • 启动客户端:

 bin/hbase shell

在这里插入图片描述

  • 在hbase中敲的命令如下
    在这里插入图片描述

客户端的基本命令

帮助命令;所有的命令
help
Help ‘命令’,只列出此命令的帮助手册
help 'create_namespace'
Namespace
 列出所有的namespace
list_namespace
 创建一个命名空间
create_namespace 'mydata'
 描述namespace
describe_namespace 'mydata'
 
 删除namespace
drop_namespace 'mydata'
创建表
 psn:表名,cf:列族(随便起),cf:column family
create 'psn', 'cf' 
在mydata下面创建表
create 'mydata:psn1', 'cf' 
 
 查询表;查看所有表
List
list ‘namespace:.*’;查看此namespace下面所有的表
List ‘mydata:.*’
 
先禁用表,再删除表
disable 'mydata:psn1
 删除表;:左边的是namespace,不写默认是default;
drop 'mydata:psn1'
 
记录的CRUD
查询所有记录
scan 'mydata:psn1'
 
 插入记录
put 表名,键, 列族:列名,值(列名可以省,但是只能有一个)
put 'mydata:psn1', 'key01','cf','test'
 
又增加了一个列;
增加第二列,只要键相同就可以;
cf:列族,:后面的是列族下面的列
put 'mydata:psn1', 'key01','cf:age','20'
 
修改值:得是键一样,列族+列得一样
put 'mydata:psn1', 'key02','cf:name','100'
如果想增加新记录,只要键的值不一样就可以;
删除记录
delete 表名 键,列族+列名
delete 'mydata:psn1','key01','cf:age'
get取一条记录
Get 表名 , 键,取出键对应的所有列
 get 'mydata:psn1','key01'
 
 取出指定的列,
get 表名 , 键,{指定要查询的哪一列},column:一定得注意是大写
get 'mydata:psn1','key01',{COLUMN => 'cf:age'}
获取总条数:
count表名
count 'mydata:psn1'
删除全部记录
deleteall 表名,键
deleteall 'mydata:psn1','key01'
截断表(truncate)
truncate 表名
truncate 'mydata:psn1'

对比Hbase和Mysql

HbaseMysql
namespace数据库
列族(一群列)列是固定的
记录记录

本次小结先到这里,高可用有空会在文章末尾补充。
·
·
·

搭建高可用在这里插入图片描述

首先把hbase拷贝到四台虚拟机上

拷贝到其他虚拟机上:
 scp -r hbase/ node7-4:/data/hbase/
 scp -r hbase/ node7-3:/data/hbase/
 scp -r hbase/ node7-2:/data/hbase/
 注意自己的主机名和目录,请勿盲目复制。

在这里插入图片描述
四台虚拟机要免密钥
先启动zookeeper
启动hadoop;hbase要四台虚拟机所有的文件都放到hdfs上

 配置文件:(conf/regionservers )(配置的是小弟)
node7-1
node7-3
node7-4
配置文件:(conf/backup-masters )(配置的是小弟)
node7-1
node7-3
配置文件:(conf/hbase-site.xml )(配置的是小弟)(以下配置文件注意自己的主机名和端口号)

<?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(一定是active的namenode)
		 -->
		<value>hdfs://node7-1:8020/data/hbase</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>
	
	<!--配置 zookeepr-->
	<property>
		<name>hbase.zookeeper.quorum</name>
		<value>node7-1:2181,node7-2:2181,node7-3:2181</value>
	</property>
	<property>
		<name>hbase.zookeeper.property.dataDir</name>
		<!-- zookeeper的目录:data目录 -->
		<value>/data/hbase/zookeeper_data</value>
	</property>
<!-- 开启集群模式 -->
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>
</configuration>
配置文件:(conf/hbase-env.sh )(如下图)

在这里插入图片描述

 将配置文件同步到其它的服务器上
  scp -r conf/ node7-4:/data/hbase/
  scp -r conf/ node7-3:/data/hbase/
  scp -r conf/ node7-2:/data/hbase/
在想当大哥的服务器启动hbase;(node7-2)
bin/start-hbase.sh

在这里插入图片描述
访问:
http://jinghang04:16010/

在这里插入图片描述

停止服务(在大哥上停止)
bin/stop-hbase.sh

在这里插入图片描述

演示:
大哥挂了,所有的二哥会随机选择一个,并且充当大哥.

查看hbase所有使用到的文件(如下图):
在这里插入图片描述
因为Hbase连接hadoop是通过hdfs协议的,所有hadoop的配置文件是无法读取的。
我们要把hadoop所有的配置文件拷贝过来,就可以生效。
hbase往zookeeper中写的文件

在这里插入图片描述

如果想清空hbase的所有数据重新来一遍
清空hdfs
清空zookeeper

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值