千家信息网

HBase的环境配置及应用方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了" HBase的环境配置及应用方法 "的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、
千家信息网最后更新 2026年11月03日HBase的环境配置及应用方法

本篇内容介绍了" HBase的环境配置及应用方法 "的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、HBase简介

1.1简介

hbase是bigtable的开源山寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。
它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(row family)。

1.2 Hbase与传统数据库的对比

我们可以先来看一下传统的关系型数据库中的表:

然后与HBase的表进行对比,hbase的表结构,与传统的关系型数据库有较大的差别

1、一个表会按照行划分为若干个region,每一个region分配给一台特定的regionserver管理
2、每一个region内部还要一句列族划分为若干个HStore
3、每个HStore中的数据会落地到若干个HFILE文件中
4、region体积会随着数据插入而不断增长,到一定阈值后悔分裂
5、随着region的分裂,一台regionserver上管理的region会越来越多
6、HMASTER会根据regionserver上管理的region数做负载均衡
7、region中的数据拥有一个内存缓存:memstore,数据的访问优先在memstore中进行
8、memstore中的数据因为空间有限,所以需要定期flush到文件storefile中,每次flush都是生成新的storefile
9、storefile的数量随着时间也会不断增加,regionserver会定期将大量storefile进行合并(merge)


行键的设计对数据查询效率的影响非常大。

HBase具有很好的可伸缩性:如果存储容量不够的时候,直接加datanode或者regionservers
hbase可以作为一个线上系统的底层系统的功能。

Hmaster可以做负载均衡,监控到各个节点之间的数据存储情况。
每一个store(列族)会有一个内存缓存,存放的是一些最热的数据(最近访问的),这样的话读取数据的速度会快很多。

文件都是有索引的,所以查起来会比较快的。


region会在storefile定期进行合并操作。

三、HBase环境搭建

1、首先要去下载一个HBase的安装文件: http://hbase.apache.org/,然后解压到你需要安装的目录,如果你已经学到hbase了,我相信这些基本的安装肯定全部都会了的。

2、在habse目录下的conf目录下找到hbase-env.sh和hbase-site.xml,以及regionservers,然后分别按照下面的进行配置,整个配置过程非常简单。

在hbase-env.sh中,主要是配置java的环境变量,还有就是要开启zookeeper功能,这里要把默认的true改成的false,意思就是启用zookeeper,但是启用的不是hbase自带的zookeeper,而是使用我自己安装的zookeeper。

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64 export HBASE_MANAGES_ZK=false

在hbase-site.xml中,主要就是配置hdfs的主机地址,还有下面的ubuntu1,2,3就是zookeeper的主机名个端口2181,不同的机器可以酌情配置。

configuration>        hbase.rootdir        hdfs://ubuntu2:9000/hbase        hbase.cluster.distributed        true        hbase.zookeeper.quorum        ubuntu1:2181,ubuntu2:2181,ubuntu3:2181


3、最后修改regionservers,将默认的localhost修改为主机的地址,这个配置文件的意思就是设置从节点,和我们之前配置的hadoop集群都是差不多的,就相当于那个salver。

ubuntu1ubuntu2ubuntu3

4、最后将hadoop中的core-site.xml和hdfs-site.xml拷贝到hbase的conf目录下。

5、然后通过scp将这个配置好的文件发往其他的两个节点。

最后我只想说一句不要在这配置文件里面多打了字母,否则会报错的。

1、启动所有的hbase进程
首先启动zk集群
./zkServer.sh start
启动hbase集群
start-dfs.sh
启动hbase,在主节点上运行:
start-hbase.sh
2、 通过浏览器访问hbase管理页面
192.168.44.131:60010
3、 为保证集群的可靠性,要启动多个HMaster
hbase-daemon.sh start master

jps在主节点上面的效果是:会启动HRegionServer和HMaster

我们可以通过web页面查看启动的情况:192.168.44.131:60010,也就是你的主节点的ip或主机名+端口号60010就可以了。


4.2 建表

官方给的例子是:

Examples:  hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']  hbase> create 't1', 'f1', SPLITS => ['10', '20', '30', '40']  hbase> create 't1', 'f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'  hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }  hbase> # Optionally pre-split the table into NUMREGIONS, using  hbase> # SPLITALGO ("HexStringSplit", "UniformSplit">


那么我们就以例子为准,来新建一个用户信息表。表名为user-info,包含两个列族(base_info和extra_info),保留3个版本。

create 'user-info',{NAME=>'base_info',VERSIONS=>3},{NAME=>'extra_info'}

4.3 插入

官方给的语句是:

hbase> put 'ns1:t1', 'r1', 'c1', 'value', ts1

那么我们就按照它的语法来写:

put 'user-info','rk-100001','base_info:name','张s' put 'user-info','rk-100001','base_info:age','20'put 'user-info','rk-100001','base_info:address','湖南长沙'


在hbase只能一条条的插入,就比如一次只能插入name,那么如果我们想插入age,address就需要一个个的put。

4.4 查询

1、我们可以通过scan来查询:

scan 'user-info'

我们可以从图中看到它是按key来排序的(字段的名称会根据字典排序)k-value

如果我再插入一行,
put 'user-info','rk100003','base_info:name','angelabby'

一行中的所有字段名+字段值,在存储的时候,hbase会排序,排序的依据是按照K的字典顺序,所有的行也会有序存储,排序的依据是rowkey的字典顺序。
这个特性会影响连续存放。

2、get取数据,一次只能取一行数据

get 'user-info','rk100003'

4.5 修改

三个版本:

put 'user-info','rk100003','base_info:name','yangying' put 'user-info','rk100003','base_info:name','baobao'

查看以前版本的值:

scan 'user-info',{VERSIONS=>10}


4.6 删除

需要先禁用这个表,然后才可以drop掉。

需要先禁用这个表,然后才可以drop掉。disable 'user-info'drop 'user-info'

五、eclipse中使用HBase

打开eclipse,导入hbase/lib中的所有包。然后就可以愉快的开始写了,这里以在eclipse中庸hbase建表和插入数据为例:

//建表,DDL操作        public static void main(String[] args) throws MasterNotRunningException, ZooKeeperConnectionException, IOException {        //      Configuration conf=new Configuration();                //会加载hbase-site.xml配置文件                Configuration conf=HBaseConfiguration.create();                conf.set("hbase.zookeeper.quorum","ubuntu1:2181,ubuntu2:2181,ubuntu3:2181");                                HBaseAdmin  admin=new HBaseAdmin(conf);                TableName name = TableName.valueOf("user-info");                HTableDescriptor  tableDescriptor=new HTableDescriptor(name);                                //创建列名                HColumnDescriptor base_info = new HColumnDescriptor("base_info");                //给列族增加版本约束                base_info.setMaxVersions(3);                                //将列族添加到表描述对象中                tableDescriptor.addFamily(base_info);                                //用createTable方法创建一个tabelDescriptor所描述的对象                admin.createTable(tableDescriptor);                                //关闭连接                admin.close();                        }

最后我们可以在hbase的shell窗口来查看表是否已建好表。输入list就可以查询了
然后来插入数据:

@Test        //插入数据,属于DML操作        public void Put() throws IOException{                Configuration conf=HBaseConfiguration.create();                conf.set("hbase.zookeeper.quorum","ubuntu1:2181,ubuntu2:2181,ubuntu3:2181");                                HTable hTable = new HTable(conf,"user-info");                                Put put=new Put(Bytes.toBytes("rk-10001"));                put.add("base_info".getBytes(),"name".getBytes(),"wangming".getBytes());                put.add("base_info".getBytes(),"age".getBytes(),"20".getBytes());                hTable.put(put);                hTable.close();        }


最后我们可以在hbase的shell窗口来查看表是否已插入好数据。

" HBase的环境配置及应用方法 "的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数据 配置 文件 存储 节点 就是 版本 排序 环境 主机 数据库 目录 集群 查询 管理 方法 一行 不断 传统 字典 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 涨乐互联网科技 河南真二互联网科技有限公司 互联网金融 金融科技 猪兼强互联网科技 北京禾田雨橡互联网科技 互联网科技的未来发展 互联网科技有限公司 翻译 互联网 科技服务平台 移动互联网科技股 福建科技产业互联网发展 厦门千工互联网科技有限公司 佛山市拉法互联网科技有限公司 山东子淼互联网科技有限公司 江苏苏星互联网科技有限公司 广州燕处互联网科技有限公司 容联科技互联网电商 互联网科技的前景 互联网科技对化妆品行业 广东猫王互联网科技有限公司电话 互联网高科技绘画 互联网科技财经 科技服务与互联网 互联网 科技创新 厦门千工互联网科技有限公司 阿大互联网科技有限公司 广州市恰铎互联网科技有限公司 互联网科技扶贫时间 乌苏新华互联网科技做什么的 洛阳共同富裕互联网科技有限公司 雨阳互联网卡科技有限公司
0