> 文章列表 > Hadoop之HBase

Hadoop之HBase

Hadoop之HBase

文章目录

  • 一、HBase简介
  • 二、HBase结构
    • 1.1HBase逻辑结构
    • 1.2HBase物理结构
    • 1.3HBase基础架构
  • 三、HBase安装配置
  • 四、HBase JAVA API

一、HBase简介

《HBase官方文档》的原文地址是:http://hbase.apache.org/book.html
W3Cschool.cn进行整理翻译 https://www.w3cschool.cn/hbase_doc/
HBase是Apache的Hadoop项目的子项目,是Hadoop Database的简称。
下载:https://www.apache.org/dyn/closer.cgi/hbase/

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,HBase基于列的而不是基于行的模式

二、HBase结构

1.1HBase逻辑结构

行切片 列转列族

Hadoop之HBase

1.2HBase物理结构

Hadoop之HBase

1.3HBase基础架构

Hadoop之HBase

三、HBase安装配置

HBASE分为单机模式,伪分布模式,集群模式:

3.1单机模式

1.上传并解压
tar -zxvf hbase-2.4.15-bin.tar.gz -C /opt/modules/
2.修改配置文件 conf/hbase-site.xml 
#前三行是默认的,有分布式需求的话,可以把hbase.cluster.distributed改成true
......
<property><name>hbase.cluster.distributed</name><value>false</value></property><property><name>hbase.tmp.dir</name><value>./tmp</value></property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property><!--指定hbase管理页面的端口号-->
<property><name>hbase.master.info.port</name><value>16010</value></property>
<!--指定hdfs的地址-->
<property><name>hbase.rootdir</name><value>hdfs://sunshuo:8020/hbase</value></property><property><name>hbase.zookeeper.property.dataDir</name><value>/home/hadoop/zookeeper</value>
</property>
.......
3.启动服务
bin/start-hbase.sh
bin/hbase shell #shell操作

3.2集群搭建

HBase集群建立在Hadoop集群的基础上,而且依赖于ZooKeeper,因此在搭建HBase集群之前,需要将Hadoop集群和ZooKeeper集群搭建好。

1.	上传解压HBase安装包
$ tar -zxf hbase-2.4.15-bin.tar.gz -C /opt/modules/
2.	hbase-env.sh文件配置
......
#conf/hbase-env.sh,配置HBase关联的JDK,并禁用HBase自带的ZooKeeper,
export JAVA_HOME=/opt/modules/jre1.8.0_361
#禁用HBase自带的ZooKeeper,使用外部独立ZooKeeper
export HBASE_MANAGES_ZK=false
......
3.	hbase-site.xml文件配置
......
<configuration><!--需要与HDFS NameNode端口一致--><property><name>hbase.rootdir</name><value>hdfs://centos1:9820/hbase</value></property><!--开启分布式--><property><name>hbase.cluster.distributed</name><value>true</value></property><!--ZooKeeper节点列表 --><property><name>hbase.zookeeper.quorum</name><value>centos1:2181,centos2:2181,centos3:2181</value></property><!--ZooKeeper数据存放目录--><property><name>hbase.zookeeper.property.dataDir</name><value>/opt/modules/hbase-2.4.9/zkData</value></property><!--在分布式环境下设置为false,为解决启动HMaster无法初始化WAL的问题--><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property><property><name>hbase.wal.provider</name><value>filesystem</value></property>
</configuration>
......
4.	regionservers文件配置 #conf/regionservers
......
centos1
centos2
centos3
......
5.复制HBase到其他节点
scp -r hbase-2.4.15/  centos2:/opt/modules/
scp -r hbase-2.4.15/  centos5:/opt/modules/
6.启动
bin/start-hbase.sh
7.启动后shell命令
bin/hbase shell

Hadoop之HBase
Hadoop之HBase

四、HBase JAVA API

# pom.xml
<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>2.4.15</version>
</dependency>
package hdfs.demo;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;public class HBaseCreateTable{public static void main(String[] args) throws Exception {//创建HBase配置对象Configuration conf= HBaseConfiguration.create();//指定ZooKeeper集群地址conf.set("hbase.zookeeper.quorum", "192.168.10.101:2181,192.168.10.102:2181,192.168.10.105:2181");//创建连接对象ConnectionConnection conn= ConnectionFactory.createConnection(conf);//得到数据库管理员对象Admin admin=conn.getAdmin();//创建表描述,并指定表名TableName tableName=TableName.valueOf("t2");HTableDescriptor desc=new HTableDescriptor(tableName);//创建列族描述HColumnDescriptor family=new HColumnDescriptor("f1");//指定列族desc.addFamily(family);//创建表admin.createTable(desc);System.out.println("create table success!!");}
}