Hbase入门教程和分布式的安装部署

2017-03-21 11:54:02来源:CSDN作者:qq_25843323人点击

我们一般什么时候用Hbase呢?
Hadoop关于海量数据的存储有一个组件叫文件系统,当我们需要随机访问文件系统的某一条数据的时候数据是非常慢的,发杂度也比较高,就算是通过madreduce也一样很慢。

这里写图片描述

那么,Hbase和他有什么区别呢?Hbase是一个分布式的数据库(Nosql数据库不支持sql语法,支持的查询功能很简单,但是数据的结构很灵活),数据库用来阻止组织数据的,然后通过某一种格式转换成一个文件。可以高速随机的去访问某一数据。Hbase中的数据最终要保存成文件,最终存放在hdfs中

这里写图片描述

Hbase的表结构:
这里写图片描述

这里写图片描述

Hbase的安装(apache的软件的安装基本都是解压之后修改配置文件就可以了)
1.上传hbase安装包
安装包下载地址:
2.解压安装包
3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了)
cd 到Hbase里面
(注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下)

3.1修改hbase-env.shexport JAVA_HOME=/usr/java/jdk1.7.0_55

(可使用echo $JAVA_HOME查看java的路径)
//Hbase有自己内部的zk,如果要告诉hbase使用外部的zk需要配置
export HBASE_MANAGES_ZK=false

vim hbase-site.xml<configuration>    <!-- 指定hbase在HDFS上存储的路径,新建一个HBASE文件存放数据 -->    <property>            <name>hbase.rootdir</name>            <value>hdfs://ns1/hbase</value>    </property>    <!-- 指定hbase是分布式的 -->    <property>            <name>hbase.cluster.distributed</name>            <value>true</value>    </property>    <!-- 指定zk的地址,多个用“,”分割 -->    <property>            <name>hbase.zookeeper.quorum</name>            <value>weekend05:2181,weekend06:2181,weekend07:2181</value>    </property></configuration>

(因为Hbase是一个集群,所以我们要知道这个集群节点有哪一些角色)
这里写图片描述
(安装的时候由一个文件指定了regionservers有哪一些,因为regionservers主要是用来管理表数据的,而表数据又是存放在hdfs的,而datanade又是存储数据的,所以从节点放在和datanate一起,这样存储数据的时候就不用经过网络了)
vim regionservers(列出来从节点)
weekend03
weekend04
weekend05
weekend06

要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下,否侧无法识别ns1是什么
3.2拷贝hbase到其他节点
scp -r /weekend/hbase-0.96.2-hadoop2/ weekend02:/weekend/
scp -r /weekend/hbase-0.96.2-hadoop2/ weekend03:/weekend/
scp -r /weekend/hbase-0.96.2-hadoop2/ weekend04:/weekend/
scp -r /weekend/hbase-0.96.2-hadoop2/ weekend05:/weekend/
scp -r /weekend/hbase-0.96.2-hadoop2/ weekend06:/weekend/

4.将配置好的HBase拷贝到每一个节点并同步时间。

5.启动所有的hbase
分别启动zk
./zkServer.sh start
启动hdfs集群
start-dfs.sh
启动hbase,在主节点上运行:
start-hbase.sh
6.通过浏览器访问hbase管理页面
192.168.1.201:60010
在bin下./hbase shell打开命令行界面
**基本操作命令(hbase没有库的概念,只有表):
这里写图片描述

list一下可以查看创建的表
统计数据的条数:count ‘user_info’

插入数据:(插入数据,hbase会对数据进行自动排序,行之间按照行键进行字典顺序排序,列祖内部,kv对之间按照key字典顺序排列)
这里写图片描述

查看:scan 表名
get

条件查询:(比较的条件是通过二进制去比较的)
这里写图片描述

7.为保证集群的可靠性,要启动多个HMaster
hbase-daemon.sh start master

Hbase的吞吐量是很大的,并发量也是很大的,原因是他的大多数热的数据都是放在内存之中的,过一段时间会把访问的少的数据从内存中删除。hbase存进来的数据只有一种类型,二进制的数组byte数组(在命令行进去的时候是会把二进制的数据转成相应的格式)

region的大小可以在配置文件里配置,向Hbase插入数据的时候实际上是往region中存入数据,当region太大的时候是会进行切分的

这里写图片描述

这里写图片描述

图片内容解读:
首先是有一个活跃的HMaster管理着这些regionserver,regionserver实际上存储的是建立的那些表的reegion,HLog相当于是记录元数据,Store是存储数据的单元,一个region里有多个store(表中的一个列族就是一个store,每一个store里面都有一个Memstore,相当于一个内存的缓存,这这个store的热数据放到Memstore里面去,所以客户端去查数据的时候是先查Memstore里面的)

——-Hbase的寻址机制
寻址什么意思呢?
查询的时候想要找到某一条数据首先要找到它是在哪一个region,这个时候有一个Meta表去记录哪一行到哪一行在哪一个region,当Meta表很大的时候也需要分布式存储了,那么这个时候我们应该还有一个root表去记录Meta表,而root表只存放在一台regionServer机器上

所以寻址的时候:先找Root表—>再找Meta表—>最后找到region

这里写图片描述

这里写图片描述

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台