1 概念和地位:
是Hadoop领域的数据库,(类比于 hive在Hadoop领域文件系统的更高层抽象使用和封装)
高可靠性、高性能、面向列、可伸缩的分布式存储系统,(可伸缩:非常容易增加节点让计算和存储能力得到提升 面向列是hbase的一大特点)
利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群
HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,因此hbase是建立在hadoop基础上的。
利用Zookeeper作为协调工具。
2 行式存储和列式存储区别:
行式存储:
代表: mysql oracle sqlserver等老牌关系型数据库
几个特点:
a)
关系型数据库在产生的时候就在单机上做的,因此有时代局限性,
以前会分库,当这个单机数据库容量不够时,需要在另一台单机中存储,
这时候需要让客户端代码明确知道哪些数据在哪个机器上,
虽然现在也有mysql oracle主从搭建,但是操作不方便,部署麻烦
关系数据库是按行存储数据(物理存储方式),一行紧挨着一行,当一个表数据在几百万下没问题,
如果表很大(记录条数多 或者 列比较多) 比如电信上的宽表,一个表通常在100+个字段上,
这种表字段多好处在于避免多表连接查询
b)
关系型数据库在建表时,一下就把表字段 类型 类型占用长度指明,这样就把一行的空间给确定下来,
这样在查询的时候,
会根据长度(c语言指针)来去找对应位置下存储的数据,即使只获取100个字段的5个字段,也会将100个字段读取到后加载到内存然后将需要的5个字段获取到还给用户,这样耗内存和IO
c)
同时,在关系型数据库表中插入字段时,并不是所有字段都有值,好多都为null,
这些null在磁盘占用空间会预留出来以备后续插入数值,这样磁盘利用率降低
d) 非常适用于小规模数据, 几百几千M的
e) 每一列都有自己固定长度,在存储数据时,每一列都要检查长度是否符合列宽度的定义,这样在一下
几千上万条是可以的 如果一下是上千万处理 是处理速度跟不上的
列式存储:
0) 产生背景: 互联网大潮下,计算的复杂度(比如递归 天气预报计算)是无限的,产生的数据是无限多的,但是单机的计算能力和资源是有限的,因此大数据下hbase因用而生。
a) 特点: 表的字段按照业务查询频率分别分开,存在不同列(文件中)
一个表的不同字段 可能会被分到不同的列中, 不同的列被存储在不同文件中(本质还是存在文件中),
如果仅查询某些字段正好在这个文件中,那么打开此文件即可。
如果列值为Null 那么不会占用磁盘空间、
b) 哪些列应该放在一起?
综合业务中哪些常用到,就把这些常用到的拿出来放在一起,
不同列存在在不同文件下如何对应呢? hbase会在存储时做对应关系记录
c) 适合于: 数据过 XXG的规模 ,大宽表, 如果小规模下处理速度是低于关系型数据库的
d) 项目中,传统数据库到列式数据库的切换:
往往项目中仅仅是一个或者某个表变得很大,运行起来很慢,此时仅需要将这几张表移植到hbase中,
切换后对应的代码需要大改。
e) 数据分列存储,获取相同key的数据去不同列区域存储空间中查找, 即使查找多个字段也仅仅是去要查找的
字段所在区域查找即可, 而不需要像传统库那样查询所有列后在过滤得到需要的列
f) 因为列存储在不同区域中(当然你可以根据业务来设计哪些列放在一个区域中 哪些列放在另一个区域中,
并不是有几个列就要设计几个列区域来存),hbase可以增加很多列而不会受到查询效率限制,如果关系库设计成1000个列估计库都挂了,当然hbase表的列分别在哪些物理位置是需要一个表 meta来记录的。
现在用一个案例来说下大数据查询中列数据库快的原因: 增大IO
下面这种查询,数据分别去不同副本机器中获取同时达到获取数据不会重复的工作是让hbase控制的。
区域1 区域2 key1 name1 value1 | key1 name2 value2 1000W | | | 数据在key1 下分别是1000W, 列name1的数据存储在磁盘区域A内 列name2数据存储在磁盘区域B内, 硬盘读取数据时,耗费时间更多在磁头寻址和地址切换上, 如果是以行方式读取 key1 key2数据,磁头不断从区域A切换到区域B获取一行数据后在循环切换, 会消耗太多时间. 如果用传统数据库存储和查询,假如参数如下 key1,name1,name2 60min 100M/s 那么在以hbase集群中, 集群每份数据有三个副本, 分别从每份副本中读取列区域内数据的一部分, 这样总体能达到IO提高到 600M/s,理论读取时间降低到10min 获取不同数据并达到不重复是框架内部组件实现。 key1,name1 副本1 key1,name2 副本1 key1,name1 副本2 key1,name2 副本2 key1,name1 副本3 key1,name2 副本3
关于hbase结构介绍和与zk结合下操作细节 待续 目前没搞明白 ............................................
4 hbase列族简介图:
5 hbase 逻辑结构 物理结构 存储结构
5.1) 逻辑模型
表
行
列簇,是列的集合。
列,是不能脱离列簇而独立存在的。
行键,类似于主键。
时间戳,数据插入到HBase表的时间;是天然存在的。
5.2) 物理模型
HBase数据在进行存储时,是按照行键存储的。
列族,是单独存储一系列列的文件,下图中可以看到,hbase存储数据是以 列族为单位来存放数据块的
上图中,
从列的概念来看hbase--->hbase以列族方式存储和组织数据
从行的概念来看hbase--->hbase以region来切分表,防止表数据过大下列族数据都存储在一个块打开数据缓慢,如下图:
列族,hfile,region关系之个人理解
hbase是以列族为组织方式组织数据存储的,基于hbase存储数据量很大,
学生表(cf1基本信息表 cf2扩展信息表)
一个列族下,以学生表为例(cf1:name cf1:age cf1:score)假如以100行为一个基本单位(hfile 二进制形式存储 不能直接读取),那么一个 2000行的学生基本信息就需要 20个hfile来存储学生基本信息(cf1)的数据。
而从整个表行关系看(基本信息和扩展信息都看),那么多个列族从行关系切分,
基本表以1000行切分,同时扩展信息表以1000行横向切分,然后这两块组成一起叫做一个region(逻辑概念)
参看如下链接,region hfile datanode关系
5.3) 存储模型
HBase表是纵向划分为很多的列族,每个列族都对应一个hdfs文件。
HBase表是横向划分为很多region的,region是存放在不同的region server的。
当列簇对应的hdfs文件过大时,打开时会很慢,影响并发量。
将表中所有数据(即将hdfs文件拆分成多份)横向切分为多个region,后将每个region存放在不同的region server上,
比如前10000的数据放在server1 第10001-2000的放在server2 根据负载均衡 用户请求的在哪个范围内则调整到对应机器上执行
5.4) 体系结构
主从式结构,主节点称作master,从节点称作region server。
master接收到用户查询请求后 通过映射 转换,最后定位查询到region server
master映射机制:依靠如下表
-ROOT-和.META.是系统内部表。
关于上图详细解释:
集群安装如下:
5.搭建hbase集群(master作为主节点,sliver103和sliver104作为从节点) 5.1 在master上解压缩 [root@master local]# tar -zxvf hbase-0.94.7-security.tar.gz 重命名为hbase: [root@master local]# mv hbase-0.94.7-security hbase 5.2 编辑文件conf/hbase-env.sh 修改内容 export JAVA_HOME=/usr/local/jdk export HBASE_MANAGES_ZK=false 5.3 编辑文件conf/hbase-site.xml 修改内容 <property> <name>hbase.rootdir</name> hbase写数据默认路径是/tmp,为了长期保持,修改之 <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master,sliver103,sliver104</value> </property> 5.4 编辑文件conf/regionservers 修改内容 sliver103 sliver104 5.5 复制hbase到sliver103、sliver104节点 [root@master local]# scp -r hbase sliver103:/usr/local/ [root@master local]# scp -r hbase sliver104:/usr/local/ 5.6 启动hbase之前,要检查hadoop的hdfs、zookeeper集群是否正常运行 在hadoop0上执行bin/start-hbase.sh如下: [root@master bin]# start-hbase.sh starting master, logging to /usr/local/hbase/bin/../logs/hbase-root-master-master.out sliver103: starting regionserver, logging to /usr/local/hbase/bin/../logs/hbase-root-regionserver-sliver103.out sliver104: starting regionserver, logging to /usr/local/hbase/bin/../logs/hbase-root-regionserver-sliver104.out [root@master bin]# jps 9800 JobTracker 13967 QuorumPeerMain 9572 NameNode 25416 Jps 25238 HMaster 9721 SecondaryNameNode sliver103: [root@sliver103 local]# jps 13136 Jps 17065 DataNode 17174 TaskTracker 16343 QuorumPeerMain 12830 HRegionServer sliver104: [root@sliver104 network-scripts]# jps 21667 HRegionServer 28596 QuorumPeerMain 20799 TaskTracker 21898 Jps
5.6 附, 如果你想搭建hbase单节点,那么此时仅需使用hbse自带的zk即可,hbase配置文件修改为如下:
-
conf/hbase-env.sh 修改内容 export JAVA_HOME=/usr/local/jdk conf/hbase-site.xml 修改内容 <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property>
如果启动hbase后执行list报错,请看如下连接 出现ERROR: Can't get master address from ZooKeeper; znode data == null解决办法
如果关闭hbase报 pid 无法找到,那么轻参看这个链接:[HBase]停止集群报错,pid不存在的问题
5.7 检查,执行jps命令,在hadoop0上看到1个新的java进程,分别是HMaster
查看http://master:60010
如下截图:
相关推荐
在本文中,我们将深入探讨如何搭建一个Zookeeper和HBase集群,以及在过程中可能遇到的常见问题和解决方案。Zookeeper和HBase都是大数据处理领域的关键组件,Zookeeper作为一个分布式协调服务,而HBase是一个基于...
HBase伪分布式环境搭建及数据操作测试 本人成功搭建伪分布式的操作以及截图
#### 二、HBase简介 HBase是一款构建于Hadoop之上的分布式列式存储系统,其设计灵感来源于Google的BigTable论文。HBase提供了类似于传统关系型数据库的功能,但它是基于Hadoop的HDFS文件系统之上实现的,具有良好的...
新手Hadoop_hbase集群搭建,3台服务器节点Centos7,Hadoop2.7.4,HBase1.3.1,jdk8,zookpeer3.4.10 安装包也将上传,亲手搭建编写文档
Hadoop+HBase集群搭建详细手册 本文将详细介绍如何搭建Hadoop+HBase集群,包括前提准备、机器集群结构分布、硬件环境、软件准备、操作步骤等。 一、前提准备 在搭建Hadoop+HBase集群之前,需要准备以下几个组件:...
总的来说,搭建Hadoop、HBase、Spark和Hive集群涉及多个步骤,包括安装、配置、启动以及验证。整个过程需要对大数据处理原理有深入理解,并熟悉Linux系统的操作。完成后,这个集群可以处理大量数据,支持实时查询和...
《HBase上搭建广告实时数据处理平台——广点通》 在互联网广告行业中,实时数据处理平台对于广告的精准投放至关重要。腾讯广点通作为基于腾讯社交体系的效果广告平台,其WRAPENGINE项目旨在构建一个高效、可靠的...
【HBase 单机环境搭建】 在搭建 HBase 单机环境时,首要任务是确保你的系统已经安装了 Java 环境。HBase 的运行依赖于 Java,因此需要设置 `JAVA_HOME` 环境变量指向 JDK 的安装路径。例如,在这个环境中,`JAVA_...
搭建HBase详细的步骤,是份非常好的材料
在搭建HBase集群时,我们需要配置HBase的主RegionServer(Master)、RegionServer实例以及与Zookeeper的连接。此外,还要设置表和列族的属性,如块大小、缓存设置等,以优化性能。 在实际搭建过程中,首先,你需要...
搭建hbase集群的详细操作;搭建hbase集群的详细操作;
通常,在搭建HBase之前,需要先单独搭建并运行Zookeeper集群。安装Zookeeper的过程与安装Hadoop类似,需要设置环境变量、启动Zookeeper服务,并确保Zookeeper集群中的所有节点都能够正常通信。 ### HBase环境搭建 ...
本篇文章将深入探讨如何进行HBase的高可用分布式搭建,以便实现数据存储和访问的稳定性与可靠性。 一、HBase概述 HBase是Google Bigtable的开源实现,是Apache Hadoop生态系统中的一个关键组件。它为海量结构化数据...
《HBase集群搭建详解》 HBase,作为Apache的一个分布式列式存储系统,是构建大规模大数据处理的关键组件。本文将详述如何在多节点环境中搭建一个HBase集群,包括单机部署和集群部署的步骤。 首先,我们从单机部署...
hbase2.0环境搭建的知识点可以从多个维度展开,包括环境准备、软件安装、配置调整、服务启动以及性能优化等方面。 首先,环境准备是hbase2.0环境搭建的重要环节。文档中提到需要有hadoop2.7.5环境的搭建和启动,...
在搭建HBase分布式数据库系统时,需要注意集群中的ZooKeeper服务正常运行,它是保证集群状态一致性的重要组件。同时,需要合理配置HBase的参数,以便在性能和存储之间找到平衡。在实际操作中,还需要考虑网络带宽、...
hadoop_hbase从零搭建
### Hadoop+Zookeeper+Hbase集群搭建知识点详解 #### 一、安装环境要求 **1.1 HBase与JDK兼容性** - **Apache HBase** 的版本选择需考虑其与 Java Development Kit (JDK) 的兼容性。具体而言: - Apache HBase ...