本篇是对HBase官方参考文档的大体翻译,介于本人英文水平实在有限,难免有纰漏之处。本篇不只是对官方文档的翻译,还加入了一些本人对HBase的理解。在翻译过程中,一些没有营养的废话,我就忽略了没有翻译。本篇按照 2016年 5、6 月 最新版的 http://hbase.apache.org/book.html 进行翻译,此时:

  

  而 stable 文件夹中的内容:

---------------------------------------------------------------------------------------------------------------------------------------------

Getting Started(准备开始)
1、简介
  文档将带你搭建和运行一个单节点、单实例的HBase,随后是一个伪分布式的单机实例,最后是一个完全分布式的集群。
2、快速开始--单机模式HBase
  本指南描述的是在本地文件系统中搭建单机模式下的HBase。对于一个HBase生产环境下的实例来说,这是不恰当的配置,但是,在本地测试情况下运行是允许的。本章节将要像你展示使用HBase shell 命令创建一个表,插入数据,对表进行put和scan操作,enable 或者 disable 表,并且运行和停止HBase。除去下载HBase,整个过程应该不超过十分钟。
  在本地文件系统下使用HBase不保证耐久性。如果文件未正常关闭,本地HDFS文件系统实现将丢失编辑的内容。当你试用新软件时这是很有可能发生的,经常启动和停止守护进程通常是并不干净的。你需要确保在HDFS运行HBase所有的写入是已经保存了的。针对本地文件系统的运行能够让你快速熟悉怎样生产系统任务,获取第一阶段的评价。关于本地文件系统上的问题更详尽的描述,请访问 HBASE-3696 。
  在HBase 0.94.X 版本之前,HBase期望的IP地址是 127.0.0.1。Ubuntu及一些其他分支默认是 127.0.0.1,这将给你带来麻烦。
  *** Example 1. 对于Ubuntu,HBase 0.94.x及早期版本正确的配置如下。如果你陷入困境,请使用如下配置。

127.0.0.1 localhost
127.0.0.1 ubuntu.ubuntu-domain ubuntu

2.1、JDK版本要求
  *** HBase 0.98.5 及 更新版本,必须在集群的每一个节点设置JAVA_HOME。hbase-env.sh提供了一个便利的机制。

2.2、开始使用HBase
  步骤:下载,配置,启动。
  (1)、从 Apache Download Mirrors 列表中选择一个下载站。它为你提供HBase发布版的镜像。点击名为“stable”的文件夹,然后下载以“.tar.gz”结尾的二进制文件到本地文件系统。在HBase 1.X版本之前,一定要选择你可能用到的Hadoop的更迟版本对应的HBase版本(大部分情况下,你应该选择hadoop 2.X版本的,类似hbase-0.98.13-hadoop2-bin.tar.gz)。暂时不下载以 “src.tar.gz”结尾的文件。
  (2)、解压下载文件,并打开目录。

$ tar xzvf hbase-<?eval ${project.version}?>-bin.tar.gz
$ cd hbase-<?eval ${project.version}?>/

  (3)、对于HBase 0.98.5 及之后版本,在启动HBase前,你需要设置JAVA_HOME环境变量。在HBase 0.98.5之前,如果没有设置环境变量,HBase尝试检测Java的位置。你可以通过操作系统的一般机制来设置环境变量,但HBase提供一个中枢机制 conf/hbase-env.sh 。编辑该文件,取消 JAVA_HOME 前的注释符,并设置你本机适当的位置。
  *** 这个指令假设集群的每个节点都采用同样的配置。如果不一致,你需要单独设置每个节点。
  (4)、编辑 conf/hbase-site.xml 这个HBase主配置文件。这时候,你仅需要指定本地文件系统中HBase和Zookeeper写数据的目录即可。默认是在/tmp目录下新建一个目录。许多机器在重启后是会删除/tmp目录内容的,所以你需要存储数据到别处。下面的配置将存储HBase的数据在testuser用户主目录下的hbase目录。在标签<configuration>下粘贴<property>标签,在一个新安装的HBase中这应该是个空的。你不要创建HBase数据目录。HBase会为你这么做。如果你创建了目录,HBase会迁移,而这不是你想要的。
  *** Example 2. HBase的单例模式的 hbase-site.xml 配置:

<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/testuser/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/testuser/zookeeper</value>
</property>
</configuration>

  (5)、bin/start-hbase.sh 此脚本为启动HBase提供了方便的途径。执行命令,在标准输出的日志里可以看到HBase启动成功的消息。你可以使用 jps 命令来确认你有一个正在运行的进行 HMaster。在 HBase 的单例模式中,所有的服务都运行在同一JVM中,如 HMaster,单例的 HRegionServer 和 ZooKeeper 的守护进程。
  步骤:使用HBase
  1)、连接HBase。
在HBase安装目录下bin/ 目录下使用 hbase shell 命令连接正在运行的HBase实例。在下面这个例子中,当你启动HBase Shell 并忽略打印的一些用法和版本信息后,HBase Shell 是以字符‘>’结尾。

$ ./bin/hbase shell
hbase(main)::>

  2)、预览 HBase Shell 的帮助文本。
  输入 help 并点击回车,可以看到一些基本的HBase Shell 用法信息,以及一些示例命令。
  3)、创建一个表。
  使用 create 命令创建一个表,你必须执行一个表名和列族名。

hbase(main)::> create 'test', 'cf'
row(s) in 0.4170 seconds
=> Hbase::Table - test

  4)、关于你的表的列表信息。
  使用 list 命令:

hbase(main)::> list 'test'
TABLE
test
row(s) in 0.0180 seconds
=> ["test"]

  5)、插入数据到表中。
  使用 put 命令插入数据。

hbase(main)::> put 'test', 'row1', 'cf:a', 'value1'
row(s) in 0.0850 seconds
hbase(main)::> put 'test', 'row2', 'cf:b', 'value2'
row(s) in 0.0110 seconds
hbase(main)::> put 'test', 'row3', 'cf:c', 'value3'
row(s) in 0.0100 seconds

在这里,我们往 test 表中依次插入了三条数据。首先插入了一条rowkey为row1、列为 cf:a、值为 value1 的数据。HBase中的列是包含列族前缀的,在这个例子中,冒号前的为列族 cf ,冒号后的为列限定符 a 。

  6)、扫描表的全部数据。

  从HBase获取数据的途径之一就是 scan 。使用 scan 命令扫描表数据。你可以对扫描做限制,不过现在,获取全部的数据。

hbase(main)::> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=, value=value1
row2 column=cf:b, timestamp=, value=value2
row3 column=cf:c, timestamp=, value=value3
row(s) in 0.0230 seconds

  7)、获取一条数据。

  使用 get 命令一次获取一条数据。

hbase(main)::> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=, value=value1
row(s) in 0.0350 seconds  

  8)、禁用一个表。

  如果你想删除一个表或者改变表的设置,以及一些其他的场景,首先你需要使用 disable 命令禁用表。你可以使用 enable 命令“反禁用”即启用表。

hbase(main)::> disable 'test'
row(s) in 1.1820 seconds
hbase(main)::> enable 'test'
row(s) in 0.1770 seconds

  9)、删除表。

  使用 drop 命令删除一个表。

hbase(main)::> drop 'test'
row(s) in 0.1370 seconds

  10)、退出。

  使用 quit 命令退出命令行并从集群断开连接。HBase 仍然在后台运行。

  步骤:停止HBase。

  1)、bin/start-hbase.sh 这个脚本提供了便利的启动所有 HBase 服务,同样地,bin/stop-hbase.sh 脚本用来停止所有HBase服务。

$ ./bin/stop-hbase.sh
stopping hbase....................

  2)、在使用这个命令后,它可能需要过几分钟才能停掉服务进程。使用 jps 命令来确认 HMaster 和 HRegionServer 进程是否关闭。

2.3 中级 ----- 本地伪分布式安装

  在你学习过前面内容后,你要重新配置 HBase 来运行伪分布式模式。伪分布式模式的意思是 HBase 仍然在一台机器上完整的运行,不过,每个HBase 服务(HMaster,HRegionServer,Zookeeper)是在单独的一个进程中运行。默认的,如果你像上面描述的一样没有配置 hbase.rootdir ,你的数据仍然存储在 /tmp 目录下。在本文的稍后部分中,假设你有可用的HDFS,我们存储数据在HDFS。你可以略过HDFS配置继续存储你的数据在本地文件系统。

  (1)、如果正在运行,请先停掉HBase。

  如果你完成了单例模式的HBase并且正在运行,请停掉它。这个步骤将完全的创建一个存储HBase数据的新目录,所以之前你创建的数据库将丢失。

  (2)、配置HBase。

  编辑 hbase-site.xml 进行配置。首先,添加 property,使 HBase 以分布式模式运行,并且一个 JVM 实例化一个守护进程。

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

  接下来,把 hbase.rootdir 的配置从本地文件系统改为你的HDFS实例的地址,并使用 hdfs:// 开头的 URL 语法。下面这个例子中,HDFS是运行在本地端口 8020。

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

  你不需要在HDFS中创建 /hbase 目录,HBase会自动创建。不过,如果你创建了 /hbase 目录,HBase会尝试移动,而这不是你想要的。

  (3)、启动HBase。

  使用 bin/start-hbase.sh 命令启动HBase。如果你配置得当,使用 jps 命令可以查看到 HMaster 和 HRegionServer 进程正在运行。

  (4)、检查 HDFS 中 HBase 目录。

  如果一切正常,HBase 会在 HDFS 创建目录。在配置文件中,是存储在HDFS的 /hbase 目录。你可以使用 hadoop fs 命令查看这个目录。

$ hadoop fs -ls /hbase
Found items
drwxr-xr-x - hbase users -- : /hbase/.tmp
drwxr-xr-x - hbase users -- : /hbase/WALs
drwxr-xr-x - hbase users -- : /hbase/corrupt
drwxr-xr-x - hbase users -- : /hbase/data
-rw-r--r-- hbase users -- : /hbase/hbase.id
-rw-r--r-- hbase users -- : /hbase/hbase.version
drwxr-xr-x - hbase users -- : /hbase/oldWALs

  (5)、创建一个表,并插入数据。

  你可以使用 HBase Shell 创建一个表,插入数据,并 scanget 数据,使用方法和上面一样。

  (6)、启动和停止一个 HMaster 备份服务器。

  对于生产环境而言在同一个机器上运行多个 HMaster 实例是没有意义的,同样的,在生产环境上运行伪分布式模式也是没有意义的。

  HMaster 服务器用来管理HBase集群。你可以弄10个 HMaster,其中9个做备份 HMaster 服务器。使用 local-master-backup.sh 启动备份HMaster 。对于每个你想要启动的 master,可以添加一个参数代表这个 master 的端口。每个HMaster使用三个端口,默认是16010,16020,16030 。端口偏移量添加到这些端口,所以偏移量为2 ,备份HMaster会使用16012/16022/16032 的端口。以下命令使用 16012/16022/16032, 16013/16023/16033, 和16015/16025/16035 作为端口号。

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

  从整个集群中移除某一个备份 master ,你需要找到进程ID(PID)。PID存储在名称类似于 /tmp/hbase-USER-X-master.pid 的文件中。你可以使用 kill -9 命令来杀死这个PID。下面的命令将从正在运行的集群中移除一个端口偏移量为1的 master。

$ cat /tmp/hbase-testuser--master.pid |xargs kill -

  (7)、启动和停止附加的 RegionServer 。

  HRegionServer 在 HMaster 的指导下管理 storefile 中的数据。一般的,一个 HRegionServer 在集群的每个节点上运行。伪分布式模式下在一个系统中运行多个HRegionServer 对于测试是有用的。local-regionservers.sh 命令允许你运行多个 RegionServer。它的工作原理类似于 local-master-backup.sh 命令,你提供的参数代表实例端口偏移量。每个 RegionServer 需要两个端口,默认的是16020和16030 。无论怎样,附件的 RegionServer 的基本端口不能使用默认的,因为默认端口被HMaster 端口占用,这也是 HBase 1.0.0 版本 RegionServer 的一个使用。基本端口用16200和16300替代。在同一台机器上,你可以运行99个附加的RegionServer,不是HMaster或者备份HMaster。下面这个命令启动4个附件的 RegionServer ,运行在从 16202/16302 开始连续的端口(16200/16300 端口每次加2)。

$ .bin/local-regionservers.sh start    

  使用 local-regionservers.sh 命令加上 stop 参数及服务器端口偏移量手动地停止一个RegionServer

$ .bin/local-regionservers.sh stop 

2.4 高级 -----  完全分布式

  实际上,你需要一个完全分布式配置并且使用真实情景去完全的测试HBase。在一个分布式配置中,一个集群包含多个节点,每个节点运行一个或者多个 HBase 守护进程。他们包含主 HMaster 和备份 HMaster 实例,多个 Zookeeper 节点,和多个 RegionServer 节点。

  添加大于两个的节点到你的集群,实例如下:

  表1. 分布式集群样例模板

  这个示例采取每个节点是在同一网段的虚拟机。分布式模式的搭建是根据之前的伪分布式的搭建,假设之前的配置步骤是在现在的 node-a 节点。停止掉 HBase 后再继续。

  !请确保每个节点的防火墙关闭。

  步骤:配置SSH互信

  (略过,请自行 Google 或者某度!)

  步骤:准备节点 node-a

  node-a 节点用来运行主 master 和 Zookeeper 进程,不过没有 RegeionServer 。

  (1)、编辑 cong/regionservers ,并且移除 lcoalhost 行。然后添加 node-b 和 node-c 的主机名或者IP地址。

  如果你想要在节点 node-a 节点运行 RegionServer ,你应该确保各主机间能够相互通信。这使你可以配置分发到任何主机冲突的节点。保存文件。

  (2)、配置 HBase 使 node-b 节点作为备份 master。

  创建一个新的文件 conf/backup-masters ,并添加新的一行主机名--node-b。在本例中,主机名是 node-b.example.com。

  (3)、配置 Zookeeper。

  实际上,你需要小心的考虑 Zookeeper 的配置。关于 Zookeeper的更多配置,下面有专门解释。

  在节点 node-a ,编辑 conf/hbase-site.xml ,添加以下配置。

<property>
<name>hbase.zookeeper.quorum</name>
<value>node-a.example.com,node-b.example.com,node-c.example.com</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper</value>
</property>

  步骤:准备 node-c 和 node-b

  node-c 上将要运行备份 master 和 一个 Zookeeper 实例。

  (1)、下载和解压 HBase

  下载和解压 HBase 到 node-b ,就像之前单机模式和为分布式模式一样。

  (2)、从 node-a 节点复制配置文件到 node-b 和 node-c。

  集群上每个节点都应该保持同样的配置。复制目录 conf/ 内容到 node-b 和 node-c 目录下。

  步骤:启动和测试你的集群

  (1)、在各节点上确认HBase没有运行。

  如果之前测试的时候你忘记停掉 HBase,你将要报错的。使用 jps 命令检验每台机器上的 HBase 是否运行。看下是否存在进程 HMaster、HRegionServer、HQuorumPeer,如果存在,kill 掉。

  (2)、启动集群。

  在节点 node-a 上,执行 start-hbase.sh 命令。你将看到和下面相似的输出。

$ bin/start-hbase.sh
node-c.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.-hadoop2/bin/../logs/hbase-h buser-zookeeper-node-c.example.com.out
node-a.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.-hadoop2/bin/../logs/hbase-h buser-zookeeper-node-a.example.com.out
node-b.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.-hadoop2/bin/../logs/hbase-h buser-zookeeper-node-b.example.com.out
starting master, logging to /home/hbuser/hbase-0.98.-hadoop2/bin/../logs/hbase-hbuser-master-node-a.exa mple.com.out
node-c.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.-hadoop2/bin/../logs/hbase- hbuser-regionserver-node-c.example.com.out
node-b.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.-hadoop2/bin/../logs/hbase- hbuser-regionserver-node-b.example.com.out
node-b.example.com: starting master, logging to /home/hbuser/hbase-0.98.-hadoop2/bin/../logs/hbase-hbus er-master-nodeb.example.com.out

  首先启动 Zookeeper ,然后是 master ,然后是 RegionServer, 最后是 备份 master。

  (3)、检验进程是否运行。

  在每台节点上运行 jps 命令,检验每个机器上的相应进程是否运行。

  Example 3. node-a jps Output

$ jps
Jps
HQuorumPeer
HMaster

  Example 4. node-b jps Output

$ jps
HRegionServer
Jps
HQuorumPeer
HMaster

  Example 5. node-a jps Output

$ jps
Jps
HQuorumPeer
HRegionServer

  !Zookeeper 进程名

  HQuorumPeer 进程是用来管理和启动HBase的 Zookeeper 实例。如果你按照这种方式使用 Zookeeper,那么他将被限制在集群每个节点上运行一个实例,这只是适用于测试。如果 Zookeeper 是运行在 HBase 外,进程名即是 QuorumPeer 。

  (4)、浏览器 WEB UI

  在 HBase 0.98.X 更高版本,HBase Web 界面的 HTTP 端口从 Master 的 60010 和 每个 RegionServer 的 60030 改变为 Master 的 16010 和 RegionServer 的16030 。

  如果一切准备妥当,你应该能够使用 web 浏览器连接到 Master http://node-a.example.com:16010/ 和第二Master 的 http://node-b.example.com:16010/。如果你可以通过 localhost 连接,但不能从其他主机连接,请检查你的防火墙配置。

  (5)、测试节点或者服务器消失会发生什么。

  如上配置的三个节点的集群,并不是有弹性的。尽管如此,你仍然可以测试当主 Master 或者 RegionServer消失发生什么,杀死进程并查看日志。

3、下一站

  下一章节,将要讲述关于 HBase 相关的信息,关于不同 HBase 的运行模式,HBase的运行时系统配置,一个分布式 HBase 集群的临界配置区域。

HBase 参考文档翻译之 Getting Started的更多相关文章

  1. HBase 参考信息

    Apache HBase Region Splitting and Merging  https://blog.cloudera.com/apache-hbase-region-splitting-a ...

  2. 【HBase学习】Apache HBase 参考手册 中文版

    正在撰写,稍后来访……

  3. Hadoop以及其外围生态系统的安装参考

    在研究Hadoop的过程中使用到的参考文档:   1.Hadoop2.2 参考文档 在CentOS上安装Hadoop 2.x 集群: http://cn.soulmachine.me/blog/201 ...

  4. 基于Ubuntu14.10的Hadoop+HBase环境搭建

    本篇博文中谈及的Hadoop和HBase都是单机版,简单了解. 首先在Ubuntu上搭建Hadoop开发环境,主要参考另外一篇博客,仔细照做并解决出现的问题即可. 地址:http://www.powe ...

  5. 【HBase学习】Apache HBase项目简介

    原创声明:转载请注明作者和原始链接 http://www.cnblogs.com/zhangningbo/p/4068957.html       英文原版:http://hbase.apache.o ...

  6. Hadoop,HBase,Zookeeper源码编译并导入eclipse

    基本理念:尽可能的参考官方英文文档 Hadoop:  http://wiki.apache.org/hadoop/FrontPage HBase:  http://hbase.apache.org/b ...

  7. Hbase 系列(一)基本概念

    Hbase 系列(一)基本概念 HBase 是 Apache 旗下一个高可靠性.高性能.面向列.可伸缩的分布式存储系统.利用 HBase 技术可在廉价 PC 服务器上搭建起大规模的存储化集群.使用 H ...

  8. HBase学习(一):认识HBase

    一.大数据发展背景 现今是数据飞速膨胀的大数据时代,大数据强调3V特征,即Volume(量级).Varity(种类)和Velocity(速度). ·Volume(量级):TB到ZB. ·Varity( ...

  9. hbase官方文档(转)

    FROM:http://www.just4e.com/hbase.html Apache HBase™ 参考指南  HBase 官方文档中文版 Copyright © 2012 Apache Soft ...

随机推荐

  1. vim ,vi总是卡死,终于找到原因了。

    玩了这么多年linux 居然不知道这个..特此记录. 使用vim时,如果你不小心按了 Ctrl + s后,你会发现不能输入任何东西了,像死掉了一般,其实vim并没有死掉,这时vim只是停止向终端输出而 ...

  2. mysql 导出行数据到txt文件,指定字符分割

    select id,name, concat('tel:',phone) from user order by time INTO outfile 'user.txt' FIELDS terminat ...

  3. 请求报文的方法及get与post的区别

    请求报文的方法及get与post的区别 请求的起始以方法作为开始,方法用来告诉服务器要如何做. 在开发中通常有两种请求方式. get方式: 是以实体的方式得到由请求 URI 所指定资源的信息,如果请求 ...

  4. STM32 USB设备描述符、配置描述符、端点描述符含义

    查了一整天的资料,自己把不懂的全部试了一遍 一下是程序以及注释 /* USB设备描述符*/ const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ ...

  5. 006---Linux用户、群组和权限

    用户.组.权限管理 用户管理 增 语法:useradd -c '添加用户1' user1 选项和参数: -c:用户的备注信息 -d:用户的家目录 -g:指定用户所属的用户组(gid) -s:指定用户登 ...

  6. Java基础之static关键字的用法

    Java中的static关键字主要用于内存管理.我们可以应用static关键字在变量.方法.块和嵌套类中. static关键字属于类,而不是类的实例.        静态(static)可以是: 变量 ...

  7. 【blockly教程】第五章 循环结构

    在这里,我们将介绍一个新游戏--Pond Tutor 在Pond Tutor(https://blockly-games.appspot.com/pond-tutor)这个游戏中,我们将扮演黄色的鸭子 ...

  8. .NET : 开发ActiveX控件(转载)

    我估计有些朋友不清楚ActiveX控件,但这篇博客不是来解释这些概念的.如果你对ActiveX的概念不清楚,请参考这里: http://baike.baidu.com/view/28141.htm 这 ...

  9. 成都Uber优步司机奖励政策(3月3日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. 成都Uber优步司机奖励政策(1月8日)

    1月8日 奖励政策 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblog ...