hbase简介 搭建
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/jdkexport 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 修改内容sliver103sliver104
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 SecondaryNameNodesliver103:
[root@sliver103 local]# jps
13136 Jps
17065 DataNode
17174 TaskTracker
16343 QuorumPeerMain
12830 HRegionServersliver104:
[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/jdkconf/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
如下截图:
hbase简介 搭建相关推荐
- Hbase简介及常用命令相关知识总结
文章目录 目录 前言: 1.Hbase简介 1.1.什么是Hbase 1.2.与传统数据库的对比 1.3.Hbase集群中的角色 2.Hbase数据模型 3.Hbase命令 总结: 目录 前言: 对于 ...
- HBase环境搭建与基本使用(保姆级教程)
HBase 2.x环境搭建与基本使用 一.HBase简介 数据模型 系统架构 二.HBase伪分布式配置 0. 准备工作 1. HBase配置文件介绍 2. HBase安装与伪分布配置 1)安装HBa ...
- HBase简介及安装
一.HBase简介 1.什么是HBase HBase(Hadoop DataBase)是一个高可靠性.高性能.面向列.可伸缩.实时读写的分布式存储系统,利用HBase技术可在廉价PC Server上搭 ...
- 【hadoop生态之Hbase】HBASE简介【笔记+代码】
一.HBaes介绍 1.1.HBase简介 HBase是一个分布式的.面向列的开源数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式. 大:上亿行.百万 ...
- HBase 2.x ---- HBase简介
HBase 2.x ---- HBase简介 1. HBase定义 2. HBase数据模型 1. HBase逻辑结构 2. HBase物理存储结构 3. 数据模型 3. HBase基本架构 1. H ...
- HBase基础【HBase简介、HBase安装、HBase shell操作】
文章目录 一 HBase简介 1 HBase定义 2 HBase数据模型 (1) HBase逻辑结构 (2) HBase物理存储结构 (3)数据模型 a)Name Space b)Table c)Ro ...
- 大数据技术之 HBase简介
大数据技术之 HBase 第 1 章 HBase 简介 1.1 HBase 定义 HBase 是一种分布式.可扩展.支持海量数据存储的 NoSQL 数据库. 1.2 HBase 数据模型 逻辑上,HB ...
- 【Youtobe trydjango】Django2.2教程和React实战系列一【项目简介 | 搭建 | 工具】
[Youtobe trydjango]Django2.2教程和React实战系列一[项目简介 | 搭建 | 工具] 1.环境与选型说明 2.技术栈选型说明 3.django搭建详解 3.1. 项目虚拟 ...
- Phoenix(sql on hbase)简介
Phoenix(sql on hbase)简介 介绍: Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC dri ...
最新文章
- 计算两个时间的间隔时间是多少
- [LeetCode] Restore IP Addresses 复原IP地址
- vmware虚拟化(二)安装vsphere5.1
- css3制作左右拉伸动画菜单
- java中gson的简单使用
- QT Creator使用matlab库文件读取.mat文件数据
- 计算机网络 | IP协议相关技术与网络总结 :DNS、ICMP、DHCP、NAT/NAPT、通信流程
- 优朋普乐大数据_优朋普乐黑维炜:互动电视市场已进入成熟发展期
- 信息时代与人工智能时代的教育变革
- IOC操作Bean管理注解方式(完全注解开发)
- php原生类,反序列化之PHP原生类的利用
- django-模板语言
- Zookeeper Tutorial 2 -- Programmer's Guide
- css按钮大小固定,在CSS中创建一个固定宽度的按钮
- 拿 1% 月收入买比特币,比养老金更靠谱! —— CSDN 蒋涛答王峰十问
- 6. Controller
- oracle启动pmon,PMON和SMON的功能 - oracle - 善待自己,切莫活在过去
- EPS电动转向系统分析
- 常见的导数公式和积分公式
- IEEE Transactions on Mobile Computing -TMC
热门文章
- java 栈 先进后出_java堆栈 先进后出是什么意思
- iptables禁止访问1端口和80端口
- 他漂洋过海到非洲创业,先后成立两家企业
- com.android.rrpgdemo,Android实现文本逐字显示View(类似rpg游戏人物对话,文本逐字显示)...
- 3D建模线上教学和线下教学的差异
- 背景图片背景颜色同时存在
- Excel如何快速给手机号码添加空格分段显示?
- python中的numel()函数
- Windows系统时间(FILETIME和SYSTEMTIME)
- 软件开发培训不得不选传智播客的九大理由