Hadoop之HBase
文章目录
一、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逻辑结构
行切片 列转列族
1.2HBase物理结构
1.3HBase基础架构
三、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
四、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!!");}
}