参考资料:HBase权威指南

一行由若干列组成,若干列又构成一个列族
一个列族的所有列存储在同一个底层的存储文件里,这个文件叫HFile
列族的数量有限制;一个列族里列的数量没限制
谓词删除:例如允许用户只保存过去一周
HBase中扩展和负载均衡的基本单位是region,一张表初始只有一个region,region大小超过限制后会拆分region变成两个
每个region只能由一个region服务器加载,每台region服务器可以同时加载多个region
HBase中有3个主要组件:客户端库、一台主服务器、多台region服务器,主服务器通过zookpper为region服务器分配region

在服务器的地址空间中执行来自客户端的代码,支持这种功能的服务端框架叫做协处理器
HBase的api主要是java代码,但也支持其他编程语言
数据存储在存储文件中(HFile),文件由连续的块组成,HFile通常保存在Hadoop分布式文件系统(HDFS)中
存储文件是不可以改变的,所以无法通过移除某个键值对来删除,解决般办法是做个删除标记

当在同一服务器上运行Hadoop和HBase时,最少会有3个java进程(DataNode、TaskTracker和RegionServer),而且在执行MapReduce作业时,进程数还会激增,要运行这些程序需要一定数量的内存、磁盘和CPU资源

使用java时,不应该为一个进程设置过多的内存,因为java重写堆时,会暂停所有进程内的逻辑并进行清理,堆越大,清理的时间就越长
如果HBase警告无法找到可执行的java安装路径,就需要在conf/hbase-env.sh文件中编辑JAVA_HOME这一行,设置正确的java安装路径

HBase只能依赖特定的Hadoop版本,因为他们之间的远程过程调用RPC是版本化的,调用方和被调用方要互相匹配,细微的差异都有可能导致通信失败

由于HBase依赖Hadoop,所以要求Hadoop的JAR必须部署在HBase的lib目录下
HBase使用的Hadoop版本必须与底层Hadoop集群上使用的Hadoop版本一致,使用Hadoop集群正在运行的JAR替换HBase的lib目录中依赖的Hadoop的JAR可以避免版本不匹配问题

集群中所有节点都需要更新为一样的JAR,否则版本不匹配会造成集群无法启动或假死现象

在服务器上禁止使用交换区,一旦服务器发生交换,HBase服务器就无法与zookeeper服务器交换信息
集群中节点时间必须一致,仅仅一分钟的偏差就有可能是集群产生莫名其妙的行为,可以使用NTP或同等功能来“同步集群的时间”

======================

参考文献:https://www.ibm.com/developerworks/cn/analytics/library/ba-cn-bigdata-hbase/index.html

HBase 适用于结构化的存储。并且 HBase 是一种列式的分布式数据库
HBase 则为大型分布式 NoSql 数据库

HBase 与 Hive 的区别:
1 Hive 适合用来对一段时间内的数据进行分析查询;
2 Hive 不应该用来进行实时的查询(Hive 的设计目的,也不是支持实时的查询)。因为它需要很长时间才可以返回结果;HBase 则非常适合用来进行大数据的实时查询
3 对于 Hive 和 HBase 的部署来说,也有一些区别,Hive 一般只要有 Hadoop 便可以工作。而 HBase 则还需要 Zookeeper 的帮助
4 HBase 本身只提供了 Java 的 API 接口,并不直接支持 SQL 的语句查询(除非与其他框架一起使用,如 Phoenix、Hive),而 Hive 则可以直接使用 HQL(一种类 SQL 语言)

HBase 的使用建议:
1 一个 HBase 数据库是否高效,很大程度会和 Row-Key 的设计有关:
1)当客户端需要频繁的写一张表,随机的 RowKey 会获得更好的性能。
2)当客户端需要频繁的读一张表,有序的 RowKey 则会获得更好的性能。
3)对于时间连续的数据(例如 log),有序的 RowKey 会很方便查询一段时间的数据(Scan 操作)
2 在大多数的情况下,一个表格不会超过 2 到 3 个 CF,而且很多情况下都是 1 个 CF 就足够了。

参考资料:https://www.jianshu.com/p/569106a3008f

Hbase表的创建的时候就必须指定列族。就像关系型数据库创建的时候必须指定具体的列是一样的。

Hbase的列族不是越多越好,官方推荐的是列族最好小于或者等于3。我们使用的场景一般是1个列族。

HBase 笔记的更多相关文章

  1. HBase笔记:对HBase原理的简单理解

    早些时候学习hadoop的技术,我一直对里面两项技术倍感困惑,一个是zookeeper,一个就是Hbase了.现在有机会专职做大数据相关的项目,终于看到了HBase实战的项目,也因此有机会搞懂Hbas ...

  2. Hbase笔记——RowKey设计

    一).什么情况下使用Hbase 1)传统数据库无法承载高速插入.大量读取. 2)Hbase适合海量,但同时也是简单的操作. 3)成熟的数据分析主题,查询模式确立不轻易改变. 二).现实场景 1.电商浏 ...

  3. HBase笔记--自定义filter

    自定义filter需要继承的类:FilterBase 类里面的方法调用顺序   方法名 作用 1 boolean filterRowKey(Cell cell) 根据row key过滤row.如果需要 ...

  4. HBase笔记--filter的使用

    HBASE过滤器介绍: 所有的过滤器都在服务端生效,叫做谓语下推(predicate push down),这样可以保证被过滤掉的数据不会被传送到客户端. 注意:        基于字符串的比较器,如 ...

  5. HBase笔记--编程实战

    HBase总结:http://blog.csdn.net/lifuxiangcaohui/article/details/39997205  (very good) Spark使用Java读取hbas ...

  6. HBase笔记--安装及启动过程中的问题

    1.使用hbase shell的时候运行命令执行失败 例如:在shell下执行 status,失败. 可能的原因:节点之间的时间差距过大 解决方法调整两个节点的时间,使二者一致,这里用了个比较笨的方法 ...

  7. HBase笔记6 过滤器

    过滤器 过滤器是GET或者SCAN时过滤结果用的,相当于SQL的where语句 HBase中的过滤器创建后会被序列化,然后分发到各个region server中,region server会还原过滤器 ...

  8. HBase笔记5(诊断)

    阻塞急救: RegionServer内存设置太小: 解决方案: 设置Region Server的内存要在conf/hbase-env.sh中添加export HBASE_REGIONSERVER_OP ...

  9. HBase笔记4(调优)

    Master/Region Server调优 JVM调优 默认的RegionServer内存是1G,而Memstore默认占40%,即400M,实在是太小了,可以通过HBASE_HEAPSIZE参数修 ...

  10. HBase 笔记3

    数据模型 Namespace 表命名空间: 多个表分到一个组进行统一的管理,需要用到表命名空间 表命名空间主要是对表分组,对不同组进行不同环境设定,如配额管理  安全管理 保留表空间: HBase中有 ...

随机推荐

  1. tensorflow 笔记8:RNN、Lstm源码,训练代码输入输出,维度分析

    tensorflow 官网信息:https://www.tensorflow.org/api_docs/python/tf/contrib/rnn/BasicLSTMCell tensorflow 版 ...

  2. iOS中如何创建一个滑出式导航面板(1)

    本文将介绍如何创建类似Facebook和Path iOS程序中的滑出式导航面板. 向右滑动 滑出式设计模式可以让开发者在程序中添加常用的导航功能,又不会浪费屏幕上宝贵的空间.用户可以在任意时间滑出导航 ...

  3. idea git 使用

    第一部  测试  本地git 是否已经成功安装 centos 7 发行版默认已经安装 第二部: 测试 github 连接是否成功,需要输入用户密码 第三部:创建git项目管理两种方式 1. 菜单 VC ...

  4. Android 实时录音和回放,边录音边播放 (KTV回音效果)

    上一篇介绍了如何使用Mediarecorder来录音,以及播放录音.不过并没有达到我的目的,一边录音一边播放.今天就讲解一下如何一边录音一边播放.使用AndioRecord录音和使用AudioTrac ...

  5. apache kylin2.10在原生hadoop集群上安装

    Install Kylin Download latest Kylin binaries at http://kylin.apache.org/download Export KYLIN_HOME p ...

  6. Tomcat配置多个域名绑定到不同项目

    <Host name="www.dn-serve.com" appBase="webapps" unpackWARs="true" a ...

  7. ubuntu12.04安装Docker

    由于公司的虚拟机上的ubuntu都是12.04的,所以要在ubuntu12.04上安装Docker.Docker目前只能运行在64位的机器上面. 先要升级内核 sudo apt-get update ...

  8. java.lang.String.regionMatches方法使用

    regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len): regionMatches(int to ...

  9. mysql按天数据统计

    例: SELECT DATE_FORMAT(`create_time`, ) AS num FROM `dc_loan_aa_orders` GROUP BY DATE_FORMAT(`create_ ...

  10. SQL Server -- stuff 函数

    STUFF 删除指定长度的字符并在指定的起始点插入另一组字符. 语法 STUFF ( character_expression , start , length , character_express ...