赞
踩
目录
在HBase中,ZooKeeper用于管理和跟踪集群的状态信息和元数据。它负责选举主节点、协调分布式锁、监控节点健康状态等。HBase的每个节点都会与ZooKeeper建立连接,并通过ZooKeeper获取集群配置信息,以便在数据读写和节点故障转移过程中进行协调。
总结起来,ZooKeeper为HBase提供了必要的分布式协调和管理功能,使得HBase能够在一个大规模的分布式环境中稳定运行。本文部署Hbase所用到的是Zookeeper是自己安装的,没有用到Hbase自带的Zookeeper,所以要先安装Zookeeper。
使用开源工具MobaXterm将Hbase的安装包上传到Linux系统上的/opt/目录下,然后使用cd /opt/命令切换路径,解压安装包
cd /opt
tar -zxvf habase-1.4.8-bin.tar.gz -C /opt
安装Hbase需要修改的配置文件有四个,分别是profile、hbase-site.xml、hbase-env.sh、regionservers
修改hbase-env.sh文件前先切换到hbase路径下的conf文件夹
cd /opt/hbase-1.4.8/conf
vi hbase-env.sh
在hbase-env.sh文件中添加jdk的路径,即配置HBASE_MANAGES_ZK的值
当HBASE_MANAGES_ZK的值为true时,表示使用Hbase自带的Zookeeper集群; 当HBASE_MANAGES_ZK的值为flase时,表示不使用Hbase自带的Zookeeper集群而是使用自己安装的Zookeeper集群;
hbase-site.xml文件同样在/opt/hbase-1.4.8/conf目录下,直接vi hbase-site.xml进入文件编辑
编辑内容如下
在regionservers文件中添加主机名和集群的主机名
vi regionservers
vi /etc/profile 进入文件编辑添加以下代码
添加完环境变量后,使用scp命令将Hbase的相关配置文件和/etc/profile文件复制到另外两个节点
分发Hbase:
scp -r /opt/hbase-1.4.8/ slave1:/opt/
scp -r /opt/hbase-1.4.8/ slave2:/opt/
分发profile:
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
分发完后使环境变量生效需要进行刷新文件,在每个节点上执行source /etc/profile 命令
启动Hbase要先启动Hadoop集群和Zookeeper;启动Zookeeper需要 在每个节点上执行zkServer.sh start,启动hadoop只需要在主节点上执行start-all.sh命令就可以了。
启动完Zookeeper和Hadoop后在主节点上执行start-hbase.sh 命令
启动成功后查看进程,HMaster进程在,但是在浏览器上查看Master信息却失败了
并且进入hbase shell 使用list查看表的时候也失败了,看了同学写的博客后试了一下她说的有可能导致失败的原因,我把防火墙关闭后并且也把时间同步了,但是还是不成功。我又看到别的博主写的,如果之前启动过hbase保留的元数据导致的,然后我在zk客户端和hdfs上删了hbase目录后重启了Zookeeper后再次启动Hbase,发现还是失败,最后只能请教老师了。在老师的帮助下终于找到了原因,原来是在hbase-env.sh文件中少加了一行 source /etc/rofile ,系统找不到路径导致一直启动不成功。重新启动Hbase,终于成功了,也可以在hbase shell 中使用list命令和建表了
zkServer.sh stop //关闭Zookeeper
start-hbase.sh //关闭Hbase
start-all.sh //关闭Hadoop
HBase的表结构由以下几个部分组成:
表名(Table Name):表的唯一标识符,用于在HBase中区分不同的表。
行键(Row Key):表中每一行的唯一标识符,类似于关系数据库中的主键。行键通常是一个字节数组,并且按照字典顺序进行排序。
列族(Column Family):列族是逻辑上相关的一组列的集合。在HBase中,列族被批量存储和检索,因此数据模型设计时需要考虑列族的划分。
列限定符(Column Qualifier):列限定符是列族中的列的唯一标识符,用于进一步细分和标识记录中的数据。
单元格(Cell):单元格是表中存储数据的最小单位,由行键、列族和列限定符确定。每个单元格可以存储一个特定版本的值。
时间戳(Timestamp):每个单元格都与一个时间戳关联。在插入新值时,可以指定时间戳。如果未指定时间戳,则系统将自动使用当前时间作为时间戳。
通过使用行键、列族、列限定符和时间戳,HBase能够提供高效的随机访问和查询能力,并支持对海量数据的存储和分析。
现在演示的是使用create创建一个学生表,列族为'person_info'表示个人信息,列族'class_info'表示班级信息,建表完成后可以用list 命令查看是否成功建表成功
在hbase中,使用put命令向指定的表插入数据
代码如下:其中'student'表示表名,'student001'和'student002'表示行键(row key),'person_info'和'class_info'表示列族,'name' 'age' 'sex' 'classname'表示列修饰符,每行最后的表示插入的值
数据插入后使用scan命令查看表。在hbase中一个行键表示一行,现在只向表中添加了两个行键,所以只有两行数据
更新数据使用的命令也是put
查询指定列族的信息,使用get命令,'student' 表示表名,'stuent001'表示列族
删除表前需要先禁用表!
使用disable命令先禁用表,然后使用drop命令删除表:
以上就是在Hadoop高可用集群中部署Hbase及对表的一些增删改查的操作,如果有什么错误欢迎指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。