HBase是一种构建在HDFS之上的分布式、面向列的存储系统。HBase从另外一个角度处理伸缩性问题。它经过线性方式从下到上增长节点来进行扩展。HBase不是关系型数据库,也不支持SQL,可是它有本身的特长,这是RDBMS不能处理的,HBase巧妙地将大而稀疏的表放在商用的服务器集群上。HBase 是Google Bigtable 的开源实现,与Google Bigtable 利用GFS做为其文件存储系统相似, HBase 利用Hadoop HDFS 做为其文件存储系统;Google 运行MapReduce 来处理Bigtable中的海量数据, HBase 一样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable 利用Chubby做为协同服务,HBase利用Zookeeper做为对应。html
HBase以表的形式存储数据,表有行和列组成,列划分为若干个列族/列簇(column family)java
表结构web
Row Key | column-family1 | column-family2 |
---|---|---|
key1 | f1:列簇1第1个字段;f2:列簇1第2个字段 | f1:列簇2第1个字段;f2:列簇2第2个字段 |
key2 | f1:列簇1第1个字段,;2:列簇1第2个字段 | f1:列簇2第1个字段;f2:列簇2第2个字段 |
HMastershell
HRegionServer数据库
Hbase集群依赖hadoop,zookeeper,安装Hbase集群前首先要准备好hadoop和zookeeper集群apache
服务器列表bash
IP | host | 服务 |
---|---|---|
10.19.3.194 | hadoop01 | HMaster |
10.19.3.195 | hadoop02 | HRegionServer |
10.19.3.196 | hadoop03 | HRegionServer |
注意:在相应的服务器上配置好host服务器
准备工做架构
安装步骤app
进入安装目录
[app@hadoop01 hbase]$ pwd
/usr/local/hbase
[app@hadoop01 hbase]$ ls
bin CHANGES.md conf hbase-webapps LEGAL lib LICENSE.txt logs NOTICE.txt README.txt RELEASENOTES.md
[app@hadoop01 hbase]$
复制代码
编辑conf目录下的hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://10.19.3.194:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>10.19.3.194,10.19.3.195,10.19.3.196</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
复制代码
在conf目录下的hbase-env.sh末尾增长配置
export JAVA_HOME=/opt/jdk1.8.0_131
export HBASE_MANAGES_ZK=false
复制代码
编辑conf目录下的regionservers
hadoop02
hadoop03
复制代码
将配置好的hbase分别复制到另外两台服务器
scp -r hbase app@10.19.3.195:/usr/local/hbase
scp -r hbase app@10.19.3.196:/usr/local/hbase
复制代码
启动
./bin/start-hbase.sh
复制代码
查看相关进程是否正常
[app@hadoop01 hbase]$ jps
24113 SecondaryNameNode
23878 NameNode
9398 Jps
28685 HMaster
24335 ResourceManager
[app@hadoop01 hbase]$
复制代码
[app@hadoop02 hbase]$ jps
20049 Jps
16779 DataNode
9308 HRegionServer
16910 NodeManager
[app@hadoop02 hbase]$
复制代码
[app@hadoop03 hbase]$ jps
20049 Jps
16779 DataNode
9308 HRegionServer
16910 NodeManager
[app@hadoop03 hbase]$
复制代码
能够经过访问http://10.19.3.194:16010查看集群信息
验证集群(java代码)
引入pom依赖
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>2.2.1</version>
</dependency>
复制代码
代码判断是否存在表test_table
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum", "10.19.3.194,10.19.3.195,10.19.3.196");
configuration.set("hbase.zookeeper.property.clientPort", "2181");
Connection connection = ConnectionFactory.createConnection(configuration);
Admin admin = connection.getAdmin();
TableName tableName = TableName.valueOf("test_table");
System.out.println(admin.tableExists(tableName));
admin.close();
connection.close();
复制代码
控制台输出
false
复制代码