引言
hbase是一种基于列存储的分布式数据库系统,它能够快速地存储和处理大规模数据。与传统的关系型数据库不同,hbase采用了分布式的架构,能够实现数据的高可靠性、高可扩展性和高性能。在实际应用中,正确地安装和部署hbase集群是非常重要的。
1、准备环节
1.1设备基本要求
在安装hbase之前,需要虚拟机满足以下几个条件:
- 图1·更新后的vmware
1.2安装包
在安装和部署hbase时,需要注意hadoop与hbase的版本兼容性问题。因为hbase依赖于hadoop的分布式文件系统hdfs和资源管理框架yarn,而且hbase的各个版本都会对hadoop的版本有一定的要求。如果选用了不兼容的版本,可能会导致hbase无法正常工作或者出现各种错误。
2、修改相关信息
本文所使用的虚拟机来自于队友,与队友使用的机器不是同一台,所以需要修改ip和ip映射。假如你也是从其他渠道取到别人配置好的hadoop与zookeeper环境的虚拟机,记得修改哦,否则导致无法连接网络等一系列问题。
2.1修改ip
输入一下命令,进入ifcfg-ens33这个文件修改ip,所有集群都要改。
进入后按以下说明修改:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改完后输入以下命令重启网卡,重启后ping一下外网,能ping通的话就说明成功了。
systemctl restart network
2.2修改ip映射
输入以下命令,编辑/etc/hosts文件,修改ip映射,所有集群都要改,与前面修改好的ip一致。
vi /etc/hosts
3、安装与部署
3.1.上传安装包
将hbase-1.4.8.tar.gz上传到虚拟机的/usr/local路径。
3.2.解压安装包
解压hhbase-1.4.8.tar.gz到当前路径。
tar -xzvf hbase-1.4.8.tar.gz
3.3.配置hbase_home
3.3.1修改hbase-env.sh
进入hbase-1.4.8/conf/路径下,输入以下命令编辑hbase-env.sh文件,配置java环境变量。
vi hbase-env.sh
3.3.2修改core-site.xml
输入以下命令编辑hbase-site.xml文件, 配置文件如下,可直接复制。然后根据实际情况进行修改。
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase:zookeeper.property.datadir</name>
<value></value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:8020/hbase</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>flase</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
3.3.3修改/etc/profile
用以下命令进入/etc/profile文件,编辑hbase的环境变量,然后使用source方法使profile文件生效。
vi /etc/profile
source /etc/profile
3.3.4拷贝文件
使用scp方法,拷贝hbase-1.4.8文件到其他两个集群的/us/local/下。其中,@后面的参数是集群的名称,冒号后面的参数是目标路径。
scp -r hbase-1.4.8 root@slave1:/usr/local
4、启动
启动habse时,由于hbase依赖于hdfs和zookeeper,所以要先启动hadoop和zookeeper,然后再启动hbase。
4.1启动zookeeper
先使用以下命令对所有集群启动zookeeper,然后使用catjps查看所有集群的进程。看到quorumpeermain进程表示启动成功了。
zkserver.sh start
4.2启动hdfs
使用以下两条命令启动hdfs进程和yarn服务。
start-dfs.sh
start-yarn.sh
启动hadoop后,进入web端查看是否启动成功,顺便检查hv有无问题。
4.3启动hbase
以上操作都没问题后,我们就来启动hbase。输入以下命令启动。
start-hbase.sh
5、问题详情及解决方式
5.1.启动报错
进入hbase配置文件路径,编辑hbase-env.sh配置文件,然后把以下圈起来的两行给注释掉,就不会报错了。
5.2.启动后只有一个相关进程
启动成功后,hmater进程却不在,这个进程非常重要,不可以忽视。
需要在配置文件hbase-site.xml中添加以下信息。需要添加的信息在3.3.2步骤中,已经给出了,可直接复制。
5.3.启动成功了,但是hmster掉线了
好不容易搭好了,启动hbase后,发现进程也都在了。
迫不及待的去web端查看详情,然后发现打不开,被拒绝连接了。
然后又回去查看进程,发现hmaster掉线了
出现这样的问题有很多种情况,这里主要介绍以下三种可能,可查看日志(hbase的日志文件在安装路径的log文件夹下),可根据实际情况逐一排查。
5.3.1.防火墙设置
可输入以下命令进行查看防火墙状态,假如未关闭则需要设置成关闭的状态。
systemctl start firewalld#开启
systemctl stop firewalld#关闭
想要方便一点的可以输入一下命令,防止防火墙自开启,这样就不需要每次都查看防火墙的状态了。
systemctl disable firewalld
5.3.2.时间同步
假如说防火墙是关闭的,但问题暂时没有解决。可根据以下方法继续修改。
sudo apt-get install ntpdate
sudo apt-get install ntpdate
5.3.3.hdfs与hbase端口号一致
如果按照步骤做了以上两个步骤还是没有解决,就继续跟着排查吧。在配置文件hbase-site.xml中hbase.rootdir这一项需要和core-site.xml中的fs.defaultfs的地址保持一致,因为这一步是去hdfs上创建hbase的指定文件夹,8020是namenode节点active状态下的端口号,9000端口是filesystem默认的端口号。由于hdfs的队友搭建的,我们之间缺乏沟通,我的core-site.xml里写的9000,hdfs的端口号是8202,所以启动成功后又挂掉了,导致web端打不开。经过沟通处理后,终于成功了,这就是分组的意义吧,合作沟通。
如以下两张图所示,我们启动后进程都在,也不会自己挂掉了,web端也能打开看到相关信息了,启动成功。
6、hbase操作
6.1.建表
进行相关操作的步骤:启动zookerper–>启动hadoop–>启动hbase–>打开hbase shell
我用的是以下这种方式建表,需要可直接复制。
create 'studentandcourse','student','course1','course2','course3'
6.2.插入数据
插入几条数据测试一下。
put 'studentandcourse','2015001','student:s_name','zhangsan'
put 'studentandcourse','2015001','student:s_sex','male'
put 'studentandcourse','2015001','student:s_age','23'
put 'studentandcourse','2015001','course1:c_no','123001'
put 'studentandcourse','2015001','course1:c_name','math'
put 'studentandcourse','2015001','course1:c_credit','2.0'
put 'studentandcourse','2015001','course1:score','86'
put 'studentandcourse' ,'2015001','course3:c_no','123003'
put 'studentandcourse' ,'2015001','course3:c_name','english'
put 'studentandcourse' ,'2015001','course3:c_credit','3.0'
put 'studentandcourse' ,'2015001','course3:score','69'
6.3.查看数据
scan 'studentandcourse'
6.4.删除表
使用drop删除表people,然后使用list方法查看当前数据库现有表发现people库已被删除。
7.停止hbase
使用以下命令停止hbase服务。
stop-hbase.sh
在执行stop-hbase.sh之后.用jps查看进程之后还是发现hregionserver没有关闭。查看日志并没有报错,经查阅资料发现,执行完操作后,hbase的regionserver在后台做compact等操作呢,当然关不掉。
对此,分享几个可以单独关闭hregionserver和hmaster进程的方法,也许在后续学习时,需要单独关掉hbase的某个相关进程,还是很实用的,需要的话可以自取
单独停止hregionserver进程后,使用catjps查看所有集群的进程,已经成功关掉了。
收获总结
hbase是一个基于hadoop的分布式非关系型数据库,其数据模型类似于google的bigtable。在hv(hadoop+hive)环境中安装和部署hbase需要进行一系列的配置和操作,以确保hbase能够正常工作。以下是我在学习时的收获:
1. 环境确认:在安装和部署hbase之前,需要确认hadoop和hive已经正确安装和配置,并且集群中的所有节点都能够相互通信。
2. 下载和解压:从hbase官网下载与hadoop版本对应的hbase,并解压到指定的目录下。
3. 配置文件:修改hbase的配置文件,主要包括hbase-env.sh
、hbase-site.xml
和/etc/profile
等文件。其中,hbase-env.sh
文件中需要设置jdk的路径和;hbase-site.xml
文件中需要设置hbase的一些参数,比如zookeeper的地址和端口、hdfs的地址和端口等。
4. 启动hbase:执行start-hbase.sh命令启动hbase。启动成功后,可以使用
catjps` 命令查看所有进程hbase进程是否正常运行。
5. 测试hbase:可以使用hbase shell或java api等方式测试hbase是否正常工作。在hbase shell中,可以使用 create
命令创建一个新的表,使用 put
命令向表中插入数据,使用 get
命令查询数据等。
6. 关闭hbase:在hbase的下执行 stop-hbase.sh
命令关闭hbase。
需要注意的是,hbase的配置和使用方法比较复杂,需要根据实际情况进行调整和优化。在实际应用中,还需要考虑hbase的高可用性、负载均衡、数据备份和恢复等问题。因此,在安装和部署hbase之前,需要充分了解hbase的特点和使用方法,同时还需要对hadoop、zookeeper等相关技术有一定的了解和掌握。
发表评论