您的位置:首页 > 运维架构 > Shell

Hbase简介,配置,shell,与Hadoop版本对应

2017-11-04 18:26 387 查看
(一)简介:

什么是Hbase

  Hbase十一个高可靠性,高性能,面向列,可伸缩的分布式存储系统。通俗说,Hbase是要一个分布式的列式数据库。因为在集群上分布式部署,数据有备份,所以可靠,机器多,所以性能高,可以动态增删节点,所以可伸缩。

  利用Hbase技术可在廉价PC Server上搭建起大规模结构化存储集群,更具体说是仅仅需要使用普通的硬件配置,就能够处理由成千上万行和列所组成的大型数据。

  Hbase的目标是存储并处理大量的数据,存储并处理,就是说,Hbase除了可以存储数据,还可以计算,计算就是指MapReduce运行在Hbase上,运行在HDFS上就可以运行在Hbase上,因为Hbase的底层是存到HDFS上

  Hbase是GoogleBigtable的开源实现,也有很多不同之处。比如Google BigTable利用GFS作为其文件存储系统,Hbase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,Hbase同样利用Hadoop MapReduce来处理Hbase中的海量数据;Google Bigtable利用Chubby作为协同服务,Hbase利用Zookeerper作为对应。

  简单说,Hbase是分布式的列式存储数据库。

  与传统数据库的对比

传统数据库遇到的问题

数据量很大的时候无法存储
没有很好的备份机制
数据达到一定数量的时候开始缓慢,很大的话基本无法支撑(传统数据库适合存一些关系型数据)。
Hbase的优势

线性扩展,随着数据量增多可以通过节点扩展进行支撑
数据存储在hdfs上,备份机制健全
通过Zookerper协调,访问速度快
Hbase集群中的角色
一个或者多个主节点

多个从节点,HregionServer

(二)Hbase安装

获取hbase0.94.14

wget http://archive.apache.org/dist/hbase/hbase-0.94.14/hbase-0.94.14.tar.gz
解压 hbase0.94.14

tar -zxvf hbase-0.94.14.tar.gz

重命名

mv hbase-0.94.14 hbase

Hbase环境搭建,安装Hbase

第一个:hbase-env.sh

进入conf ,修改hbase-env.sh

export JAVA_HOME=/usr/java/jdk1.8


//告诉hbase使用Hbase的zk
export HBASE_MANAGES_ZK=true


Hbase依赖一个zookeeper的,集群所有的节点和客户端都必须能够访问zookeeper。默认的情况下Hbase会管理一个zookeep集群。这个集群会随着Hbase的启动而启动。当然,你也可以自己管理一个zookeeper集群,但需要配置Hbase 。你需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK 来切换。这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper.

让Hbase使用一个现有的不被Hbase托管的Zookeep集群,需要设置 conf/hbase-env.sh文件中的HBASE_MANAGES_ZK 属性为 false

第二个:hbase-site.xml

<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://IP地址:9000/home/alan/hbase/tmp</value>
</property>


<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>


<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/alan/hbase/zookeeper</value>
</property>


进入Hadoop的bin目录,输入start-hbase.sh,启动Hbase。

(三)Hbase Shell

shell连接你的HBase
$ ./bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010

hbase(main):001:0>

输入 help 然后 <RETURN> 可以看到一列shell命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。
创建一个名为 
test
 的表,这个表只有一个 列族 为 
cf
。可以列出所有的表来检查创建情况,然后插入些值。
hbase(main):003:0> create 'test', 'cf'
0 row(s) in 1.2200 seconds
hbase(main):003:0> list 'table'
test
1 row(s) in 0.0550 seconds
hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0560 seconds
hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0370 seconds
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0450 seconds

以上我们分别插入了3行。第一个行key为
row1
, 列为 
cf:a
, 值是 
value1
。HBase中的列是由 列族前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是
a
.
检查插入情况.
Scan这个表,操作如下
hbase(main):007:0> scan 'test'
ROW        COLUMN+CELL
row1       column=cf:a, timestamp=1288380727188, value=value1
row2       column=cf:b, timestamp=1288380738440, value=value2
row3       column=cf:c, timestamp=1288380747365, value=value3
3 row(s) in 0.0590 seconds

Get一行,操作如下
hbase(main):008:0> get 'test', 'row1'
COLUMN      CELL
cf:a        timestamp=1288380727188, value=value1
1 row(s) in 0.0400 seconds

disable 再 drop 这张表,可以清除你刚刚的操作
hbase(main):012:0> disable 'test'
0 row(s) in 1.0930 seconds
hbase(main):013:0> drop 'test'
0 row(s) in 0.0770 seconds

关闭shell
hbase(main):014:0> exit

(四)停止Hbase
运行Hbase停止脚本来停止Hbase

./bin/stop-hbase.sh


(五)与Hadoop的版本对应

在安装Hadoop以及Hbase之前,找对相应的版本是非常重要的。选择 Hadoop 版本对HBase部署很关键。下表显示不同HBase支持的Hadoop版本信息。基于HBase版本,应该选择合适的Hadoop版本。我们没有绑定 Hadoop 发行版选择。可以从Apache使用 Hadoop 发行版,或了解一下Hadoop发行商产品:http://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support

HBase-0.92.xHBase-0.94.xHBase-0.96
Hadoop-0.20.205SXX
Hadoop-0.22.xSXX
Hadoop-1.0.xSSS
Hadoop-1.1.xNTSS
Hadoop-0.23.xXSNT
Hadoop-2.xXSS
  S = supported and tested,支持

  X = not supported,不支持

  NT = not tested enough.可以运行但测试不充分

  由于 HBase 依赖 Hadoop,它配套发布了一个Hadoop jar 文件在它的 lib 下。该套装jar仅用于独立模式。在分布式模式下,Hadoop版本必须和HBase下的版本一致。用你运行的分布式Hadoop版本jar文件替换HBase lib目录下的Hadoop jar文件,以避免版本不匹配问题。确认替换了集群中所有HBase下的jar文件。Hadoop版本不匹配问题有不同表现,但看起来都像挂掉了。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: