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

来源:互联网 发布:对网络课程的认识 编辑:程序博客网 时间:2024/06/04 22:10

(一)简介:

什么是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 shellHBase Shell; enter 'help<RETURN>' for list of supported commands.Type "exit<RETURN>" to leave the HBase ShellVersion: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010hbase(main):001:0> 

输入 help 然后 <RETURN> 可以看到一列shell命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。

创建一个名为 test 的表,这个表只有一个 列族 为 cf。可以列出所有的表来检查创建情况,然后插入些值。

hbase(main):003:0> create 'test', 'cf'0 row(s) in 1.2200 secondshbase(main):003:0> list 'table'test1 row(s) in 0.0550 secondshbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'0 row(s) in 0.0560 secondshbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'0 row(s) in 0.0370 secondshbase(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+CELLrow1       column=cf:a, timestamp=1288380727188, value=value1row2       column=cf:b, timestamp=1288380738440, value=value2row3       column=cf:c, timestamp=1288380747365, value=value33 row(s) in 0.0590 seconds

Get一行,操作如下

hbase(main):008:0> get 'test', 'row1'COLUMN      CELLcf:a        timestamp=1288380727188, value=value11 row(s) in 0.0400 seconds

disable 再 drop 这张表,可以清除你刚刚的操作

hbase(main):012:0> disable 'test'0 row(s) in 1.0930 secondshbase(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.96Hadoop-0.20.205SXXHadoop-0.22.xSXXHadoop-1.0.xSSSHadoop-1.1.xNTSSHadoop-0.23.xXSNTHadoop-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版本不匹配问题有不同表现,但看起来都像挂掉了。

  

阅读全文
0 0