HBase和Hive的异同之处?

共同点:HBase与Hive都是架构在Hadoop之上,底层存储都是使用HDFS

区别:

  1). Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统。HBase是为了支持弥补Hadoop对实时操作的缺陷的项目。

  2). hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程

  2). Hive的表是逻辑表,它本身不存储和计算数据,它完全依赖于HDFS和MapReduce,高延迟的特点。

  3). HBase的表是物理表,hdfs作为底层存储,而HBase负责组织文件。 提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。

HBase和RDBMS的异同之处?

  1.数据类型:HBase只有简单的字符串类型(压缩率高),所有的类型都是交由用户自己处理。而RDBMS有丰富的类型和存储方式。
  2.数据操作:HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系。而RDBMS通常有各式各样的函数和连接操作。 
  3.存储模式:HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。而RDBMS是基于表格结构和行模式保存的 。
  4.数据维护:HBase的更新操作不应该叫更新,它实际上是追加新的数据。而RDBMS是替换修改。
  5.可伸缩性:Hbase这类分布式数据库就是为了这个目的而开发出来的,所以它能够轻松增加或减少硬件的数量,并且对错误的兼容性比较高。而RDBMS通常需要增加中间层才能实现类似的功能。

Hbase的优缺点
  1. HBase列可以动态增加,并且列为空就不存储数据,节省存储空间。
  2. Hbase自动切分数据,使得数据存储自动具有水平Scalability。
  3. Hbase可以提供基于RowKey的高并发读写操作。
缺点: 不能支持条件查询,只支持按照Row key来查询.

什么时候选择HBase

  1).超大数据量上高并发操作,高速插入,大量读取
  2).记录非常稀疏
  3).多版本数据
  4).对于数据结构中字段不够确定或杂乱无章,很难按一个概念去进行抽取的数据适合用HBase。

HBase容错性

Master容错:Zookeeper重新选择一个新的Master
  1).无Master过程中,数据读取仍照常进行;
  2).无master过程中,region切分、负载均衡等无法进行;
RegionServer容错:定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳
  1).Master将该RegionServer上的Region重新分配到其他RegionServer上;
  2).失效服务器上“预写”HLog日志由主服务器进行分割并派送给新的RegionServer
Zookeeper容错:Zookeeper是一个可靠地服务
  1).一般配置3或5个Zookeeper实例。

HBase的Delete机理

Delete命令并不立即删除内容。实际上,它只是给记录打上删除的标记“墓碑”(tombstone)。墓碑记录不能在Get和Scan命令中返回结果。因为HFile是只读文件,这些墓碑记录直到执行一次大合并(major compaction)才会被删除。 详见HBase相关概念

HBase相关问题的更多相关文章

  1. HBase相关的一些点

    1.在运行Hbase时,如果遇到出错之后: 可以通过{HBASE_HOME}目录,我的是在/usr/soft/hbase下的logs子目录中的日志文件查看错误原因.2.启动关闭Hadoop和HBase ...

  2. Spark-读写HBase,SparkStreaming操作,Spark的HBase相关操作

    Spark-读写HBase,SparkStreaming操作,Spark的HBase相关操作 1.sparkstreaming实时写入Hbase(saveAsNewAPIHadoopDataset方法 ...

  3. HBase相关

    hadoop和hbase节点添加和单独重启 有时候hadoop或hbase集群运行时间久了后,某些节点就会失效,这个时候如果不想重启整个集群(这种情况在很多情况下已经不被允许),这个时候可以单独重启失 ...

  4. HBase 相关API操练(三):MapReduce操作HBase

    MapReduce 操作 HBase 在 HBase 系统上运行批处理运算,最方便和实用的模型依然是 MapReduce,如下图所示. HBase Table 和 Region 的关系类似 HDFS ...

  5. HBase 相关API操练(一):Shell操作

    HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase Shell”. HBase Shell 提供了大多数的 HBase 命令, 通过 HBase Shell 用户可以方便地创建. ...

  6. 暑假第五周总结(学习HBASE相关知识)

    本周主要对HBASE的相关知识进行了学习,主要是通过视频的讲解了解到了HBASE的存储机制,HBASE的机制与普通的关系型数据库完全不同,HBASE以列进行存储,其主要执行的就是增删查操作,其更改主要 ...

  7. 大数据Hbase相关运维题

    1.启动先电大数据平台的 Hbase 数据库,其中要求使用 master 节点的RegionServer.在 Linux Shell 中启动 Hbase shell,查看 HBase 的版本信息.(相 ...

  8. HBase篇--HBase操作Api和Java操作Hbase相关Api

    一.前述. Hbase shell启动命令窗口,然后再Hbase shell中对应的api命令如下. 二.说明 Hbase shell中删除键是空格+Ctrl键. 三.代码 1.封装所有的API pa ...

  9. hbase 相关

    ----------------------------------------hbase的 安装---------------------------------------- 本地安装: 1 解压 ...

随机推荐

  1. 在 Java 应用程序中绑定 Bean 和数据

    本指南介绍了 NetBeans IDE 对 Java 应用程序中 Bean 绑定和数据绑定的支持. 要学完本教程,您需要具备以下软件和资源. 软件或资源 要求的版本 NetBeans IDE 版本 7 ...

  2. 在Mac下使用ll,la,l

    一: 用户目录下建立一个脚本“.bash_profile”,并输入以下内容即可: alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' 二: sou ...

  3. netty 网关 http请求 请求转发

    https://netty.io/4.1/xref/io/netty/example/proxy/package-summary.html https://netty.io/4.1/xref/io/n ...

  4. 重点:怎样正确的使用QThread类(很多详细例子的对比,注意:QThread 中所有实现的函数是被创建它的线程来调用的,不是在线程中)good

    背景描述: 以前,继承 QThread 重新实现 run() 函数是使用 QThread唯一推荐的使用方法.这是相当直观和易于使用的.但是在工作线程中使用槽机制和Qt事件循环时,一些用户使用错了.Qt ...

  5. C#版-Redis缓存服务器在Windows下的使用

    Redis缓存服务器是一款key/value数据库,读110000次/s,写81000次/s,因为是内存操作所以速度飞快,常见用法是存用户token.短信验证码等 官网显示Redis本身并没有Wind ...

  6. 009-Hadoop Hive sql语法详解4-DQL 操作:数据查询SQL-select、join、union、udtf

    一.基本的Select 操作 语法SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference[WHERE whe ...

  7. Java内存解析 程序的执行过程

    Java内存解析 栈.堆.常量池等虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,简单讲解Java内存分配方面的知识. 首先我们先来讲解一下内存中的各个区域. ...

  8. Using RUNDLL32.exe to call a function within a dll

    Using RUNDLL32.exe to call a function within a dll        Rundll32 is a utility included with Window ...

  9. @Transactional(rollbackFor=Exception.class)的使用

    转载: java阿里巴巴规范提示:方法[edit]需要在Transactional注解指定rollbackFor或者在方法中显示的rollback. 先来看看异常的分类 error是一定会回滚的 这里 ...

  10. modelform 使用

    modelForm (1) model的知识点: class UserInfo(AbstractUser): tel = models.CharField(max_length=32) gender ...