Hadoop 其它组成角色介绍--Hbase 在apache的官方网站上,对于Hbase的定义是他是Hadoop的第一个分布式、可扩展的大数据存储的数据库,他的目标是将非常大的表托管到一个集群中进行相应的存储,区别于mysql等数据库,它是一个非关系型数据库,但是不支持sql语句的编写 HBase的架构 (RPC:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议) 客户端Client 整个集群的访问入口 ,使用HBase的RPC机制与HMaster和HRegionServer进行通信。对于管理类操作,Client 与HMaster 进行RPC 通信;对于数据读写类操作,Client 与RegionServer 进行RPC 交互。包含访问HBase的接口,并维护cache来加强对HBase的访问。 协调服务组件ZooKeeper ZooKeeper (队列)负责管理HBase 中多HMaster 的选举、服务器之间状态同步等。HBase 中ZooKeeper 实例存储HBase 元数据信息、实时监控RegionServer、存储所有Region 的寻址入口.保证任何时候集群中只有一个HMaster。 主节点HMaster HMaster没有单节点问题,Hbase中可以启动多个HMaster,通过Zookeeper的Master Election 机制保证总有一个Master在运行,主要负责Table和Region的管理工作。管理用户对表的增删查改操作。管理HRegionServer的负载均衡,调整Region分布。Region Split之后,负责新Region的分布。在HRegionServer停机后,负责失效HRegioinServer上Region迁移工作。 Region 节点HRegionServer HRegionServer 主要负责响应用户I/O 请求,向HDFS 文件系统中读写数据 HBase的特点 1、容量大:单表可以存储大量的行、列,数据矩阵所支持的数量级可以弹性设置 2、面向列的存储方式:传统的数据库的存储方式在一开始的设计表的时候就已经将每一列的属性进行了设定,不能再动态的进行添加,而Hbase主要有Row key,Column Family两个属性组成,例如设定User表,定义列族为info,那么存储的时候就可以设定数据为info:name=zhangsan 的形式进行存储,当要添加属性的时候直接使用info:**=**进行添加就行 3、扩展性:底层存储依赖HDFS,拥有可扩展性,而且HBase的Region和RegionServer的概念可以进行分区且分区后数据不在一个节点上,也决定了Hbase是可以进行扩展操作的。Hbase的扩展是热扩展,即可以以便进行的服务一边对节点进行操作 4、高可靠性:主要在三个方面保证了Hbase中的数据的稳定,第一就是Hbase本身就提供了WAL和Replication两种机制,WAL保证了数据写入的时候不会因为集群的原因造成数据的丢失,Replication保证了当集群出现问题的时候也不会对其中的数据产生影响,第二、Hbase底层使用的是HDFS的机制,HDFS本身就拥有副本机制,传入的数据会在不同的节点上进行相应的备份,第三、Hbase使用zookeeper组件进行协调服务,erzookeeper本身就具有高可用和高可靠两种特性 5、高性能:底层的LSM(内存+顺序写磁盘)的数据结构以及列族的存储方式决定了在写方面HBase拥有非常高的性能,region切分、主键索引和缓存机制让Hbase在随机读取方面也有不错的展现。 Hbase的适应场景; Hbase虽然提供了一个强大的存储机制用来对数据进行存储,但是,事物都是两面性的,在某一些场合也是不使用Hbase的,在官方网站上,对于以下几个方面做出了不适应于使用Hbase进行存储的解释 1、数据量的大小:Hbase和关系型数据库的区别就在于存储数据的大小,当数据量不是很大的时候,使用传统的RDBMS可能是一个更好的选择,因为当数据量不是很大的时候使用Hbase 会使集群中产生资源浪费的情况,只是单纯的一到两个节点上就把所有的数据处理完了 2、确保有足够的硬件支持:即使是搭建一个最简单的集群也至少需要3个节点(虽然可以进行调整,但是HDFS的备份机制默认的节点个数为3个),所以,要想使用Hbase对数据进行存储要考虑一下自己的硬件是否能够对其进行支持 3、确保应用程序可以在Hbase下能够生存下来,因为通过RDBMS进行构建的应用程序不是简单的更改就可以移植到Hbase上的,比如JDBC驱动程序就无法进行移植以及复杂的查询语言等都在HBase中不能被使用,所以要确定可以在没有 RDBMS提供所有额外功能的情况下生存

如需交流,请加入QQ群:859121793

Hadoop(4)--Hbase的更多相关文章

  1. CDH(Cloudera)与hadoop(apache)对比

    本文出自:CDH(Cloudera)与hadoop(apache)对比http://www.aboutyun.com/thread-9225-1-1.html(出处: about云开发)   问题导读 ...

  2. Hbase总结(一)-hbase命令,hbase安装,与Hive的区别,与传统数据库的区别,Hbase数据模型

    Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', ...

  3. Hbase总结(五)-hbase常识及habse适合什么场景

    当我们对于数据结构字段不够确定或杂乱无章非常难按一个概念去进行抽取的数据适合用使用什么数据库?答案是什么,假设我们使用的传统数据库,肯定留有多余的字段.10个不行,20个,可是这个严重影响了质量. 而 ...

  4. (转)HBase 常用Shell命令

    转自:http://my.oschina.net/u/189445/blog/595232 hbase shell命令                             描述  alter 修改 ...

  5. HBase(一)——HBase介绍

    HBase介绍 1.关系型数据库与非关系型数据库 (1)关系型数据库 ​ 关系型数据库最典型的数据机构是表,由二维表及其之间的联系所组成的一个数据组织 ​ 优点: ​ 1.易于维护:都是使用表结构,格 ...

  6. 大数据学习笔记之Hadoop(一):Hadoop入门

    文章目录 大数据概论 一.大数据概念 二.大数据的特点 三.大数据能干啥? 四.大数据发展前景 五.企业数据部的业务流程分析 六.企业数据部的一般组织结构 Hadoop(入门) 一 从Hadoop框架 ...

  7. HBase 系列(三)HBase Shell

    HBase 系列(三)HBase Shell ./hbase shell # 进入 hbase 命令行 (1) HBase 命令帮助 help # 查看 HBase 所有的命令 create # 或 ...

  8. Hadoop(2)--hdfs

    Hadoop(2) Hadoop底层封装的的是HDFS和MapReduce两种框架 在Hdfs中采用的是主从结构(Madter-slaver)就像领导和员工一样,领导负责整个公司的管理工作,而员工就负 ...

  9. 基于Docker搭建大数据集群(七)Hbase部署

    基于Docker搭建大数据集群(七)Hbase搭建 一.安装包准备 Hbase官网下载 微云下载 | 在 tar 目录下 二.版本兼容 三.角色分配 节点 Master Regionserver cl ...

随机推荐

  1. 两种计算Java对象大小的方法

    之前想研究一下unsafe类,碰巧在网上看到了这篇文章,觉得写得很好,就转载过来.原文出处是: http://blog.csdn.net/iter_zc/article/details/4182271 ...

  2. 学习笔记-java 多线程

    背景说明: 多线程并发与管理,是java基础知识里的重点,本文根据<java核心技术第八版>中的多线程技术的学习,对知识点进行整理:这里只对基础知识点进行简单罗列,以达到对知识点有网状关联 ...

  3. SAP+DB2 糟糕的报表查询『ZCOR0015』 优化全程记录

    ZCOR0015的优化全过程记录文档 2015年3月,今天无意翻到这篇写于2010年7月的文档,回想那时的工作,毕业3年初出茅庐的我面对接触不多的SAP+DB2竟敢操刀动斧,自信满满. 虽然这过程一路 ...

  4. GPU使用

    GPU .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1p ...

  5. PHP面试题分享与答案

    由于之前的每一个问题都是一个比较大的知识点,作者希望可以尽量一一详细解答,如果有不足的地方欢迎大家补充和修改,同时借鉴牛人写的Mysql中算法的实现以及内存原理,Btree结构等. 1:MySQL数据 ...

  6. Mapreduce-Partition分析(转)

    http://blog.oddfoo.net/2011/04/17/mapreduce-partition%E5%88%86%E6%9E%90-2/ Partition所处的位置 Partition位 ...

  7. python 并发编程之多线程

    一.线程理论 1.什么是线程 ​ 多线程(即多个控制线程)的概念是,在一个进程中存在多个线程,多个线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源. 所以,进程只是用来把资 ...

  8. ATK系列库说明

    初衷 重构和复用是软件的一个古老话题. 在日常的软件项目开发的过程序中,如何保证团队代码的强健,同时在不断变化的需过程中最大限度的保障代码的一致性,是项目开发中的难以控制的,我们可以借助各种源码管理和 ...

  9. 菜鸟笔记 -- Chapter 6.3 对象

    6.3 对象 Java是一门面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都是通过对象来处理的,对象可以操作类的属性和方法解决相应的问题,所以了解对象的产生.操作和生存周期对学习Java语言 ...

  10. springboot+mybatisplus 测试代码生成

    测试springboot + mybatisplus 实现代码生成   使用默认的模板引擎 pom.xml文件 <?xml version="1.0" encoding=&q ...