Hbase笔记一之基本概念,安装

简介

Hbase是hadoop领域中的一个数据库产品,是基于map(key,value)结构来存储数据实现海量数据的毫秒级查询。是一个高可靠的分布式存储系统,利用hdfs存储数据,利用mapreduce处理海量数据,利用zookeeper作为协调工具,按照列族存储的列式数据库。

关系型数据库如mysql,oracle在以下业务场景中不太适合,而habse则可以解决这些问题。

1数据量巨大达到亿级别关系数据库查询效率降低

2表中的字段随业务不断变化时多时少,关系数据库在定义表时字段个数是确定好的

3表中字段很多但业务中只需要查询很少的字段,关系数据库先从磁盘中获取全部字段再根据业务进行过滤

 

Hbase分布式存储,按照id横向切分成多个region

把数据文件横向拆分成多个文件存放在多个节点上,这样单个服务器的上的数据量就会减小,数据量变小查询效率自然提高。

表中的数据必须按照主键排序存储

因为数据文件存储在多个节点上这就要求表的数据必须是有序的,按照id的顺序进行排序存储,我们只需要管理一个映射文件即可。

列族,将每个节点上的文件进行纵向切分

假设有100个字段,hbase会按照业务要求将100个字段划分为多个列族,每个列族是独立的数据文件存储在磁盘上,一般按查询量来划分列族。

下图是一个简单的介绍,表有100个字段并被横向切分存储在server1和server2中,又根据业务情况将字段划分为2个列族,另有一个映射文件记录表中数据存在于那个server上。


Hbase是分布式存储,分为3大部分

Region server存放数据的节点

Master接收用户的操作负责做决策

Zookeeper它是存储master与regionserver的交互状态负责协调管理

 

Hbase逻辑结构

1命名空间namespace,类似关系数据库的database

2表

3行键rowkey,类似主键

4列族columnfamily

5列限定符column qualifier,类似表中的字段

6时间戳timestamp

7value本身

8单元格cell,是rowkey,columnfamily,timestamp,value的组合

Hbase是基于key,value存储的,其中key是行键value是其他全部的值,而在value中列族也是key,value结构,key是列限定符,value是带有时间戳的value。

         

查找数据

比如t1,r1,f1:c1,其中t1表示表,r1是行键,f1是列族,c1是列,hbase会先根据映射关系确定regionserver,再在region server上确定那个region,最后再在region上找到记录并取值,每次会根据单元纬度一步步缩小范围。

 

 

安装

下载

我下载的是1.1.8,不建议使用0.98因为之后的升级版本改动大

http://hbase.apache.org/





上传到linux上并解压缩

[root@shb01 local]# tar -zxvfhbase-1.1.8-bin.tar.gz

 

Hbase目录

lib:存放依赖架包,我下载的这个版本的hbase依赖hadoop2.5.1

bin:存放hbase的命令脚本,主要用到start-hbase.sh,stop-hbase.sh,hbase,其中cmd文件是windows下使用。

conf:是配置文件主要有3个,hbase-env.sh,regionservers,hbase-site.xml

 

Hbase有3种启动方式本地,伪分布,集群。

本地模式

启动hdfs再执行bin目录下的start-hbase.sh即可

[root@shb01hbase-1.1.8]# start-dfs.sh

[root@shb01hbase-1.1.8]# bin/start-hbase.sh

使用jps查看HMaster进程已经启动

[root@shb01hbase-1.1.8]# jps

4491 NameNode

4586 DataNode

4758SecondaryNameNode

5320 Jps

4972 HMaster

浏览器中输入http://shb01:16010/master-status,访问16010端口


集群模式

我有两个linux节点分别是192.168.79.131(shb01)和192.168.79.139,将在这连个服务器上搭建一个hbase集群。

修改192.168.79.131中hbase目录下conf的3个配置文件

hbase-env.sh文件最后加入3个配置

export  HBASE_MANAGES_ZK =true  //表示不使用外部zookeeper,由hbase自己管理

export  JAVA_HOME=/usr/local/jdk1.7.0_79//jdk

export  HBASE_LOG_DIR=/usr/local/logs/hbase//日志位置

 

hbase-site.xml中修改如下:

hbase.rootdir:命名空间,表,数据的存放目录

hbase.tmp.dir:hbase的临时目录

hbase.cluster.distributed:是否分布式集群,这里是true

hbase.zookeeper.quorum:hbase启动依赖zookeeper,这个表示zookeeper节点

hbase.zookeeper.property.dataDir:zookeeper数据存放地址

hbase.rpc.timeout:rpc配置,不如此项不配置则默认半小时后关闭HMaster进程

<configuration>
<property >
	<name>hbase.rootdir</name>
	<value>hdfs://shb01:9000/hbase</value>
</property>
<property>
	<name>hbase.tmp.dir</name>
	<value>/usr/local/hadoop_repo/hbase/tmp</value>
</property>
<property>
	<name>hbase.cluster.distributed</name>
	<value>true</value>
</property>
<property>
	<name>hbase.zookeeper.quorum</name>
	<value>shb01,192.168.79.139</value>
</property>
<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/local/hadoop_repo/hbase/zk</value>
</property>
<property>
    <name>hbase.rpc.timeout</name>
    <value>1440000</value>
</property>
<property>
	<name>zookeeper.session.timeout</name>
	<value>90000</value>
</property>
<property>
    <name>hbase.zookeeper.property.tickTime</name>
    <value>9000</value>
</property>
<property>
	<name>hbase.regionserver.restart.on.zk.expire</name>
	<value>true</value>
</property>
</configuration>


regionservers

    在regionservers文件中加入节点信息

shb01

192.168.79.139

拷贝当前节点的hbase到139节点下

[root@shb01 local]# scp -r hbase-1.1.8/ root@192.168.79.139:/usr/local/

 

配置环境变量

在etc/profile中将hbase配置进去

export HBASE_HOME=/usr/local/hbase-1.1.8

exportPATH=.:$JAVA_HOME/bin:/usr/local/hadoop-2.6.0/bin:/usr/local/hadoop-2.6.0/sbin:/usr/local/sqoop-1.4.6/bin:$HBASE_HOME/bin:$PATH

 

最后在131节点启动hbase

[root@shb01 local]# start-hbase.sh

从输出信息看Hbase先启动zookeepr,再启动master,最后启动region server。之后在131上执行jps会看到有HMaster,HRegionServer,HQuorumPeer进程,139上有HRegionServer,HQuorumPeer进程。

注意要启动hadoop集群

 

浏览器中访问http://shb01:16010/可以看到hbase信息,页面显示server端口是16020



至此,一个简单的hbase集群搭建完毕。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值