参考资料: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. [Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁

    随着DT时代的来临,数据对于企业经营决策的价值日益凸显,而企业在进行互联网+转型的过程中,如何让数据架构平滑迁移到大数据平台,对于传统业务的转型升级至关重要.企业IT部门该如何进行PB级别大数据平台的 ...

  2. 阅读《深入应用C++11:代码优化与工程级应用》

    虽然一直是写C++的,但是却对C++11了解的不是太多,于是从图书馆借了本书来看 这本书分两大部分: 一.C++11的新特性讲解 二.工程级代码中C++11的应用 这样的安排很合理,第一部分把新特性讲 ...

  3. Java知多少(71)文件与目录管理

    目录是管理文件的特殊机制,同类文件保存在同一个目录下不仅可以简化文件管理,而且还可以提高工作效率.Java 语言在 java.io 包中定义了一个 File 类专门用来管理磁盘文件和目录. 每个 Fi ...

  4. An SPI class of type org.apache.lucene.codecs.PostingsFormat with name 'Lucene50' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath. The current classp

    背景介绍: 当ES中guava库与hive等组件的库冲突时,对Elasticsearch库进行shade,relocate解决库冲突问题. 当使用"org.apache.maven.plug ...

  5. 【转】WPF自定义控件与样式(6)-ScrollViewer与ListBox自定义样式

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: ScrollViewer的样式拆解及基本样式定义: ListBox集合 ...

  6. Java如何获取本地计算机的IP地址和主机名?

    在Java编程中,如何获取本地计算机的IP地址和主机名? 以下示例显示如何使用InetAddress类的getLocalAddress()方法获取系统的本地IP地址和主机名. package com. ...

  7. 将本地代码上传github

    建立本地仓库 1.首先进入text文件夹 cd d:text 首先进入text文件夹 2.执行指令:git init 执行git init 初始化成功后你会发现项目里多了一个隐藏文件夹.git 隐藏的 ...

  8. golang IO 流抽象与应用

    https://blog.csdn.net/pmlpml/article/details/82930191

  9. 大杂烩 -- 四种生成和解析XML文档的方法详解

    基础大杂烩 -- 目录 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J DOM:在现在的Java JDK里都自带了,在xml-apis.jar包 ...

  10. 通信原理之UDP协议(四)

    1.UDP简要介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议. 2.UDP协议头 2.1.UDP端口号 ...