📜  HBase-描述和更改(1)

📅  最后修改于: 2023-12-03 15:01:07.081000             🧑  作者: Mango

HBase-描述和更改

HBase是Apache Hadoop生态系统中的一个非常流行的NoSQL数据库,适用于海量数据存储和实时读写。它提供了一个分布式、可伸缩的数据存储系统,支持随机读写,并且非常适合处理大规模的结构化数据,例如用户数据、日志数据、实时指标和数据仓库等等。

HBase的架构

HBase的架构是基于Google的Bigtable架构设计的,具有以下组件:

  • RegionServers:负责处理读写请求并存储数据。
  • ZooKeeper:协调分布式系统的开源服务。
  • HMaster:负责管理RegionServer创建、负载平衡、元数据更改等操作。

HBase使用Hadoop分布式文件系统(HDFS)来存储数据,并且数据分为region,每个region存储在一个RegionServer中。当数据不断增长时,HBase会自动切分region并将其分配给不同的RegionServer,以实现横向扩展。

HBase的API

HBase提供了Java和REST API来操作数据,包括读、写、扫描、过滤和管理等功能。这使得语言差异较大的各种应用程序都可以与HBase进行集成。

下面是一些常用的方法:

创建表
HBaseAdmin admin = new HBaseAdmin(configuration);
HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("testTable"));
tableDescriptor.addFamily(new HColumnDescriptor("cf1"));
tableDescriptor.addFamily(new HColumnDescriptor("cf2"));
admin.createTable(tableDescriptor);
插入数据
HTableInterface table = connection.getTable(TableName.valueOf("testTable"));
Put put = new Put(Bytes.toBytes("row1"));
put.add(Bytes.toBytes("cf1"), Bytes.toBytes("col1"), Bytes.toBytes("value1"));
put.add(Bytes.toBytes("cf1"), Bytes.toBytes("col2"), Bytes.toBytes("value2"));
put.add(Bytes.toBytes("cf2"), Bytes.toBytes("col3"), Bytes.toBytes("value3"));
table.put(put);
查询数据
HTableInterface table = connection.getTable(TableName.valueOf("testTable"));
Get get = new Get(Bytes.toBytes("row1"));
Result r = table.get(get);
System.out.println(Bytes.toString(r.getValue(Bytes.toBytes("cf1"), Bytes.toBytes("col1"))));
修改HBase的配置

虽然HBase默认配置可以满足大多数场景,但有时我们可能需要针对特定的需求进行修改。以下是几个常见的配置修改:

修改region大小
hbase shell

# set the configuration for region size
hbase(main):001:0> alter 'testTable', {NAME => 'cf1', 'CONFIGURATION' => {'hbase.hregion.max.filesize' => '1073741824'}}
修改全局设置
<configuration>
  <property>
    <name>hbase.regionserver.handler.count</name>
    <value>128</value>
  </property>
</configuration>
修改垃圾回收设置
hbase-env.sh

export HBASE_OPTS="$HBASE_OPTS -XX:+UseParNewGC -XX:+UseConcMarkSweepGC \
  -XX:CMSInitiatingOccupancyFraction=70 \
  -XX:+CMSParallelRemarkEnabled \
  -XX:SurvivorRatio=1024 \
  -XX:MaxTenuringThreshold=12"
总结

HBase是一个强大的NoSQL数据库,可以帮助解决处理大规模和结构化数据的问题。在使用HBase时,我们需要了解其架构和API,以便正确集成和管理。此外,了解如何修改配置是非常重要的,这有助于优化性能并满足特定需求。