HBase入门教程

本文是一篇关于HBase入门的详细教程,涵盖了HBase的概述、架构、安装步骤,以及HBase的主要操作,包括创建、读取、更新和删除数据。文章强调了HBase作为面向列的分布式数据库在大数据处理中的作用,以及其与Hadoop的紧密集成。安装部分详细阐述了在Linux环境中配置Java和Hadoop,以及设置SSH和HBase的步骤。此外,还介绍了如何使用HBase Shell和Java API进行数据操作。
摘要由CSDN通过智能技术生成

 

一、概述

1970年以来,关系数据库用于数据存储和维护有关问题的解决方案。大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像 Hadoop 的解决方案。

Hadoop使用分布式文件系统,用于存储大数据,并使用MapReduce来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理。

Hadoop的限制

Hadoop只能执行批量处理,并且只以顺序方式访问数据。这意味着必须搜索整个数据集,即使是最简单的搜索工作。

当处理结果在另一个庞大的数据集,也是按顺序处理一个巨大的数据集。在这一点上,一个新的解决方案,需要访问数据中的任何点(随机访问)单元。

Hadoop随机存取数据库

应用程序,如HBase,Cassandra, couchDB, Dynamo  MongoDB 都是一些存储大量数据和以随机方式访问数据的数据库。

HBase是什么?

HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。

HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。

它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。

人们可以直接或通过HBase的存储HDFS数据。使用HBaseHDFS读取消费/随机访问数据。 HBaseHadoop的文件系统之上,并提供了读写访问。


HBase HDFS

HDFS

HBase

HDFS是适于存储大容量文件的分布式文件系统。

HBase是建立在HDFS之上的数据库。

HDFS不支持快速单独记录查找。

HBase提供在较大的表快速查找

它提供了高延迟批量处理;没有批处理概念。

它提供了数十亿条记录低延迟访问单个行记录(随机存取)。

它提供的数据只能顺序访问。

HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。

HBase的存储机制

HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。总之,在一个HBase

·        表是行的集合。

·        行是列族的集合。

·        列族是列的集合。

·        列是键值对的集合。

下面给出的表中是HBase模式的一个例子。

Rowide

Column Family

Column Family

Column Family

Column Family

 

col1

col2

col3

col1

col2

col3

col1

col2

col3

col1

col2

col3

1

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

面向列和面向行

面向列的数据库是存储数据表作为数据列的部分,而不是作为行数据。总之它们拥有列族。

行式数据库

列式数据库

它适用于联机事务处理(OLTP)。

它适用于在线分析处理(OLAP)。

这样的数据库被设计为小数目的行和列。

面向列的数据库设计的巨大表。

下图显示了列族在面向列的数据库:


HBase RDBMS

HBase

RDBMS

HBase无模式,它不具有固定列模式的概念;仅定义列族。

RDBMS有它的模式,描述表的整体结构的约束。

它专门创建为宽表。 HBase是横向扩展。

这些都是细而专为小表。很难形成规模。

没有任何事务存在于HBase

RDBMS是事务性的。

它反规范化的数据。

它具有规范化的数据。

它用于半结构以及结构化数据是非常好的。

用于结构化数据非常好。

HBase的特点

·        HBase线性可扩展。

·        它具有自动故障支持。

·        它提供了一致的读取和写入。

·        它集成了Hadoop,作为源和目的地。

·        客户端方便的Java API

·        它提供了跨集群数据复制。

在哪里可以使用HBase

·        Apache HBase曾经是随机,实时的读/写访问大数据。

·        它承载在集群普通硬件的顶端是非常大的表。

·        Apache HBase是此前谷歌Bigtable模拟非关系型数据库。 Bigtable对谷歌文件系统操作,同样类似Apache HBase工作在Hadoop HDFS的顶部。

HBase的应用

·        它是用来当有需要写重的应用程序。

·        HBase使用于当我们需要提供快速随机访问的数据。

·        很多公司,如FacebookTwitter,雅虎,和Adobe内部都在使用HBase

HBase 历史

年份

事件

Nov 2006

谷歌公布 BigTable 文件。

Feb 2007

最初的HBase原型创建由 Hadoop 贡献。

Oct 2007

随着Hadoop 0.15.0,第一个可用的HBase也发布了。

Jan 2008

HBase成为 Hadoop 的子项目。

Oct 2008

HBase 0.18.1 发布。

Jan 2009

HBase 0.19 发布。

Sept 2009

HBase 0.20.0 发布。

May 2010

HBase 成为 Apache 的顶级项目。

二、HBase架构


HBase中,表被分割成区域,并由区域服务器提供服务。区域被列族垂直分为“Stores”Stores被保存在HDFS文件。下面显示的是HBase的结构。

注意:术语“store”是用于区域来解释存储结构。


HBase有三个主要组成部分:客户端库,主服务器和区域服务器。区域服务器可以按要求添加或删除。

主服务器

主服务器是 -

·        分配区域给区域服务器并在Apache ZooKeeper的帮助下完成这个任务。

·        处理跨区域的服务器区域的负载均衡。它卸载繁忙的服务器和转移区域较少占用的服务器。

·        通过判定负载均衡以维护集群的状态。

·        负责模式变化和其他元数据操作,如创建表和列。

区域

区域只不过是表被拆分,并分布在区域服务器。

区域服务器

区域服务器拥有区域如下 -

·        与客户端进行通信并处理数据相关的操作。

·        句柄读写的所有地区的请求。

·        由以下的区域大小的阈值决定的区域的大小。

需要深入探讨区域服务器:包含区域和存储,如下图所示:


存储包含内存存储和HFilesmemstore就像一个高速缓存。在这里开始进入了HBase存储。数据被传送并保存在Hfiles作为块并且memstore刷新。

Zookeeper

·        Zookeeper管理是一个开源项目,提供服务,如维护配置信息,命名,提供分布式同步等

·        Zookeeper代表不同区域的服务器短暂节点。主服务器使用这些节点来发现可用的服务器。

·        除了可用性,该节点也用于追踪服务器故障或网络分区。

·        客户端通过与zookeeper区域服务器进行通信。

·        在模拟和独立模式,HBasezookeeper来管理。

 

三、HBase安装

本章将介绍如何安装HBase和初始配置。 需要用JavaHadoop来处理HBase,所以必须下载javaHadoop并安装系统中。

安装前设置

安装HadoopLinux环境下之前,需要建立和使用Linux SSH(安全Shell)。按照下面设立Linux环境提供的步骤。

创建一个用户

首先,建议从Unix创建一个单独的Hadoop用户,文件系统隔离Hadoop文件系统。按照下面给出创建用户的步骤。

  1. 开启root使用命令 “su”.

2.   使用root帐户命令创建用户“useradd username”.

3.   现在,可以使用命令打开一个现有的用户帐户 “su username”.

打开Linux终端,输入以下命令来创建一个用户

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

SSH设置和密钥生成

SSH设置需要在集群上执行不同的操作,如启动,停止和分布式守护shell操作。进行身份验证不同的Hadoop用户,需要一种用于Hadoop的用户提供的公钥/私钥对,并用不同的用户共享。

以下的命令被用于生成使用SSH密钥值对。复制公钥从id_rsa.pubauthorized_keys,并提供所有者,读写权限到authorized_keys文件。

$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys

验证ssh

ssh localhost

安装Java

JavaHadoopHBase主要先决条件。首先应该使用"java -verion"检查java是否存在在您的系统上。 java -version 命令的语法如下。

$ java -version

如果一切正常,它会得到下面的输出。

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

如果Java还没有安装在系统中,然后按照下面给出的步骤安装Java

步骤 1

下载JavaJDK - X64.tar.gz),可以通过访问以下链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

jdk-7u71-linux-x64.tar.gz 将被下载到系统。

步骤 2

一般来说,下载文件夹中包含有Java文件。验证它,使用下面的命令提取jdk-7u71-linux-x64.gz文件。

$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
 
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

步骤 3

为了使Java提供给所有用户,必须将它移动到“/usr/local/”。打开终端然后以root用户身份键入以下命令。

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

步骤 4

有关设置PATHJAVA_HOME变量,添加以下命令到/.bashrc文件。

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH= $PATH:$JAVA_HOME/bin

现在从终端验证 java -version 命令如上述说明

下载Hadoop

安装Java之后,接下来就是安装Hadoop。首先使用“Hadoop version” 命令验证 Hadoop 是否存在,如下所示。

hadoop version

如果一切正常,它会得到下面的输出。

Hadoop 2.6.0
Compiled by jenkins on 2014-11-13T21:10Z
Compiled with protoc 2.5.0
From source with checksum 18e43357c8f927c0695f1e9522859d6a
This command was run using
/home/hadoop/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar

如果系统上是无法找到 Hadoop,那么证明还未安装,现在下载Hadoop在您的系统上。按照下面给出的命令。

Apache软件基金会下载并使用下面的命令提取 Hadoop-2.6.0

$ su
password:
# cd /usr/local
# wget http://mirrors.advancedhosters.com/apache/hadoop/common/hadoop-
2.6.0/hadoop-2.6.0-src.tar.gz
# tar xzf hadoop-2.6.0-src.tar.gz
# mv hadoop-2.6.0/* hadoop/
# exit

安装 Hadoop

可在任何需要的方式安装Hadoop。在这里将展示 HBase 模拟分布式模式功能,因此模拟分布式模式的Hadoop安装。

按下面的步骤来安装 Hadoop 2.4.1.

1 - 设置Hadoop

可以通过附加下面的命令在 / .bashrc文件中以设置Hadoop 环境变量。

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME

现在,应用所有更改到当前正在运行的系统。

$ source ~/.bashrc 

2 - Hadoop配置

找到位于 “$HADOOP_HOME/etc/hadoop” 目录下所有的Hadoop配置文件。根据需要Hadoop将配置文件中的内容作修改。

$ cd $HADOOP_HOME/etc/hadoop

为了使用Java开发Hadoop程序,必须用java在系统中的位置来替换 hadoop-env.sh文件中的 java环境变量JAVA_HOME的值。

export JAVA_HOME=/usr/local/jdk1.7.0_71

编辑以下文件来配置Hadoop

core-site.xml

core-site.xml文件中包含,如:用于Hadoop实例的端口号,分配给文件系统,存储器限制用于存储数据存储器和读/写缓冲器的大小的信息。

打开core-site.xml,并在<configuration></configuration>标签之间添加以下属性。

<configuration>
<property>
 <name>fs.default.name</name>
 <value>hdfs://localhost:9000</value>
 </property>
</configuration>

hdfs-site.xml

hdfs-site.xml文件中包含,如:复制数据的值,NameNode的路径,本地文件系统,要存储Hadoop基础架构的Datanode路径的信息。

假设有以下数据。


dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file
system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

打开这个文件,并在<configuration></configuration> 标记之间添加以下属性。

<configuration$gt;
<property$gt;
 <name$gt;dfs.replication</name $gt;
 <value$gt;1</value$gt;
 </property$gt;
 <property$gt;
 <name$gt;dfs.name.dir</name$gt;
 <value$gt;file:///home/hadoop/hadoopinfra/hdfs/namenode</value$gt;
 </property$gt;
 <property$gt;
 <name$gt;dfs.data.dir</name$gt;
 <value$gt;file:///home/hadoop/hadoopinfra/hdfs/datanode</value$gt;
 </property$gt;
</configuration$gt;

注:上面的文件,所有的属性值是用户定义的,可以根据自己的Hadoop的基础架构进行更改。

yarn-site.xml

此文件用于配置成yarnHadoop中。打开yarn-site.xml文件,并在<configuration><configuration>标签之前添加以下属性到这个文件中。

<configuration$gt;
<property$gt;
 <name$gt;yarn.nodemanager.aux-services</name$gt;
 <value$gt;mapreduce_shuffle</value$gt;
 </property$gt;
</configuration$gt;

mapred-site.xml

此文件用于指定MapReduce框架以使用。默认情况下Hadoop包含yarn-site.xml模板。首先,它需要从mapred-site.xml复制模板到mapred-site.xml文件,使用下面的命令来。

$ cp mapred-site.xml.template mapred-site.xml

打开 mapred-site.xml 文件,并在<configuration> </configuration>标签之间添加以下属性。

<configuration>
<property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>

验证Hadoop安装

下面的步骤是用来验证Hadoop的安装。

1 - 名称节点设置

设置名称节点使用“hdfs namenode -format”命令如下

$ cd ~
$ hdfs namenode -format

预期的结果如下。

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/ 

2 - 验证HadoopDFS

下面的命令用来启动DFS。执行这个命令将启动Hadoop文件系统。

$ start-dfs.sh

预期的结果如下。

10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
 

3  - 验证Yarn脚本

下面的命令用来启动yarn脚本。执行此命令将启动yarn守护进程。

$ start-yarn.sh

预期的结果如下。

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out 

4 - 访问Hadoop上的浏览器

访问Hadoop的默认端口号为50070。使用以下网址,以获取Hadoop服务在浏览器中。

http://localhost:50070


5验证集群中的所有应用程序

访问群集的所有应用程序的默认端口号为8088。使用以下URL访问该服务。

http://localhost:8088/


HBase安装

单机模式,模拟分布式模式,以及全分布式模式:可以在任何的三种模式来安装HBase

在单机模式下安装HBase

使用 “wget” 命令下载HBase,下载网址为:http://www.interiordsgn.com/apache/hbase/stable/ ,选择最新的稳定版本,并使用 tar “zxvf” 命令将其解压缩。请参见下面的命令。

$cd usr/local/
$wget http://www.interior-dsgn.com/apache/hbase/stable/hbase-0.98.8-
hadoop2-bin.tar.gz
$tar -zxvf hbase-0.98.8-hadoop2-bin.tar.gz

切换到超级用户模式,将HBase文件复制到/usr/local,如下图所示。

$su
$password: enter your password here
mv hbase-0.99.1/* Hbase/

在单机模式下配置HBase

在继续HBase之前,需要编辑下列文件和配置HBase

hbase-env.sh

HBase设置Java目录,并从conf文件夹打开hbase-env.sh文件。编辑JAVA_HOME环境变量,改变路径到当前JAVA_HOME变量,如下图所示。

cd /usr/local/Hbase/conf
gedit hbase-env.sh

这将打开HBaseenv.sh文件。现在使用当前值替换现有JAVA_HOME值,如下图所示。

export JAVA_HOME=/usr/lib/jvm/java-1.7.0

hbase-site.xml

这是HBase的主配置文件。通过在 /usr/local/HBase 打开HBase主文件夹,设置数据目录到合适的位置。在 conf 文件夹里面有几个文件,现在打开hbase-site.xml文件,如下图所示。

#cd /usr/local/HBase/
#cd conf
# gedit hbase-site.xml

hbase-site.xml文件里面,找到 <configuration> </configuration> 标签。并在其中,设置属性键名为“hbase.rootdir”,如下图所示的HBase目录。

<configuration>
//Here you have to set the path where you want HBase to store its files.
<property>
<name>hbase.rootdir</name>
<value>file:/home/hadoop/HBase/HFiles</value>
</property>
//Here you have to set the path where you want HBase to store its built
in zookeeper files.
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper</value>
</property>
</configuration>

到此 HBase 的安装配置已成功完成。可以通过使用 HBase bin 文件夹中提供 start-hbase.sh 脚本启动 HBase。为此,打开HBase 主文件夹,然后运行 HBase 启动脚本,如下图所示。

$cd /usr/local/HBase/bin
$./start-hbase.sh

如果一切顺利,当运行HBase启动脚本,它会提示一条消息:HBase has started

starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out

在模拟分布式模式安装HBase

现在,来看看如何安装HBase在模拟分布式模式。

CONFIGURINGHBASE

继续进行HBase之前,在本地系统或远程系统上配置Hadoop HDFS并确保它们正在运行。如果它正在运行则先停止HBase

hbase-site.xml

编辑hbase-site.xml文件中添加以下属性。

<property>
 <name>hbase.cluster.distributed</name>
 <value>true</value>
</property>

它会提到在HBase的哪种模式运行。 从本地文件系统相同的文件改变hbase.rootdirHDFS实例地址使用hdfs: URI 语法。在本地主机的端口8030上运行HDFS

<property>
 <name>>hbase.rootdir</name>
 <value>hdfs://localhost:8030/hbase</value>
</property>

启动HBase

经过配置结束后,浏览到HBase的主文件夹,并使用以下命令启动HBase

$cd /usr/local/HBase
$bin/start-hbase.sh

注:在启动 HBase 之前,请确保 Hadoop 运行。

检查在HDFSHBase目录

HBase创建其目录在HDFS中。要查看创建的目录,浏览到Hadoop bin并键入以下命令

$ ./bin/hadoop fs -ls /hbase

如果一切顺利的话,它会给下面的输出。

Found 7 items
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/.tmp
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/WALs
drwxr-xr-x - hbase users 0 2014-06-25 18:48 /hbase/corrupt
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/data
-rw-r--r-- 3 hbase users 42 2014-06-25 18:41 /hbase/hbase.id
-rw-r--r-- 3 hbase users 7 2014-06-25 18:41 /hbase/hbase.version
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/oldWALs

启动和停止主服务器

使用“local-master-backup.sh”就可以启动多达10台服务器。打开HBasemaster主文件夹,并执行以下命令来启动它。

$ ./bin/local-master-backup.sh 2 4

要中止备份主服务,需要它的进程ID,它被存储在一个文件名为“/tmp/hbase-USER-X-master.pid”中,可以使用下面的命令中止备份主服务。

$ cat /tmp/hbase-user-1-master.pid |xargs kill -9

启动和停止区域服务器

可以使用下面的命令来运行在单一系统中的多个区域的服务器。

$ .bin/local-regionservers.sh start 2 3

要停止区域服务器,可以使用下面的命令。

$ .bin/local-regionservers.sh stop 3

启动HBaseShell

下面给出的是启动HBase shell的步骤。打开终端,并登录为超级用户。

启动Hadoop文件系统

通过Hadoop主目录下的sbin目录文件夹浏览并启动Hadoop文件系统,如下所示。

$cd $HADOOP_HOME/sbin
$start-all.sh

启动HBase

通过HBase根目录下的bin文件夹浏览并启动HBase

$cd /usr/local/HBase
$./bin/start-hbase.sh

启动HBase主服务器

这在相同目录。启动它,如下图所示:

$./bin/local-master-backup.sh start 2 (number signifies specific
server.) 

启动区域服务

启动区域服务器,如下所示。

$./bin/./local-regionservers.sh start 3

启动HBase Shell

可以使用以下命令启动HBase shell

$cd bin
$./hbase shell

这会给出HBase shell 的提示符,如下图所示。

2014-12-09 14:24:27,526 INFO [main] Configuration.deprecation:
hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri
Nov 14 18:26:29 PST 2014
 
hbase(main):001:0>

HBaseWeb界面

要访问 HBase Web界面,在浏览器中键入以下URL

http://localhost:60010

以下界面列出了当前正在运行的区域服务器,备份主服务以及HBase表。

HBase区域服务器和备份主服务


HBase


设置Java环境

也可以使用Java库交互HBase,但访问HBase使用Java API之前,需要设置类库的路径。

设置类路径

继续进行之前编程,在.bashrc文件中设置类路径到HBase库。打开.bashrc文件编辑,如下所示。

$ gedit ~/.bashrc

HBase库设置类路径(HBaselib文件夹),如下图所示。

export CLASSPATH=$CLASSPATH://home/hadoop/hbase/lib/*

这是为了防止未找到类(class not found异常,同时使用Java API访问HBase

四、HBaseShell

本章介绍了如何使用自带HBase交互shell启动HBase

HBase Shell

HBase包含可以与HBase进行通信的Shell HBase使用Hadoop文件系统来存储数据。它拥有一个主服务器和区域服务器。数据存储将在区域()的形式。这些区域被分割并存储在区域服务器。

主服务器管理这些区域服务器,所有这些任务发生在HDFS。下面给出的是一些由HBase Shell支持的命令。

通用命令

·        status: 提供HBase的状态,例如,服务器的数量。

·        version: 提供正在使用HBase版本。

·        table_help: 表引用命令提供帮助。

·        whoami: 提供有关用户的信息。

数据定义语言

这些是关于HBase在表中操作的命令。

·        create: 创建一个表。

·        list: 列出HBase的所有表。

·        disable: 禁用表。

·        is_disabled: 验证表是否被禁用。

·        enable: 启用一个表。

·        is_enabled: 验证表是否已启用。

·        describe: 提供了一个表的描述。

·        alter: 改变一个表。

·        exists: 验证表是否存在。

·        drop: HBase中删除表。

·        drop_all: 丢弃在命令中给出匹配“regex”的表。

·        Java Admin API: 在此之前所有的上述命令,Java提供了一个通过API编程来管理实现DDL功能。在这个org.apache.hadoop.hbase.client包中有HBaseAdminHTableDescriptor这两个重要的类提供DDL功能。

数据操纵语言

·        put: 把指定列在指定的行中单元格的值在一个特定的表。

·        get: 取行或单元格的内容。

·        delete: 删除表中的单元格值。

·        deleteall: 删除给定行的所有单元格。

·        scan: 扫描并返回表数据。

·        count: 计数并返回表中的行的数目。

·        truncate: 禁用,删除和重新创建一个指定的表。

·        Java client API: 在此之前所有上述命令,Java提供了一个客户端API来实现DML功能,CRUD(创建检索更新删除)操作更多的是通过编程,在org.apache.hadoop.hbase.client包下。 在此包HTable PutGet是重要的类。

启动 HBase Shell

要访问HBase shell,必须导航进入到HBase的主文件夹。

cd/usr/localhost/

cdHbase

可以使用“hbase shell”命令来启动HBase的交互shell,如下图所示。

./bin/hbase shell

如果已成功在系统中安装HBase,那么它会给出 HBase shell 提示符,如下图所示。

HBase Shell; enter'help<RETURN>' for list of supportedcommands.

Type "exit<RETURN>" to leave the HBase Shell

Version 0.94.23,rf42302b28aceaab773b15f234aa8718fff7eea3c, Wed Aug 27

00:54:09 UTC 2014

 

hbase(main):001:0>

要退出交互shell命令,在任何时候键入 exit 或使用<Ctrl + C>。进一步处理检查shell功能之前,使用 list 命令用于列出所有可用命令。list是用来获取所有HBase 表的列表。首先,验证安装HBase在系统中使用如下所示。

hbase(main):001:0> list

当输入这个命令,它给出下面的输出。

hbase(main):001:0> list

TABLE

 

五、HBase常用命令

HBase常用命令status, version, table_helpwhoami。本章将介绍了这些命令。

status

命令返回包括在系统上运行的服务器的细节和系统的状态。它的语法如下:

hbase(main):009:0> status

如果执行这个命令,它会返回下面的输出

hbase(main):009:0> status
3 servers, 0 dead, 1.3333 average load

version

该命令返回HBase系统使用的版本。它的语法如下:

hbase(main):010:0> version

如果执行这个命令,它会返回下面的输出。

hbase(main):009:0> version
0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri Nov 14
18:26:29 PST 2014

table_help

此命令将引导如何使用表引用的命令。下面给出的是使用这个命令的语法。

hbase(main):02:0> table_help

当使用此命令时,它显示帮助主题表相关的命令。下面给出是此命令的部分输出。

hbase(main):002:0> table_help
Help for table-reference commands.
You can either create a table via 'create' and then manipulate the table
via commands like 'put', 'get', etc.
See the standard help information for how to use each of these commands.
However, as of 0.96, you can also get a reference to a table, on which
you can invoke commands.
For instance, you can get create a table and keep around a reference to
it via:
 hbase> t = create 't', 'cf'…...

whoami

该命令返回HBase用户详细信息。如果执行这个命令,返回当前HBase用户,如下图所示

hbase(main):008:0> whoami
hadoop (auth:SIMPLE)
groups: hadoop

 

六、HBase Admin API


HBase
是用Java编写的,因此它提供Java APIHBase通信。 Java API是与HBase通信的最快方法。下面给出的是引用Java API管理,涵盖用于管理表的任务。

HBaseAdmin

HBaseAdmin是一个类表示管理。这个类属于org.apache.hadoop.hbase.client包。使用这个类,可以执行管理员任务。使用Connection.getAdmin()方法来获取管理员的实例。

方法及说明

S.No.

方法及说明

1

void createTable(HTableDescriptor desc)

创建一个新的表

2

void createTable(HTableDescriptor desc, byte[][] splitKeys)

创建一个新表使用一组初始指定的分割键限定空区域

3

void deleteColumn(byte[] tableName, String columnName)

从表中删除列

4

void deleteColumn(String tableName, String columnName)

删除表中的列

5

void deleteTable(String tableName)

删除表

Descriptor

这个类包含一个HBase表,如详细信息:

·        所有列族的描述,

·        如果表是目录表,

·        如果表是只读的,

·        存储的最大尺寸,

·        当区域分割发生,

·        与之相关联的协同处理器等

构造函数

S.No.

构造函数和总结

1

HTableDescriptor(TableName name)

构造一个表描述符指定TableName对象。

方法及说明

S.No.

方法及描述

1

HTableDescriptor addFamily(HColumnDescriptor family)

将列家族给定的描述符

 

七、HBase创建表


可以使用命令创建一个表,在这里必须指定表名和列族名。在HBase shell中创建表的语法如下所示。

create‘<table name>’,’<column family>’

示例

下面给出的是一个表名为emp的样本模式。它有两个列族:“personal data”“professional data”

Row key

personal data

professional data

 

 

 

 

 

 

HBase shell创建该表如下所示。

hbase(main):002:0> create 'emp', 'personal data', professionaldata

它会给下面的输出。

0 row(

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值