hbase全分布式集群的搭建

1. 简介

Apache HBase™是Hadoop数据库,这是一个分布式,可扩展的大数据存储。
当你需要随机、实时读取/写入海量数据时使用Apache HBase™。hbase的目标是托管非常大的表(数十亿行 × 百万列)在商业硬件集群上。 Apache HBase是一个开源的,分布式的,版本化的非关系数据库模型,它是在Chang等人的Google Bigtable:结构化数据分布式存储系统之后建立的。就像Bigtable利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似Bigtable的功能。

2. HBase特性

  • 没有真正的索引:行是顺序存储的,每行中的列也是,所以不存在索引膨胀的问题,而且插入性能和表的大小无关。
  • 自动分区:在表增长的时候,表会自动分裂成区域,并分布到可用的节点上。
  • 线性扩展和对于新节点的自动处理:增加一个节点,把它指向现有集群并运行regionserver。区域自动重新进行平衡,负载均匀分布。
  • 普通商用硬件支持
  • 容错:大量节点意味着每个节点的重要性并不突出。并不担心单个节点失效。
  • 批处理:MapReduce集成功能使我们可以用全并行的分布式作业根据”数据的位置”来处理他们。

3. 下载安装

前提条件:安装hbase前需要先安装jdk,hadoop,zookeeper。

cd /opt
#大家在官网上下载一个稳定版本的就行了,我这里是1.2.6版本的。
wget http://mirrors.hust.edu.cn/apache/hbase/stable/hbase-1.2.6-bin.tar.gz
#解压
tar -zxvf hbase-1.2.6-bin.tar.ge

4. 集群配置

#我们需要配置三个文件:hbase-env.sh,hbase-site.xml,regionservers

cd hbase-1.2.6
#打开hbase-env.sh文件,修改如下两项,保存退出就OK了
vim conf/hbase-env.sh
export JAVA_HOME=/opt/jdk1.8.0_131 # jdk的路径
export HBASE_MANAGES_ZK=false # 不使用hbase自带的zookeeper

#打开文件hbase-site.xml,在文件的最后添加以下内容,之后保存退出。
#hbase.zookeeper.quorum的值是zookeeper集群的主机名
#hbase.zookeeper.property.dataDir的值是zookeeper 数据保存的目录 
#hbase.rootdir 的值是在HDFS的NameNode的位置上存储数据的目录
#hbase.cluster.distributed设为true表示启用集群模式
vim conf/hbase-site.xml
<configuration>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>example1,example2,example3</value>
    <description>The directory shared by RegionServers.
    </description>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/zookeeper</value>
    <description>Property from ZooKeeper's config zoo.cfg.
    The directory where the snapshot is stored.
    </description>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://example1:9000/hbase</value>
    <description>The directory shared by RegionServers.
    </description>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    <description>The mode the cluster will be in. Possible values are
      false: standalone and pseudo-distributed setups with managed Zookeeper
      true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
    </description>
  </property>
</configuration>

#打开文件regionservers,在里面填上slaves节点的主机名,每行一个
#example1是master,example2,example3是slaves。
vim conf/regionservers
example2
example3

#这样就全部配置完了

最后我们可以设置一下环境变量

vim /etc/profile
export NBASE_HOME=/opt/hbase-1.2.6
export PATH=$PATH:$HBASE_HOME/bin

保存退出之后别忘了执行source /etc/profile命令
之后,我们可以把这个hbase-1.2.6文件夹复制到集群中的其他机器上去。

scp -r hbase-1.2.6 root@example2:/opt
scp -r hbase-1.2.6 root@example3:/opt

5. 启动集群

我们在example1上执行命令:bin/start-hbase.sh,停止集群的话请使用bin/stop-hbase.sh命令。
使用jps命令看一下example1是否有HMaster,example2和example3是否有HRegionServer,有的话就表示集群搭建成功了。
在地址栏上输入网址http://example1:60010就可以进入hbase的UI界面看到更详细的信息了。

6. hbase基础命令

 #进入到hbase的交互模式下,使用help命令可以看到所有的帮助信息,使用exit命令退出交互模式。
bin/hbase shell
#如果不小心敲错字符了,我们需要按Ctri+Backspace来进行回退。
status 查看当前运行服务器状态
version 版本查询
create 'test','info' #创建一张表test,该表有一个列簇为info
exits '表名字' 判断表存在
list #列出所有的表
scan 'test '#查看表内容
describe 'test' #查看表结构
put 'test','0001','info:username','henry' #插入一条数据,rowkey为0001,在info列簇中的username列的值为henry
get 'test','0001','info:username' #查询rowkey为0001,在info列簇中的username列的值
delete 'test','0001','info:username' #删除rowkey为0001,在info列簇中的username列的数据
is_enabled 'test' #查看表状态,是否是active状态
truncate 'test' #清空表中的数据
disable 'test' #把表标记为失活状态
drop 'test' #删除表,删除之前需执行disable命令

END

    原文作者:盗梦者_56f2
    原文地址: https://www.jianshu.com/p/bd317bb643b2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞