怎么安装HBase?如何在CentOS Linux 8 下安装配置Hbase?

7 篇文章 0 订阅
1 篇文章 0 订阅

0、安装Hadoop

在集群的每台机器上安装Hadoop,保证目录结构和配置文件一致(可以在一台服务器上安装好复制到另外的服务器上),参考:怎么在CentOS Linux 8 上安装Hadoop?

1、下载HBase

以下内容全部用hadoop用户执行。
官网地址:https://hbase.apache.org/downloads.html,我们要下载bin版本的。
执行如下命令:

cd /home/hadoop/server
wget http://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.2.2/hbase-2.2.2-bin.tar.gz
tar -zxvf hbase-2.2.2-bin.tar.gz
ln -sf /home/hadoop/server/hbase-2.2.2/  /home/hadoop/hbase

清华大学的镜像速度还不错,从这里下载比官网要快的多。

2、配置HBase

root用户执行如下命令:

配置环境变量

vi /etc/profile      #文件底部添加以下内容

内容如下:

export HBASE_HOME=/home/hadoop/hbase
export PATH=$PATH:$HBASE_HOME/bin:/$HBASE_HOME/sbin

加载全局环境变量,并切换到hadoop用户执行后面的命令

source /etc/profile
su hadoop

以下内容用hadoop用户执行命令:

配置hbase-env.sh

cd /home/hadoop/hbase
vi /home/hadoop/hbase/conf/hbase-env.sh

文件尾部添加以下内容

export TZ="Asia/Shanghai"
export JAVA_HOME="/usr/local/jdk"
export HBASE_CLASSPATH=/home/hadoop/hadoop/etc/hadoop
export HBASE_MANAGES_ZK=false
#已经有zookeeper集群设为false,单机运行hbase则设为true
#然后维护启动hbase自带的zookeeper

配置regionservers

vi /home/hadoop/hbase/conf/regionservers
#类似hadoop的datanode,存储内容的服务器

内容如下

hadoop223
hadoop224
hadoop225
hadoop226
hadoop227
hadoop228

配置hbase-site.xml

vi /home/hadoop/hbase/conf/hbase-site.xml  #hbase的核心配置文件

内容如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <!--RegionServer 的共享目录,用来持久化 Hbase-->
        <!--这里myha01来自于hdfs-site.xml的配置dfs.nameservices也就是hdfs的namenode服务器-->
        <name>hbase.rootdir</name>
        <value>hdfs://myha01/hbase</value>
    </property>
    <property>
        <!--启用分布式集群,false就是单机模式,true就是分布式集群模式-->
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <!--HMaster的IP或Hostname-->
        <name>hbase.master</name>
        <value>hadoop221:60000</value>
    </property>
    <property>
        <!--HMaster时间同步允许的时间差-->
        <name>hbase.master.maxclockskew</name> 
        <value>180000</value>
    </property>
    <property>
        <!--HMaster的RPC端口-->
        <name>hbase.master.port</name>
        <value>16000</value>
    </property>
    <property>
        <!--HMaster HTTP访问端口-->
        <name>hbase.master.info.port</name>
        <value>16010</value>
    </property>
    <property>
        <!--HRegionServer的RPC端口-->
        <name>hbase.regionserver.port</name>
        <value>16020</value>
    </property>
    <property>
        <!--HRegionServer HTTP访问端口-->
        <name>hbase.regionserver.info.port</name>
        <value>16030</value>
    </property>
    <property>
        <!-- 指定ZooKeeper的所有服务器地址 -->
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop226:2181,hadoop227:2181,hadoop228:2181</value>
    </property>
    <property>
        <!--这个属性主要作用是禁止检查流功能(stream capabilities)[hflush/hsync] -->
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>
</configuration>

配置备用HMaster

添加备用的HMaster,以便主Hmaster不可用时自动切换, 每台机器一条记录

vi /home/hadoop/hbase/conf/backup-masters

内容如下:

hadoop222

把Hbase复制到其他服务器上去

部署到其它的服务器上去

scp -r /home/hadoop/server/hbase-2.2.2 hadoop@hadoop222:/home/hadoop/server/
scp -r /home/hadoop/server/hbase-2.2.2 hadoop@hadoop223:/home/hadoop/server/
scp -r /home/hadoop/server/hbase-2.2.2 hadoop@hadoop224:/home/hadoop/server/
scp -r /home/hadoop/server/hbase-2.2.2 hadoop@hadoop225:/home/hadoop/server/
scp -r /home/hadoop/server/hbase-2.2.2 hadoop@hadoop226:/home/hadoop/server/
scp -r /home/hadoop/server/hbase-2.2.2 hadoop@hadoop227:/home/hadoop/server/
scp -r /home/hadoop/server/hbase-2.2.2 hadoop@hadoop228:/home/hadoop/server/

在所有的服务器上执行以下命令

ln -sf /home/hadoop/server/hbase-2.2.2/  /home/hadoop/hbase

启动HBase

在其中一台服务器上(比如:hadoop221)启动HBase

stop-hbase.sh
start-hbase.sh

如果出现以下错误提示,不理它,不要删除文件,如果删除文件会导致其它问题:
/home/hadoop/server/hbase-2.2.2/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar
在这里插入图片描述

 jps      #主要有两个进程HRegionServer(存储进程)和HMaster(管理进程)

在这里插入图片描述
HMaster数据查看:http://hadoop221:16010/
RegionServer数据查看:http://hadoop228:16030/

数据测试

hbase shell
hbase(main):001:0> create 'test', 'cf'
hbase(main):002:0> put 'test', 'debugo','cf:name','debugo'  # debugo是主键,后面的才是数据
hbase(main):003:0> put 'test', 'debugo','cf:age','12'
hbase(main):004:0> put 'test', 'debugo','cf:contry','Shandong'
hbase(main):005:0> put 'test', 'debugo','cf:birthday','1987-04-01'

在这里插入图片描述

hbase(main):006:0> get 'test', 'debugo'

在这里插入图片描述
对于MySQL来说这是4条数据,但是对于HBase来说,这就是一条数据(需要理解一下)

HBase使用举例

hbase shell                       #启动hbase shell命令行

namespace操作

hbase(main):001:0> list_namespace    #列出当前数据库中的所有namespace(库)
hbase(main):001:0> create_namespace 'crm'    #创建名称为“crm”的namespace
hbase(main):001:0> list_namespace_tables 'crm'    #获取指定namespace下的所有表
hbase(main):001:0> describe_namespace 'crm'    #查看指定namespace的描述
hbase(main):001:0> create 'crm:testtable', 'fm1'  #在指定namespace'crm'下创建表'testtable'
删除namespace  ----必须空的namespace才能删除  要删除掉里面的表
hbase(main):001:0> disable 'crm:testtable'
hbase(main):001:0> drop 'crm:testtable'
hbase(main):001:0> drop_namespace 'crm'

table DML操作

hbase(main):002:0> list #列出hbase中的表:
hbase(main):003:0> status
hbase(main):004:0> version
hbase(main):005:0> create ‘test’, ‘cf’ #创建一个名为 test 的表,此表只有一个列簇为 cf
hbase(main):006:0> create ‘member’,‘mem_id’,‘address’,‘info’ # 3个列簇的表(最好不这么做)
hbase(main):007:0> describe ‘member’ #获得表的描述
hbase(main):008:0> alter ‘member’, ‘id’ #给member添加一个列族(最好不这么做)
删除一个列族
hbase(main):009:0> alter ‘member’, {NAME => ‘member_id’, METHOD => ‘delete’}
hbase(main):010:0> delete ‘member’,‘debugo’,‘info:age’ #删除列
hbase(main):011:0> get ‘member’,‘debugo’,‘info:age’
hbase(main):012:0> deleteall ‘member’,‘debugo’ #删除整行的值:deleteall
hbase(main):013:0> get ‘member’,’debugo’
通过enable和disable来启用/禁用这个表,相应的可以通过is_enabled和is_disabled来检查表是否被禁用。
hbase(main):014:0> is_enabled ‘member’
hbase(main):015:0> is_disabled ‘member’
hbase(main):016:0> exists ‘member’ #使用exists来检查表是否存在
hbase(main):017:0> disable ‘member’ #删除表需要先将表disable。
hbase(main):018:0> drop ‘member’ #删除表需要先将表disable。
hbase(main):018:0> truncate ‘member’ #清空表

数据插入操作

插入数据测试开始
hbase(main):019:0> create ‘member’,‘id’,‘address’,‘info’
hbase(main):020:0> put ‘member’, ‘debugo’,‘id’,‘11’ #debugo为数据的主键
hbase(main):021:0> put ‘member’, ‘debugo’,‘info:age’,‘27’
hbase(main):022:0> put ‘member’, ‘debugo’,‘info:birthday’,‘1987-04-04’
插入数据测试结束

数据查询操作

查询数据测试开始
hbase(main):023:0> count ‘member’ #查询表中有多少行:count
hbase(main):024:0> get ‘member’, ‘Sariel’ #获取一个id的所有数据
hbase(main):025:0> get ‘member’, ‘Sariel’, ‘info’ #获得一个id,一个列簇中的所有数据:
hbase(main):026:0> scan ‘member’ #查询整表数据
hbase(main):027:0> scan ‘member’, {COLUMN=>‘info’} #扫描整个列簇
hbase(main):028:0> scan ‘member’, {COLUMNS=> ‘info:birthday’} #指定扫描其中的某个列
hbase(main):029:0>
官方建议一张表不要超过3个列簇,实际应用中最好只设置1个列簇,否则会出现性能问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值