分布式存储学习——1.HBase的安装和配置
目录
1.2.1 先决条件
1.2.2 HBase运行模式
1.2.2.1 单机模式
1.2.2.2 伪分布式模式
1.2.3 HBase的Web UI
1.2.4 HBase Shell工具使用
1.2.5 停止HBase集群
1.2.6 小结
前言
博主这学期,学校开设了这门大数据分布式存储选修课,感觉学校教材对HBase的安装和配置总结的非常详细,特在此整理结论,供有兴趣的伙伴参考;
主要讲述如何安装、部署、启动和停止HBase集群,以及如何通过命令行的方式对HBase进行基本操作,例如:插入、查询、删除数据。
1.2HBase的安装和配置
在安装HBase之前强烈建议各位读者仔细阅读1.2.1节,确定这些基本需求都已经满足,否则可能遇到各种棘手的问题,比如查询不到数据甚至丢失数据。配置HBase的方式与Hadoop类似,都是通过修改安装包的conf目录下的配置文件完成的。在对一台机器修改配置文件后要记得同步到集群中所有节点,此时可以使用scp或rsync命令,在大多数情况下,需要重新启动HBase使配置生效。
在模板1中我们提供了安装HBase单机模式和分布式模式所需的全部安装包,除此之外,还提供了第三章中部分HBase客户端的安装包。本节操作的在HBase模板1中进行,需要为学生分配1台虚拟机,每台虚拟机的配置为1G内存,1G CPU。
1.2.1 先决条件
在开始安装HBase之前需要做一些准备工作,这涉及操作系统设置、分布式模式Hadoop的部署及HBase自身的配置,因此要确保在运行HBase之前这些条件已经具备。以下将介绍HBase依赖的一些重要的中间件、系统服务或配置。
1. 运行时环境JDK
和Hadoop一样,HBase需要JDKI.6或者更高版本,推荐采用oracle公司的版本,对于JDKI.6不要使用u18及以前的版本,因为这些版本Java的垃圾收集器会遇到“jvm crash"的问题(可以通过Goolge搜索“jvm crash”找到该问题的详细描述) 。为了能够管理超过4GB内存空间,需要安装64位的JDK。
2. SSH服务
集群模式的HBase的启动和关闭依赖于SSH服务,所以操作系统必须安装该服务,sshd进程必须处于运行状态,可执行以下命令查看服务状态:
service sshd status
HBase通过SSH管理所有节点的守护进程,和Hadoop的NameNode一样,HMaster必须能够免密登录到集群的所有节点,可以通过Google搜索‘’SSH免密登录”找到如何配置。注意由于HBase通常有多个HMaster节点,所以需要每个HMaster到所有节点都可以免密登录。
3. 域名系统DNS
HBase通过本地主机名(Host Name)或域名(Domain Name)来获取IP地址,因此要确保正向和反向DNS解析是正常的。在进行DNS解析时会首先查询本地/etc/hosts文件,因此建议通过配置该文件指定主机名或域名到IP地址的映射关系而不使用域名解析服务,这样做更容易维护,当出现主机无法识别的异常时也更加容易定位问题出现的位置,并且通过本地/etc/hosts文件解析IP地址速度也会更快一些。
当决定使用DNS服务的时候,还可以通过如下设置更加精确地控制HBase的行为。
如果有多个网卡,可以通过参数HBase.regionservers.dns.interface指定主网卡,该配置参数的默认值是default,可以通过这个参数指定主网络接口,不过这要求集群所有节点配置是相同的且每台主机都使用相同的网卡配置,可以修改这个配置参数为eth0或eth1,这要视具体的硬件配置而定。
另外一个配置是指定HBase.regionserver.dns.nameserver可以选择一个不同的DNS的name server。
1. 本地环回地址Loopback IP
HBase要求将本地回环接口配置成127.0.0.1,可以在/etc/hosts文件配置,通常系统安装后都已经包含了该配置:127.0.0.1 localhost.
2. 网络时间协议NTP
HBase要求急群中节点间的系统时间要基本一致,可以容忍一些偏差,默认相差30s以内。可以通过设置参数HBase.master.maxclockskew属性值修改最大容忍偏差时间。偏差时间较多时集群会差生一些奇怪的行为。用户需要在急群中运行NTP服务来同步集群的时间,如果在运行正常的集群中读取数据发生了一些莫名其妙的问题,例如读到的不是刚写进集群的数据而是旧的数据,这时需要检查集群各节点时间是否同步
3. 资源限制命令:ulimit和nproc
HBase和其它的数据库软件一样会同时打开很多文件。Linux中默认的ulimit值是1024,这时对HBase来说太小了。当使用诸如bulkload这种工具批量导入数据的时候会得到这样的异常信息:java.io.IOException:Too many open files。我们需要改变这个值,注意,这是对操作系统的参数调整,而不是通过HBase配置文件完成的,我们可以大致估算ulimit值需要配置为多大,例如:每个列族至少有一个存储文件(HFile),每个被加载的Region可能管理多达5或6个列族所对应的存储文件,用存储文件的个数乘以列族数再乘以每个RegionServer中的Region数量得到RegionServer主机管理的存储文件数量。假如每个Region有3个列族,每个列族平均有3个存储文件,每个RegionServer有100个region,将至少需要3*3*100=900个文件。这些存储文件会频繁被客户端调用,涉及大量的磁盘操作。应根据实际情况调整ulimit参数值的大小。
关于ulimit有两个地方需要调整,通过在、etc/security/limits.conf追加参数进行设置,一个参数是nofile,设置如下:
* soft mofile 10240
* hard mofile 10240
如果没有设置这个参数可能会得到上面说的异常。这个设置表示限制打开的文件数。这个配置不能即时生效,还需要通过ulimit –n设置,可以执行下面的命令:
ulimit –n 10240
另外一个参数是noproc,这个配置是限制用户打开的进程数,设置如下:
* soft noproc 10240
* hard noproc 10240
该设置可以即时生效,可以通过ulimit –c查看。如果不设置noproc可能得到如下异常:
Java.lang.OutOfMemoryError: unable to create new native thread
实际上这两个参数对于HDFS和MepReduce也至关重要,应该在启动Hadoop之前就设置好。另外注意这两个参数是针对操作系统用户的,*代表对所有用户生效。
1. 操作系统windows
和Hadoop一样, HBase在windows系统下没有经过严格的测试,因此不建议在生产环境中将HBase运行在Windows下, 如果想在Windows下安装HBase,需要安装Cygwin。从0.96版本开始,HBase提供了一套.cmd的Windows运行脚本。本书采用的操作系统是CentOS6.5。
2. Hadoop版本选择
不同版本的HBase依赖于特定的Hadoop版本,第1节的表1-1显示了不同的Hadoop版本对于HBase的支持情况,不管是Apache社区版还是一些商业开源版本(例如Cloudera的CDH或者Hortonworks的HDP),应该选择最合适的Hadoop版本。本书使用的Hadoop版本是hadoop-2.7.1,HBase版本是HBase-1.0.1.1。
(1) Hadoop jar包
由于HBase依赖于Hadoop,因此在安装包的lib文件夹下包含了一个Hadoop的核心jar文件。在分布式模式下,HBase使用的Hadoop版本必须和运行中的Hadoop集群的jar文件版本一致。将运行的分布式Hadoop版本jar文件替换HBase的lib目录下的Hadoop的jar文件。Hadoop版本不匹配问题有不同表现,但看起来HBase像挂掉了。在本书使用的HBase版本的lib目录下包含的是hadoop-core-2.5.1.jar,与hadoop的jar包兼容,所以无需替换。
(2) Hadoop 2.x优于Hadoop 1.x
Hadoop 2.x的一些改进使得读取数据效率提升,比如short-circuit可以显著提升HBase的随机读的性能,所以尽量选择Hadoop 2.x版本。
(3) dfs.datanode.max.xcievers
Hadoop的Datanode有一个用于设置同时处理文件的上限个数的参数,这个参数叫xcievers(Hadoop的作者把这个单词拼错了)。在启动之前,先确认有没有配置Hadoop的conf目录下的hdfs-site.xml中的xceivers参数,默认值是256,这对于一个任务很多的集群来说太小了,至少是4096,一个大型集群通常比这个值还大得多:
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
对于HDFS,如果修改此项配置,要记得重启。如果没有这一项配置,可能会失败。虽然会在Datanode的日志中看到xcievers exceeded,但是运行起来会报missing blocks错误,例如:
java.io.IOException:xceiverCount 258 exceeds the limit of concurrent xcievers 256
1. HBase安全
HBase运行在Hadoop上,在Hadoop1.0.0版本中已经加入最新的安全机制和授权机制(Simple和Kerberos),只要运行的是这之后的版本就可以使用这些安全特性。HBase的安全主要是基于用户、用户组和角色对表(或是更细粒度的列族、列)进行安全检查。在认证方面,它主要是通过Kerberos来完成的,HBase安全的大部分代码是在解决认证的问题,也就是根据用户权限判定其是否有权访问某项资源。
2. 安装ZooKeeper
ZooKeeper是HBase集群的“协调器”,负责解决HMaster的单点问题,以及root表的路由,所以一个独立的ZooKeeper服务是必需的。要确保事先安装好一个ZooKeeper集群。在本节中,安装HBase的过程中我们选择使用HBase自带的Zookeeper。
1.2.2 HBase运行模式
HBase有两种运行模式:单机模式和分布式模式。在默认情况下HBase运行在单机模式下,如果要运行分布式模式的HBase,需要编辑安装目录下conf文件夹中相关的配置文件。
不管运行在什么模式下,都需要编辑安装包的conf目录下的HBase-env.sh文件来告知HBase Java的安装路径。在这个文件中还可以设置HBase的运行环境,诸如Heap Size和其他有关JVM的选项,还有日志文件保存目录、进程优先级等。最重要的是设置JAVAHOME指向Java安装的路径,在该文件中搜索JAVA_HOME,找到如下一行:
# export JAVA_HOME=/usr/java/jdk1.6.0/
去掉前面的#注释,将JAVAHOME配置为实际的Java安装路径。
1.2.2.1 单机模式
这是HBase默认的运行模式,在单机模式中,HBase使用本地文件系统,而不是HDFS,所有的服务和ZooKeeper都运行在一个JVM中。ZooKeeper监听一个端口,这样客户端就可以连接HBase了。安装步骤如下:
1. 安装JDK
(1) 首先,root登录,查看OpenJDK的安装包
rpm -qa |grep java

(2) 检查OpenJDK版本
java –version

(3) 卸载OpenJDK
rpm –e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm –e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
rpm –e --nodeps tzdata-java-2013g-1.el6.noarch
(4) 需要安装64位版本的JDK,推荐Oracle公司的发行版,可以在http://www.oracle.com/technetwork/java/javase/downloads下载并安装,本书使用的版本是jdk1.8.0-60。在/usr/java目录下存在已经下载完成的JDK安装包,所以不需要同学们自己下载
(5) 在/usr/java目录下解压系统已下载好的jdk-8u60-linux-x64.tar.gz压缩包
tar –zxvf jdk-8u60-linux-x64.tar.gz
(6) 将解压后的目录jdk-1.8.0_60修改为jdk
mv jdk1.8.0_60 jdk
(7) 配置系统环境变量,在文件末尾加上JAVA_HOME,JRE_HOME,CLASSPATH和PATH,如下所示:
vim ~/.bashrc
export JAVA_HOME=/usr/java/jdk
export JRE_HOME=/usr/java/jdk/jre
export CLASSPATH=.:$JAVA_HOME/lib:/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=/usr/java/jdk/bin:$PATH

(8) 保存退出之后,使用如下命令立即生效
source ~/.bashrc
(9) 测试jdk安装是否成功,在root目录下输入如下命令,如果看到红色框内的版本信息,则表示安装成功
source ~/.bashrc
java –version

2. 安装HBase
(1) 在Apache镜像网站上下载一个稳定版本的安装包,可以http://mirror.bit.edu.cn/apache/下载并安装,本书使用的版本是HBase-1.0.1.1。在/usr目录下存在已经下载完成的HBase安装包,所以不需要同学们自己下载
(2) 在/usr目录下解压系统已下载好的HBase-1.0.1.1-bin.tar.gz安装包
tar –zxvf HBase-1.0.1.1-bin.tar.gz
(3) 将解压后的目录HBase-1.0.1.1修改为HBase
mv HBase-1.0.1.1 HBase
(4) 配置系统环境变量,增加HBASE_HOME路径,并将HBase的bin文件夹添加到PATH中,修改后如下图所示:

图 1.2.1
(5) 修改/usr/HBase/conf目录下的配置文件HBase-env.sh,设置JAVA_HOME的路径,并将HBASE_MANAGES_ZK的属性设置为true,修改后如下图所示:

图 1.2.2
注意:
#true:表示zookeeper交给HBase管理,启动HBase时,会自动启动HBase-site.xml里的HBase.zookeeper.quorum属性中的所有zookeeper实例
#false:表示启动HBase时,要手动启动所有zookeeper实例
(6) 修改/usr/HBase/conf目录下的配置文件HBase-site.xml,在文件的最后两行<configuration></configuration>之间添加配置信息,如下所示:
<configuration>
<property>
<name>HBase.rootdir</name>
<value>file:///usr/HBase/HBase-tmp</value>
</property>
<property>
<name>HBase.zookeeper.property.dataDir </name>
<value>/usr/HBase/zookeeper</value>
</property>
<configuration>
注意:
HBase.tootdir代表HBase数据存放的位置,单机模式下存储到本地目录,即存储到/usr/HBase/HBase-tmp下面。
HBase.zookeeper.property.dataDir代表ZooKeeper数据存放的位置,即存储到/usr/HBase/zookeeper下面。
3. 启动HBase
进入到HBase目录下,运行如下脚本启动HBase:
# bin/start-HBase.sh

启动成功后通过JPS命令可以看到如下信息:
# jps

通过如下命令可以连接到HBase表示安装成功:
# bin/HBase shell
连接成功后显示:

1.2.2.2 伪分布式模式
HBase分布式模式有两种。伪分布式模式是把所有进程运行在一台机器上,但不是一个JVM上;而完全分布式模式就是把整个服务分布在各个节点上。无论采用哪种分布模式,都需要使用HDFS。在操作HBase之前,要确认HDFS可以正常运行。在安装HBase之后,需要确认伪分布式模式或完全分布式模式的配置是否正确,这两种模式可以使用相同的验证脚本。
此处我们只对HBase伪分布式的安装与配置进行介绍。伪分布式模式是一个相对简单的分布式模式,是用于测试的。不能把这个模式用于生产环节,也不能用于测试。
1. 安装Hadoop
(1) 配置免密登录服务SSH
# ssh localhost
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
(2) 在Apache镜像网站上下载一个稳定版本的安装包,可以在http://mirror.bit.edu.cn/apache/下载并安装,本书使用的版本是Hadoop-2.7.1。同样地,在/usr目录下存在已经下载完成的JDK安装包,不需要同学们自己下载
(3) 在/usr目录下解压系统已下载好的hadoop-2.7.1.tar.gz压缩包
# tar –zxvf hadoop-2.7.1.tar.gz
(4) 将解压后的目录hadoop-2.7.1修改为hadoop
# mv hadoop-2.7.1 hadoop
(5) 配置环境变量,设置HADOPP_HOME、HADOOP_MAPRED_HOME、HADOOP_COMMON_HOME、HADOOP_HDFS_HOME、YARN_HOME、HADOOP_COMMON_LIB_NATIVE_DIR、HADOOP_OPTS这几个变量,并将HADOOP_HOME的bin文件夹添加到PATH中,修改后如下图所示:
# vi ~/.bashrc
export PATH=/usr/java/jdk/bin:/usr/HBase/bin:/usr/hadoop/bin:$PATH
export HADOOP_HOME=/usr/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 HADOOP_OPTS="-Djava.library.path-$HADOOP_HOME/lib"

(6) 立即生效
# source ~/.bashrc
(7) 修改/usr/hadoop/etc/hadoop目录下的配置文件hadoop-env.sh,设置JAVA-HOME的路径,修改后如下图所示:

(8) 修改/usr/hadoop/etc/hadoop目录下的配置文件core-site.xml,在文件的最后两行<configuration></configuration>之间添加配置信息,如下所示:
# vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
</property>
</configuration>
注意:
fs.defaultFS:保存了NameNode的位置 。
hadoop.tmp.dir : 用来存储hadoop文件系统依赖的基础配置。
(9) 修改/usr/hadoop/etc/hadoop目录下的配置文件 hdfs-site.xml,在文件的最后两行之间加入配置信息,如下所示:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
注意:
dfs.replication : 指定了每个HDFS数据块的复制次数。由于我们只有一台主机和一个伪分布式模式的DataNode,所以将value的值置为1。
(10) 复制/usr/hadoop/etc/hadoop目录下的配置文件 mapred-site.xml.template,重命名 mapred-site.xml,在mapred-site.xml文件的最后两行之间加入配置信息,如下所示:
# cp mapred-site.xml.template mapred-site.xml
# vi mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
注意:
mapred.job.tracker :连接jobtracker服务器的配置项,保存了JobTracker的位置。
(11)修改/usr/hadoop/etc/hadoop目录下的配置文件yarn-site.xml,在文件的最后两行之间加入配置信息,如下所示:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(12) 在hadoop目录下执行sbin/stop-all.sh命令,并格式化namenode,然后启动hadoop
# sbin/stop-all.sh
# bin/hadoop namenode –format
# sbin/start-all.sh
(13) 验证hadoop伪分布式是否安装成功,访问http://localhost:50070 ,如果安装成功,会返回如图界面

图 1.2.3 Hadoop的Web界面
2. 在HBase单机模式的基础上修改HBase的配置文件
(1) 修改/usr/HBase/conf目录下的配置文件HBase-env.sh,在下图所示位置添加HBASE_CLASSPATH,HBASE_CLASSPATH就是Hadoop配置文件的路径

(2) 修改/usr/HBase/conf目录下的配置文件HBase-site.xml,将之前单机模式下的配置信息删除,重新在<configuration></configution>之间添加如下所示的配置信息:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/HBase</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/HBase/zookeeper</value>
</property>
</configuration>
注意:
hbase.rootdir:这个目录是RegionServer的共享目录,用来持久化HBase。URL需要是“完全正确的”,还要包含文件系统的scheme。例如,“/HBase”表示HBase在HDFS中占用的实际存储目录,HDFS的NameNode运行在主机名为localhost的9000端口,则HBase的设置应为hdfs://localhost:9000/
HBase。在默认情况下HBase是写到/tmp中的。不修改这个配置,数据会在重启时丢失。
hbase.cluster.distributed:用来指定HBase的运行模式。为false表示单机模式,为true表示分布式模式。若为false,HBase和ZooKeeper会运行在同一个JVM中。默认值是false。
hbase.zookeeper.property.dataDir: 这个参数用于设置ZooKeeper快照的存储位置。默认值是/tmp,在操作重启的时候该目录会被清空,应该修改默认值到其它目录,我们这里修改值为/usr/HBase/zookeeper(这个路径需要运行HBase的用户拥有读写操作权限)。
(3) 进入到HBase目录下,运行如下脚本启动HBase。这里需要注意的是,如果启动之前HBase单机模式仍在运行,请先关闭单机模式。
# bin/start-HBase.sh
(4) 启动成功后通过JPS命令可以看到如下信息:
# jps

(5) 通过如下命令可以连接到HBase表示安装成功 :
[root@VM-3798830c-f00b-40d5-bcbd-2d91bac5c960 HBase]# bin/HBase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/HBase/lib/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2015-09-23 10:14:43,700 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.1.1, re1dbf4df30d214fca14908df71d038081577ea46, Sun May 17 12:34:26 PDT 2015
Hbase(main):001:0>
(6) 启动备份的HMaster
可以通过如下命令启动HBase:
bin/start-HBase.sh
也可以在同一服务器启动额外备份HMaster:
bin/local-master-backup.sh start 1
“1”表示使用端口60001和60011,该备份的HMaster及其日志文件放在logs/HBase-${USER}-1-regionserver$-{HOSTNAME}.log中。
在刚运行的RegionServer上增加4个额外的RegionServer,最多可以支持100个。
bin/local-regionservers.sh start 2 3 4 5
(7) 停止HBase
假设想停止备份HMaster 1,运行如下命令:
cat /${PID_DIR}/HBase-${USER}-1-master.pid |xargs kill -9
在本书中PID_DIR存放在默认的/tmp目录下,具体命令如下:
cat /tmp/HBase-root-1-master.pid |xargs kill -9
停止RegionServer,可以运行如下命令:
bin/local-regionservers.sh stop 1
1.2.3 HBase的Web UI
通过HMater的16010端口可以查看HBase的Web UI界面,图 1.2.4列出了集群的一些关键信息,这些信息包括HBase的版本、ZooKeeper集群的主机列表、HBase根目录等。

图 1.2.4 HBase Web UI中的属性部分
图 1.2.5列举出了目前HBase上有哪些表及表的一些基本信息,其中HBase:meta和HBase:namespace表是永远存在且成功加载的,如果这两张表加载不成功,那么集群虽然已经启动,但是却无法正常读写数据。

图 1.2.5 HBase Web UI中表的描述部分
图 1.2.6列举出了集群中的RegionServer主机,后面包含了每台RegionServer的重要信息,包括每秒请求次数、Region的数量、当前JVM堆大小等信息。

图 1.2.6 HBase Web UI中表的描述部分
1.2.4 HBase Shell工具使用
可以通过命令行工具连接HBase,从而对HBase中的表进行基本操作,命令如下:
# bin/HBase shell
连接成功后将进入HBase的执行环境:
HBase Shell; enter ‘help<RETURN>’ for list of supported commands.
Type “exit<RETURN>” to leave the HBase Shell
输入help,然后回车键可以看到命令的详细帮助信息,需要注意的是,在使用命令引用到表名、行和列时需要加单引号。创建一个名为test的表,这个表只有一个column family(列族)为cf。然后列出所有的表来检查创建情况,之后加入一些数据,命令如下:
Hbase(main):001:0>create ‘test’,’cf’

Hbase(main):002:0>put ‘test’, ’row1’, ‘cf:a’, ‘value1’
Hbase(main):003:0>put ‘test’, ’row2’, ’cf:b’, ‘value’
Hbase(main):004:0>put ‘test’, ‘row3’, ‘cf:c’,’value’

以上命令分别插入了三行数据。第一行rowkey为row1,列为cf:a,值为value1。HBase中的列是由column family前缀和列的名字组成的,以冒号分隔。
扫描整个表的数据使用scan命令,操作如下:
Hbase(main):007:0>scan ‘test’

获取单行数据使用get命令,操作如下:
Hbase(main):0010:0> get ‘test’, ‘cf’

停用表使用disable命令,删除这个表可以通过drop命令实现,此时数据也随之删除,操作如下:
Hbase(main):012:0> disable ‘test’
Hbase(main):013:0> drop ‘test’
退出Shell使用exit命令:
Hbase(main):014:0>exit
1.2.5 停止HBase集群
通过HBase提供的脚本可以停止一个正在运行中的集群,命令如下:
# bin/stop-HBase.sh
stopping HBase. . . . . . .
读者会在屏幕上看到类似上面的输出信息,请耐心等待,当HMaster和所有RegionServer进程正常退出后集群将停止服务。
1.2.6 小结
本节十分详细地描述了HBase的单机模式、伪分布式模式,以及分布式模式的HBase集群的安装和配置。对于想快速开始使用HBase或者做一些开发工作的读者,可以搭建一个单机模式的HBase,而在生产环境中一定要搭建完全分布式模式的集群。除此之外还给出了安装HBase集群的前期准备工作,读者在安装前务必仔细检查,有些时候集群安装的不成功往往是因为这些前提条件没有得到满足。
对于刚开始学习HBase的读者来说,能够成功运行一个集群将为后面深入理解HBase奠定一个良好的基础,因此我们希望各位读者可以亲自动手实践一下。