Hadoop学习---Hadoop的HBase的学习
Hbase
Hbase的特点:
Hbase是bigtable的开源的仿制版本
建立在HDFS之上
可靠性,靠性能
大:一个表可以有上亿行,上百万列
面向列:面向列(族)的存储和权限控制,列(族)独立检索。
稀疏:对于为空(null)的列,并不占用空间,因此,表可以设计的非常稀疏。
列存储
可伸缩
时间戳
不可修改数据
Hbase的检索:
Row Key访问:
通过单个row key访问
通过row key的range
全表扫描
Row key行健(Row key)可以是任意字符串(最大长度是63KB,实际应用中长度一般为10-100bytes),在hbase内部,row key保存为字节数组。
存储时,数据按照Row key的字典序(byte order)排序村存储。
Hbase列族
Hbase表中的每个列,都归属与某个列族
列族是表的一部分(而列不是),必须在使用表之前定义
列名都以列族作为前缀。例如:course:history , course:math
都属于courses这个列族
Hbase的数据单元cell由{row key,column( =<family> + <label> ),version}唯一确定的单元
cell中的数据是没有类型的,全部是字节码形式存贮。
Hbase的数据存储
每个cell都保存同一份数据的多个版本。版本通过时间戳来索引。
时间戳可以有hbase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。
时间戳也可以由客户显示赋值。如果应用程序要避免数据版本冲突,就必须自己生成唯一性的时间戳。每个cell中,不同版本的数据按照时间倒序排序,及最新的数据排在最前面。
hbase提供了两种数据版本回收方式,一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近十天)。用户可以针对每个列族进行设置。
Hbase的物理存储
Table中的所有行都按照row key的字典序进行排列。
Table在行的方向上分割为多个Hregion
Hbase的存储
Region按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阈值的时候,Hregion就会等分为两个新的Hregion。当table中的行不断增多,就会有越来越多的Hregion。
Hbase的特点详解
Hregion是Hbase中分布式存储和负载均衡的最小单元。最小单元就表示不同的Hregion可以分布在不同的HRegion server上,但一个Hregion是不会拆分到多个server上。
HRegion虽然是分布式存储的最小单元,单并不是存储的最小单元。
事实上,HRegion由一个或者多个Store组成,每个store保存一个columns family。
每个Store又由memStore和0至多个StoreFile组成。
StoreFile以HFile格式存储在HDFS上。
Zookeeper作用
保证任何时候,集群中只有一个master。
存贮所有Region的寻址入口。
实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master。
存储Hbase的schema,包括有哪些table,每个table有哪些column family。
Master的作用
Master为Region server分配region
负责region server的负载均衡
发现失效的region server并重新分配其上的region
GFS上的垃圾文件回收
处理schema更新请求
Region Server的作用
Region Server维护Master分配给它的region,处理对这些region的IO请求
Region server负责切分在运行过程中变得过大的region
可以看到,client访问hbase上数据的过程并不需要master参与(寻址访问zookeeper和region server,数据读写访问region server),master仅仅维护着table和region的元数据信息,负载很低。
访问hbase接口
HBase Shell
Java API
Thrift Gateway
REST Gateway
Pig
Hive
Hbase配置
【更多参考】
大数据学习---Zookeeper+Hbase配置学习
Hbase shell
HBase为用户提供了一个非常方便的使用方式,我们称之为“HBase Shell”。HBase Shell提供了大多数的HBase命令,通过HBase Shell用户可以方便的创建、删除及修改表,还可以向表中添加数据、列出表中的相关信息等。
在启动HBase之后,用户可以通过下面的命令进入HBase Shell之中,命令./hbase shell
HBase Shell命令:
hbase shell命令 |
描述 |
alter |
修改列族(column family)模式 |
count |
统计表中行的数量 |
create |
创建表 |
describe |
显示表相关的详细信息 |
delete |
删除指定对象的值(可以为表,行,列对应的值,另外也可以指定时间戳的值) |
deleteall |
删除指定行的所有元素值 |
disable |
使表无效 |
drop |
删除表 |
enable |
使表有效 |
exists |
测试表是否存在 |
exit |
退出hbase shell |
get |
获取行或单元(cell)的值 |
incr |
增加指定表,行或列的值 |
list |
列出hbase中存在的所有表 |
put |
向指向的表单元添加值 |
tools |
列出hbase所支持的工具 |
scan |
通过对表的扫描来获取对用的值 |
status |
返回hbase集群的状态信息 |
shutdown |
关闭hbase集群(与exit不同) |
truncate |
重新创建指定表 |
version |
返回hbase版本信息 |
下面我们将以“一个学生成绩表”的例子详细介绍常用HBase命令及其使用方法。
这里grad对于表来说是一个列,course对于表来说是一个列族,这个列族由三个列组成china、math和english,当然我们可以根据我们的需要在course中建立更多的列族,如computer,physics等相应的列添加入course列族。(备注:列族下面的列也是可以没有名字的。)
1、create命令
# 创建一个具有两个列族“grad”和“course”的表“scores”。其中表名、行和列都要用单引号括起来,并以逗号隔开。
create ‘scores’,’name’,’grad’,’course’
2、list命令
# 查看当前HBase中具有哪些表。
list ‘scores’
3、put命令
put ‘scores','xiapi','grade:','1’
put ‘scores','xiapi','course:china','97’
put ‘scores','xiapi','course:math','128’
put ‘scores','xiapi','course:english','85’
put ‘scores','xiaoxue','grade:','2’
put ‘scores','xiaoxue','course:china','90’
put ‘scores','xiaoxue','course:math',120’
put ‘scores','xiaoxue','course:english','90’
4、get命令
get 'scores','xiapi’
get 'scores','xiaoxue’ # 查询学生xiapi的数学成绩
get 'scores','xiapi’,’course:math’
5、scan命令
scan 'scores'
Hadoop学习---Hadoop的HBase的学习的更多相关文章
- Hadoop学习笔记—15.HBase框架学习(基础知识篇)
HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型,它存储的是 ...
- Hadoop学习笔记—15.HBase框架学习(基础实践篇)
一.HBase的安装配置 1.1 伪分布模式安装 伪分布模式安装即在一台计算机上部署HBase的各个角色,HMaster.HRegionServer以及ZooKeeper都在一台计算机上来模拟. 首先 ...
- Hadoop学习笔记之HBase Shell语法练习
Hadoop学习笔记之HBase Shell语法练习 作者:hugengyong 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令 ...
- 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...
- Hadoop学习---Zookeeper+Hbase配置学习
软件版本号: JDK:jdk-8u45-linux-i586.tar.gz Zookeeper:zookeeper-3.4.6 Hbase:hbase-1.0.0-bin 一.JDK版本更换 由于之前 ...
- hadoop学习笔记之-hbase完全分布模…
安装环境: OS: Oracle linux 5.6 JDK: jdk1.6.0_18 Hadoop: hadoop-0.20.2 Hbase: hbase-0.90.5 安装准备: 1. Jdk环境 ...
- 什么是Hadoop,怎样学习Hadoop
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上:而且它 ...
- 快速学习hadoop只有这些基础可不行
“学习hadoop需要什么基础”这已经不是一个新鲜的话题了,随便上网搜索一下就能找出成百上千篇的文章在讲学习hadoop需要掌握的基础.再直接的一点的问题就是——学Hadoop难吗?用一句特别让人无语 ...
- 零基础学习hadoop到上手工作线路指导(中级篇)
此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结. 五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解: hadoop分为h ...
随机推荐
- Bugfree安装与使用
第一步:下载XAMPP和bugfree http://www.bugfree.org.cn/ http://www.apachefriends.org/zh_cn/xampp.html 第二步:安装 ...
- django notes 一:开篇
公司 web 框架用的是 django, 以前没用过,打算这两周好好看看. 边学习边整理一下笔记,加深理解. 好像谁说过初学者更适合写入门级的教程,我觉得有一定道理. 高手写的教程有一定深度,不会写入 ...
- Getting over the dangers of rm command in Linux---reference
reference:http://www.coolcoder.in/2014/01/getting-over-dangers-of-rm-command-in.html When we want to ...
- whatwg-fetch
fetch 是什么 XMLHttpRequest的最新替代技术 fetch优点 接口更简单.简洁,更加语义化 基于promise,更加好的流程化控制,可以不断then把参数传递,外加 async/aw ...
- 下面我将随机抽取一名幸运女生,XXXXX
个人在经过长久以来(约等于4小时)的奋战,终于实现了一个上课老师提问并抽奖的小程序.希望这个程序变得非常非常实用 课程的理解:在我的项目开始之前,先学习了一下UML项目类图的画法,和类与类之间的关系. ...
- 问题集录05--ajax跨域问题
由于最近项目中用到json作为系统间交互的手段,自然就伴随着众多ajax请求,随之而来的就是要解决ajax的跨域问题.本篇将讲述一个小白从遇到跨域不知道是跨域问题,到知道是跨域问题不知道如何解决,再到 ...
- js 大转盘,老虎 机
http://www.helloweba.com/view-blog-215.htmlhttp://www.ui3g.com/demos/show/1408/http://www.js-css.cn ...
- 个人多年经典收藏集合(SQL) 推荐大家收藏
1.SQL经典问题 查找连续日期 2.sqlserver 中charindex/patindex/like 的比较 3.SQL Server 跨服务器查询 4.SQLserver中字符串查找功能pat ...
- CSS 文字超长省略显示并隐藏超长部分
1.包含文字的元素必须是块级元素,不是块级元素使用display:block使其具有块级元素属性: 2.具备上述基本条件后,css样式如下: { display: block; max-width: ...
- JUC总览,来自汪文君整理