HBase入门-安装

HBase是建立在Hadoop文件系统之上的分布式面向列的数据库,它是横向扩展的。它利用了Hadoop的文件系统(HDFS)提供的容错能力。

HBase提供对数据的随机实时读/写访问,可以直接HBase存储HDFS数据。

准备

  • 安装JDK1.8+
  • 下载 hbase-2.0.0-beta-1-bin.tar.gz 包,并解压到 /apps/目录下。
  • 修改 conf/hbase-env.sh 文件,设置 JAVA_HOME 变量
export JAVA_HOME=/opt/jdk1.8.0_112

单机模式

单机运行模式提供了一种最简单运行方式来方便开发人员在单机模式下开发调试。使用起来也非常简单。

修改 conf/hbase-site.xml 文件

  • 使用 hbase.rootdir 参数来设置 hbase 保存数据的路径。这里使用 “file://” 表明是使用的本地目录。也可以使用 Hadoop 的 “hdfs://”来使用分布式文件系统。
  • 设置 zookeeper 数据保存路径。
    完整文件内容如下:
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///apps/hbase-2.0.0-beta-1/data/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/apps/hbase-2.0.0-beta-1/data/zookeeper</value>
  </property>
</configuration>

运行 hbase

使用下面的命令启动 hbase 集群

$ bin/start-hbase.sh

启动完成后,可以访问下面的地址来查看集群的详细信息。

http://192.168.0.192:16010/

测试

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

  • 表是行的集合。
  • 行是列族的集合。
  • 列族是列的集合。
  • 列是键值对的集合。

集群启动后,我们可以使用hbase自带的shell来做一些数据库操作,如下:

# 启动shell
$ bin/hbase shell

# 创建 user 表,其中包括两个列族 base 和 address。
# base列族用来保存用户基本信息,username和password
# address列族用来保存家庭和办公地址 
> create 'user', 'base', 'address'
Created table user
Took 2.9153 seconds 

# 查看 user 表
> list 'user'
TABLE
user
1 row(s)
Took 0.1178 seconds 

# 向 user 表写入数据
> put 'user', 'row1', 'base:username', 'user1'
> put 'user', 'row1', 'base:password', 'user1'
> put 'user', 'row1', 'address:home', 'user1 home'
> put 'user', 'row1', 'address:office', 'user1 office'

> put 'user', 'row2', 'base:username', 'user2'
> put 'user', 'row2', 'base:password', 'user2'
> put 'user', 'row2', 'address:home', 'user2 home'
> put 'user', 'row2', 'address:office', 'user2 office'

# 查询 user 表中的数据
> scan 'user'
ROW                                        COLUMN+CELL
 row1                                      column=address:home, timestamp=1516586881667, value=user1 home
 row1                                      column=address:office, timestamp=1516586887852, value=user1 office
 row1                                      column=base:password, timestamp=1516586875823, value=user1
 row1                                      column=base:username, timestamp=1516586869321, value=user1
 row2                                      column=address:home, timestamp=1516586916024, value=user2 home
 row2                                      column=address:office, timestamp=1516586922659, value=user2 office
 row2                                      column=base:password, timestamp=1516586946567, value=user2
 row2                                      column=base:username, timestamp=1516586910234, value=user2

# 查询 user 表的一行数据
> get 'user', 'row1'
get 'user', 'row1'
COLUMN                                     CELL
 address:home                              timestamp=1516586881667, value=user1 home
 address:office                            timestamp=1516586887852, value=user1 office
 base:password                             timestamp=1516586875823, value=user1
 base:username                             timestamp=1516586869321, value=user1

# 删除 user 表的一行数据
> delete 'user', 'row2'

# 删除 user 表。需要先disable user表,然后才能删除。
> disable 'user'
> drop 'user'

停止 hbase 集群

$ bin/stop-hbase.sh

伪分布式集群模式

这里为了简化没有使用Hadoop的HDFS,而是仍然使用本地存储。

修改 conf/hbase-site.xml 设置 hbase 为分布式集群模式

修改后的 conf/hbase-site.xml 文件内容如下:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///apps/hbase-2.0.0-beta-1/data/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/apps/hbase-2.0.0-beta-1/data/zookeeper</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
</configuration>

启动 HBase 伪分布式集群的主 master

$ bin/start-hbase.sh

启动 HBase 伪分布式集群的备份 master

这里使用 local-master-backup.sh 命令来启动备份master,其中

  • 主master使用 16010,16020和16030三个端口
  • 第二个备份 master使用16012, 16022和16032三个端口
  • 第三个个备份 master使用16013, 16023和16033三个端口
$ bin/local-master-backup.sh start 2
$ bin/local-master-backup.sh start 3

启动 HBase 伪分布式集群的区域服务器

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

测试

可以继续使用单机模式的例子来验证集群的正确性。

停止集群

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

$ bin/local-master-backup.sh stop 2
$ bin/local-master-backup.sh stop 3

$ bin/stop-hbase.sh

分布式集群模式

这里准备了三台服务器bd1,bd2和bd3来演示 HBase 的分布式集群模式。其中:

  • bd1 作为主master
  • bd2 作为备份master
  • bd2,bd3 作为区域服务器

配置 SSH 免密码登陆

首先在其中一台机器上使用 ssh-keygen 工具来创建密钥,如下

ssh-keygen -t rsa

使用 ssh-copy-id 命令自动在目标服务器上生成~/.ssh/authorized_keys文件

ssh-copy-id -i ~/.ssh/id_rsa.pub <目标机器>

配置 conf/hbase-site.xml

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///apps/hbase-2.0.0-beta-1/data/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/apps/hbase-2.0.0-beta-1/data/zookeeper</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>bd1,bd2,bd3</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
</configuration>

创建 conf/backup-masters

定义备份master节点

bd2

配置 conf/regionservers

定义区域服务器节点

bd2
bd3

启动集群

$ bin/start-hbase.sh

测试

可以继续使用单机模式的例子来验证集群的正确性。

停止集群

$ bin/stop-hbase.sh
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容