HBase-再看HBase



为什么HBase主要应用于在线应用系统?(还没搞懂)

www.github.com/HBaseinaction

google 三大论文  Google File System MapReduce BigTable

HBase shell 是一个封装了Java api 的JRuby软件

一个表可以有多个列簇,至少一个列簇

HBase==无模式数据库

HBase两种方式读取数据:get和scan

HBase每个数据单元可以有多个时间版本,版本数有默认值,也可以自定义,取出时默认是最新版本

scan命令在不指定情况下返回所有行

什么事HBase的逻辑数据模型、物理数据模型和模式设计

HBase运行和操作需要配置信息,有两种方式来定义或者获得配置信息,一种是从配置文件中获取比如hbase-site.xml,另一种是手动输入。shell一般用的是配置文件,Java api一般用的是手动,如果不指定,则使用默认的,比如zookeeper.quorum是localhost,如果你在客户端非集群上,显然不行,则要手动配置

由于操作hbase需要获得链接,消耗网络开销,所以有了链接池,链接从链接池里分配,工作关闭后链接返回到链接池

hbase中所有数据都是按字节数组的形式存储的

hbase使用坐标来定位数据。行健、列簇、列、时间版本。rowkey column family column qualifier  version

hbase中数据作为值value存在单元里

hbase中修改数据使用的方式跟存储新数据使用的方式一样

执行写入的时会写到两个地方:预写式日志(WAL)和memstore。只有这两个地方的变换信息确认后才认为写操作完成

memstore,内存里的写入缓冲区。当memstore填满后刷新到硬盘,生成一个HFile。

HFile对应列族,一个列族可以有多个HFile,但一个HFile不能存多个列族的数据。在集群每个节点上,每个列族有一个memstore

如果HBase宕机,没有从memstore刷写数据到HFile,可以通过回访WAL来恢复。不用手工操作,HBase内部机制中有恢复流程部分来处理

每台服务器有一个WAL,这台服务器上所有表共享这个WAL

blockcache读优化。最近最少使用算法

删除是给要删除的内容打上墓碑标记,用来标志删除的内容不能被get和scan读取。
因为HFile不能改变,所以直到一次大合并,这些墓碑记录才会被处理

合并分为大合并和小合并。小合并把多个小的HFile合并成一个大的HFile。大合并将处理给定region的一个列族的所有HFile。大合并相当耗费资源。大合并是清理删除记录的唯一机会

如果一个单元的版本超出了最大数量,多出的记录会在下一次大合并的时候扔掉

关系型数据库是二维坐标系统,HBase是四维坐标系统

如果使用get检索数据的时候如果不指定时间版本,返回数据中会是多个时间版本的映射集合,按照坐标的降序排列

什么是半结构化数据

HBase没有事务

HFile本身是二进制文件

在HBase中query的替代品是scan加filter

Filter在服务器端过滤,不是在客户端。过滤器可以组合

HBase的在线操作(online)和离线操作(offline)

一张总的大HBase表切分成小一点的数据单位分配到堕胎服务器上,这些小一点的数据单位叫做region,托管region的服务器叫做regionserver。一个regionserver托管多个region

为什么工作负载主要是随机读写就不需要MR框架?

单个region大小可以自定义,如果超过则切分成两个

ROOT和META表用来查找region位置在哪儿。META表如果大到一定程度可以切分,ROOT表不会切分

zookeeper提供HBase的入口点,即ROOT表

在HBase中使用mapreduce计算和多线程计算有同样的效率,但是吞吐量却高很多的原因:数据的并行放置,让任务本地化了

(counters是hadoop作业里收集监控指标的一个简单方法)

宽表和窄表

get()API内部实现是一次扫描单行的scan()运算

get()的使用必须需要行健,scan没有限制,如果有起始和终止则可以限定范围

对于HBase集群,最消耗计算资源的操作发生在使用服务器过滤器扫描结果的时候

协处理器从0.92.0版本引入

OpenTSDB,基于HBase,一种数据可视化工具

scan ‘-ROOT-’

scan ‘.META.’



这些都是在HBase实战中看的,这本书不错

http://pan.baidu.com/s/1i3uwuZN



下一步学安装

时间: 2024-10-12 13:38:34

HBase-再看HBase的相关文章

再看Cassandra 之NOSQL 数据库

Cassandra或许不会因为是NoSQL而得到关注,但是它在完成某些特定工作上,有迷人的魅力,这Netflix和Instagram两家公司一定知道. 过去的这些年,NoSQL的参与者,例如MongoDB已经得到了快速发展,受到了非常多的关注,但是 Apache Cassandra的光环褪去,作为创造了Cassandra的Facebook已经放弃了它,Cassandra的社区也好像过时了快.但 是Cassandra的命运迎来的转机,Netflix近来决心把他们自己的数据中心的oracle改成Ca

HBase案例:HBase 在人工智能场景的使用

近几年来,人工智能逐渐火热起来,特别是和大数据一起结合使用.人工智能的主要场景又包括图像能力.语音能力.自然语言处理能力和用户画像能力等等.这些场景我们都需要处理海量的数据,处理完的数据一般都需要存储起来,这些数据的特点主要有如下几点: 大:数据量越大,对我们后面建模越会有好处: 稀疏:每行数据可能拥有不同的属性,比如用户画像数据,每个人拥有属性相差很大,可能用户A拥有这个属性,但是用户B没有这个属性:那么我们希望存储的系统能够处理这种情况,没有的属性在底层不占用空间,这样可以节约大量的空间使用

Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbase调用MapReduce函数使用理解 第三部分:Hbase调用Java API使用理解 第四部分:Hbase Shell操作 第五部分:Hbase建表.读写操作方式性能优化总结 第一部分:Hbase框架原理理解 概述 HBase是一个构建在HDFS上的分布式列存储系统:HBase是基于Google

机房收费系统合作——再看数据库设计

机房合作我负责了最简单的D层,接口层,工厂层.反正D层是我来写,于是数据库索性也就顺便设计了.已经是第三次敲机房收费系统了,每次都是相隔半年左右吧.需求搞得透透的了,数据库也就好设计了.基本跟第二次没什么大的区别,就是把Student表和Card表分开了. 重构的时候,我的数据库几乎什么都用到了:事务,存储过程,触发器,视图,联合查询等等.所以,这次设计数据库还是SO Easy的..并且,为了让婵婵和牛迁迁师哥写的方便,我把组合查询都写成了存储过程!!!!费了一番功夫,但是D层简单了不少.还记得

再看GS线程

再看GS线程 void GameServer::ProcessThreadTry() { int nCount = 0; packet rcvPkt; rcvPkt.data = new char[1024 * 100]; //该事件工厂主要创建了两个定时器1.livemgr的检测(即是否是有效的连接)2.道具帮会差异更新数据的获取即定时从道具帮会容器中获取差异需要保存到数据库的这个数据 //3.释放队列的处理,现在玩家下线不是直接把channel删除掉而是放到释放队列中等没有数据库访问时在删除

再看数据库——(2)视图

概念 *是从用户使用数据库的观点来说的. *从一个或多个表(视图)中导出来的 *一个虚表,或者说查询表 为什么要用视图呢? 一是简单,看到的就是需要的.视图不仅可以简化用户对数据的理解,也可以简化他们的操作.那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件. 二是 安全,通过视图用户只能查询和修改他们所能见到的数据,但不能授权到数据库特定行和特定的列上.通过视图,用户可以被限制在数据的不同子集上:使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后

再看ftp上传文件

前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在本地测试程序上传到ftp服务器一点问题都没有,奇怪的是当发布Web和ftp到同一个IIS下,上传文件时程序直接卡死,然后页面卡死,后来我又发现把Web和ftp分开发布在两台机器上问题又得到解决,所以当时放弃了这个方案. 再看ftp上传文件 前几天偶然看到Wolfy写到一个项目总结,其中提到了用Ser

2015第43周六再看长征

今天从网上看到习大大推荐看的十三本书信息,然后先听了里面的长征,然后再看了<长征>电视,把思绪带回了70多年前,也更真切的感受到长征的重要意义.截取里面的几个事件分析下自己的感受: 1.李德博古专权导致了第五次反围剿和湘江战役的惨败,尤其是血染湘江的悲壮场景,红军从8w多损失到了3w多,多少革命战士英勇牺牲.这里有几个问题(1)为什么李德博古会专政,其它人会让他们专政?他们是共产国际派来的,代表苏联成功经验,受过正规军事训练,代表理论文化先进,所以被推崇.(2)为什么会有这两次的惨败.血流成河

再看Ajax

再回顾Ajax相关的内容,再次梳理学习还是很有必要的,尤其是实际的开发中,ajax更是必不可少,仔细学习以便避免不必要的错误. 文章导读: --1.使用XMLHttpRequest---------- 1.1 必备知识点 1.2 send()方法 1.3  再看CORS --2.HTTP请求和响应---------------- 2.1 Request Header中的参数 2.2 Response Header中的参数 2.3 GET请求和POST请求的区别 --3.jQuery中的Ajax-

再看GS接包过程

再看GS接包过程 bool GameServer::ProcessLoop(packet& rPkt) { if(false == m_spDataLayer->Recv(rPkt)) return true;//没数据了 if(rPkt.is_data) { if(!rPkt.data) return false; GameChannel* pGC = m_vecChannel[rPkt.channel_id]; if(pGC) pGC->OnReceiveData(rPkt.dat