HBASE 系列-入门

HBase最新稳定版本是2017年7月份的1.2.6版本。很多用户还是0.92.x 。
尽管版本不同,原理确是相似的。若觉得长,可挑重点看。
下载地址:hbase-1.2.6-bin.tar.gz

说明

本文主要讲在本地测试环境的HBASE的安装配置,可以安装VMWare虚拟机,
CDH版本会在另外文章发表。

1.简介

以下简单理解,有个感性认识,面试时可忽悠

  1. 一种类似KV的NoSql数据库。
  2. 一种“强一致性”读写,而非“最终一致性”的数据存储,很适合快速实时聚合统计的计算任务。
  3. 随着你的数据增长,Hbase会自动分片sharding,重新分布数据。
  4. RegionServer 可以自动fallover检测。
  5. 可以用HDFS作为文件存储系统
  6. 支持作为大规模MR并行计算的数据源和存储地。
  7. 可以用Java Client API 操作HBASE
  8. 可以用Thrift和Restful 非JAVA语言操作
  9. 海量数据查询时,可以用Block Cache和Bloom Filter作为优化

2.使用场景

首先,你要有足够的数据,有亿级别和数十亿级别时候比较适合,百万,千万级别的用传统的RDBMS数据库是更好的选择。

其次,你可以容忍没有RDBMS那种字段类型,二级索引,事务,高级查询语法等功能.

第三,你要确保有足够的硬件资源,HDFS的datanode最有有5个(副本因子为3,NameNode,SecondNameNode 2个)。

有HDFS了,为何还需要HBase?

HDFS只是非常适合存储大规模files而已,并没有提供record的快速检索和更新功能,而HBASE则提供。

3. 安装

重点注意事项

3.1 JAVA_HOME 配置

JAVA_HOME=/usr/jdk (注,必须在JDK7以上)

在HBASE集群中的每个节点 hbase-env.sh里配置

HBASE&JDK版本的支持

Base Version JDK7 JDK 8
2.0 Not Supported yes
1.3 yes yes
1.2 yes yes
1.1 yes Running with JDK 8 will work but is not well tested.

3.2 NTP设置

保证cluster集群里各个节点的时间一致。(自己去度娘)

3.3 设置ulimit (要学会估算)

Hbase 可能要求一次打开大量的文件,而系统个默认可能1024.最好是1024的整数备,如102400.

ulimit -n

估算示例:

1.一个RegionServer含100个region
2.一个region有3个ColumnFamily列簇
3.一个ColumnFamily平均3个StoreFiles

那么,JVM会open 100*3*3=900个 file descriptors

3.1单机 Standalone HABE

$ tar xzvf hbase-3.0.0-SNAPSHOT-bin.tar.gz
$ cd hbase-3.0.0-SNAPSHOT/

若果你在本地电脑安装,那么一个Instance就包行了所有的守护线程如Master, RegionServers, and ZooKeeper。他们运行在一个JVM虚拟机上。

如果你的Hbase是 0.94.x之前版本,需要配置
vi /ets/host127.0.0.1 localhost 
否则可能会报错。

不需要自己手动配置hbase data目录,在base-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>

启动HBASE

bin/start-hbase.sh

Hbase WEB UI访问

http://localhost:16010

Hbase 启动和停止

./bin/hbase shell

$ ./bin/stop-hbase.sh

3.2 伪分布式

vi hbase-site.xml
增加,如下

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

同时,修改hbase.root ,在HDFS里也也不需要手动创建目录

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

重启hbase服务后,可用hadoop命令看到结果

$ ./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

3.3 Full 分布式 HBASE

三个节点:node-a ,node-b,node-c

  1. 保证各个节点可以相互访问,关闭防火墙(否则,可能会出现 no route to host)
  2. node-a 必须可以登录 node-b 和 node-c (包括自身) ,如此以来,可以启动各个节点的守护进程。

在 node-a 上 生成SSH access

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

使用下面命令,将公钥拷贝到其它节点上

ssh-copy-id -i ~/.ssh/id_rsa.pub node-a
ssh-copy-id -i ~/.ssh/id_rsa.pub node-b
ssh-copy-id -i ~/.ssh/id_rsa.pub node-c

chmod 600 authorized_keys

3.若backup角色的master启动了,也需要按2操作来一遍,让node-b可以访问其它节点。 注意,别覆盖了,使用>> 而不是>

Node Name Master ZooKeeper RegionServer
node-a.example.com yes yes no
node-b.example.com backup yes yes
node-c.example.com yes yes yes

vi hbase-site.xml

增加zk配置

<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-a的hbase配置好后,打包scp到node-b和node-c节点。
在node-a节点启动

start-hbase.sh

启动的顺序一般是:

1.ZooKeeper starts first,
2.followed by the master,
3.then the RegionServers,

  1. finally the backup masters.

接下来验证下是否启动成功,使用Jps命令
node-a:

$ jps
20355 Jps
20071 HQuorumPeer (zk)
20137 HMaster

node-b:

$ jps
15930 HRegionServer
16194 Jps
15838 HQuorumPeer (zk)
16010 HMaster (backup)

node-c :

$ jps
13901 Jps
13639 HQuorumPeer (zk)
13737 HRegionServer

HQuorumPeer是由HBase控制和启动的,这里的zookeeper是HBASE自带的,一般适用于测试环境,生成环境建议用外部独立的ZK集群。
自带和外部独立的zk进程区别:

HQuorumPeer :自带
QuorumPeer :独立

HBase WEI UI 访问

http://node-a.example.com:16010/ 主master
http://node-b.example.com:16010/ 备master

3个节点的hbase集群,其实并不是非常有弹性,你可以试试kill掉master进程或RegionServer进程 观察日志看看。

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

推荐阅读更多精彩内容

  • 入门指南 1. 简介 Quickstart会让你启动和运行一个单节点单机HBase。 2. 快速启动 – 单点HB...
    和心数据阅读 4,323评论 1 41
  • hadoop2集群搭建详解------------------------天津九安医疗电子--吴伟 一、需要软件 ...
    hogface阅读 1,718评论 1 4
  • 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hb...
    飞鸿无痕阅读 50,064评论 19 271
  • 由于种种原因,曾经有一段非常长的时间狭隘地理解温柔,以为温柔的同义词可能会有娘炮,柔弱,做作。直到最近两年才渐渐开...
    Kokoishere阅读 695评论 0 0
  • 秋夜安静,灯火昏黄,没有月亮。凉风习习,让人精神,比抽一根烟管用。加过班,不想径直去坐地铁,最近有点疲惫,工作都是...
    象兔阅读 197评论 0 0