`
starbhhc
  • 浏览: 663539 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

理解Hadoop-Hbase原理与应用小结

 
阅读更多

首先Hbase中的一个“元素”是由行键、列族名、限定符、时间戳唯一标识的并且行键作为数据行在表里的唯一标识,我们只有通过行键来访问列族别无他法。

修改数据:我们先找到要修改的行键把新的数据记录追加到对应的列族中并打上一个新时间戳代表最新版本。
删除数据:插入带有删除标记的行进入,相当于把整个行键所在的行删了。

小结:hbase中所有修改和删除都是用insert方式来完成的,这是由底层HDFS文件系统特性决定的,HDFS中的文件只能一次性写入不能修改可以删除在写回。因此hbase是天生面向时间查询的数据库。例如 查询最近一段时间一个人发布的博客、发布签名、发布照片so on。

hbase特点
(1)适合大量插入同时key-value查询,例如可以输入一个key查询一个value,还可以输入一组key查询一组value。
(2)瓶颈是硬盘的传输速度,因为有大量的插入操作和读出操作,使用SSD  SCSI  IDE不同的硬盘效率是不同的。
(3)适合数据分析。
(4)列式数据库会把相同列的数据都放在一块即列为单位存储。当我们查询某一列的时候只需要调出相应的块即可,这样还可以减少很多I/O。
(5)如果数据元素间的相似性很高的话可以进行大幅度的压缩,相似度越高压缩比越大,甚至可以压缩到原来十几分之一、上百分之一。即节约了空间又减少了I/O,从而提高性能。
(6)hbase只有主键索引,它使用的是LSM(Log Structure Merge)索引,因为hbase所有的修改都是使用追加方式完成的,从数据流上看按照顺序方式写入与日志写入的方式相同,我们又可以认为数据和日志一体化,这又节约了很多空间。

oracle特点
(1)适合小事务短时间片密集型OLTP系统,例如在线交易系统。
(2)瓶颈是硬盘的寻道时间(磁头移动时间),因为oracle随机写随机修改块,首先要找到块这个过程就是寻道时间,而寻道时间又由硬盘转速决定的,5400 7200 15000转/秒 不同的转速效率也是不同的。
(3)适合做SQL统计。
(4)行式数据库会按照数据行顺序集中存放即行为单位存储。当我们查询某一列的时候必须把表里所有的行读完才能抽取我们所要的行,这样很不划算,还要付出很大的I/O资源。
(5)那么从结构上讲oracle的压缩性能就要略逊一筹。
(6)oracle常用的是B+树索引,比较大小来查找记录,小的走左边大的走右边,如果列中的相似度较高的话性能较差。

2 HBase合并storefile的原因是什么?在合并的过程中会做什么操作?如果在合并过程中恰好有涉及到有关storefile的查询发生,会发生什么情况!

答:首先我们介绍一下Hbase数据存储的物理结构
一个物理节点只能跑一个HRegionserver
一个HRegionServer可以包括很多个Region实例,可以是不同表Region
一个Region包含一个hlog和多个store(一个store就是一个列族,因为同列族元素在物理上存放在同一个地方,不同列族在物理上是分离的)
一个store包含一个memstore和多个storefile
当我们在处理数据的时候,首先把数据加载到memstore,数据越来越多直到memstore占满,再写入硬盘storefile中,每次写入形成一个单独storefile,当storefile达到一定的数量后,就会开始把小storefile合并成大storefile,因为hadoop不擅长处理小文件,文件越大性能越好。
在合并的过程中会抛弃删除标识的行和版本过旧的行(hbase版本抛弃方式(1)我们可以预先定义版本的个数,超过这个值就抛弃(2)还可以预先定义版本的时间长短,超过这个时间就抛弃),合并完后形成更大的storefile,当达到数量再次合并,直到storefile容量超过一定阀值后会把当前的Region进行分裂为2个并由Hmaster(hbase数据库主控节点)分配到不同的HRegionServer服务器处理实现负载均衡。
如果在合并过程中恰好有涉及到有关storefile的查询发生的话,我们先是把小storefile加载到内存中进行合并此时如有用户访问可以在内存中检索相关数据返回给用户,我们可以想象在内存中做一个独立镜像备份专门提供被查询需求,另一个主体在另一块内存空间里进行合并,当合并完成后释放备份的内存空间,返回到原来的状态。

3 Hbase具有怎么样的一致性水平
答:hbase是最终一致性的系统,因为hbase是架构在hadoop之上的数据库,“错误是常态”是hadoop座右铭,在cap理论中hbase为了满足可用性和分区容错性牺牲了一部分的数据一致性。

举例:我们要进行电信的指标汇总,并且把汇总结果冗余三份分布在3个datanode中,我们可以设置阀值只要有2份结果保存了我们就可以继续做下面的操作,在一定时间范围内允许第3份结果稍后一致性同步,这就是最终一致性。所以说hbase是适用于AP理论的系统,最终一致性也满足分布式集群的特点。

分享到:
评论

相关推荐

    hadoop-2.7.2-hbase-jar.tar.gz

    《Hadoop 2.7.2与HBase的集成——深入理解hadoop-2.7.2-hbase-jar.tar.gz》 Hadoop是Apache软件基金会的一个开源项目,它为大规模数据处理提供了一个分布式计算框架。Hadoop的核心包括HDFS(Hadoop Distributed ...

    基于Hadoop-Hbase的网络云盘系统.zip

    【标题】基于Hadoop-Hbase的网络云盘系统 在当今大数据时代,高效的数据存储与处理成为企业关注的焦点。Hadoop和HBase是两个在分布式计算领域中至关重要的技术,它们共同为构建大规模、高性能的网络云盘系统提供了...

    hadoop_hadoop-2.7.2-hbase-jar.rar linux下包

    标题 "hadoop_hadoop-2.7.2-hbase-jar.rar" 提供的信息表明,这是一个与Hadoop相关的压缩文件,具体来说是Hadoop 2.7.2版本的HBase JAR文件。Hadoop是一个开源框架,主要用于分布式存储和处理大数据。而HBase是建立...

    java集成hadoop-hbase用到的jar包

    在Java集成Hadoop-HBase的过程中,使用正确的jar包是至关重要的。Hadoop是一个分布式存储和计算框架,而HBase是一个构建在Hadoop之上的非关系型数据库(NoSQL),特别适合处理大规模数据。这里我们将详细探讨Java...

    hbase-hadoop-compat-1.1.3-API文档-中文版.zip

    赠送jar包:hbase-hadoop-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-1.1.3....

    Hadoop-hbase大数据环境安装

    Hadoop-hbase大数据环境安装

    hbase-hadoop-compat-1.1.3-API文档-中英对照版.zip

    赠送jar包:hbase-hadoop-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-1.1.3....

    Apache Hadoop---HBase.docx

    Apache HBase是一个基于Hadoop的分布式列族数据库,它针对大规模结构化数据提供高可靠性、高性能、可伸缩的实时读写访问。HBase的设计灵感来源于Google的BigTable,采用了一个增强的稀疏排序映射表的数据模型,键由...

    impala依赖cdh版本的hadoop-hbase-hive相关jar包.zip

    本压缩包"impala依赖cdh版本的hadoop-hbase-hive相关jar包.zip"提供了Ambari集成Impala 3.0.0时所需的依赖库,主要用于处理Hive外部表,这些表的数据存储在HBase之上。 首先,Impala是Cloudera开发的一个高性能、低...

    hadoop-2.7.2-hbase-jar.zip

    标题 "hadoop-2.7.2-hbase-jar.zip" 暗示这是一个与Hadoop和HBase相关的归档文件,其中包含了HBase的JAR文件。Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它使得在大规模数据集上进行计算成为可能。...

    spring-data-hadoop-2.1.1.RELEASE-hadoop24-sources.jar

    Java操作hbase完成hbase数据文件下载

    hive-hbase-handler-1.2.1.jar

    被编译的hive-hbase-handler-1.2.1.jar,用于在Hive中创建关联HBase表的jar,解决创建Hive关联HBase时报FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop....

    ycsb-hbase14-binding-0.17.0

    《深入解析YCSB-HBase14-Binding 0.17.0》 ...对于那些依赖HBase的大型数据密集型企业来说,理解和掌握YCSB-HBase14-Binding的使用是至关重要的,它有助于提升系统的稳定性和效率,满足日益增长的业务需求。

    phoenix-hbase-2.2-5.1.2-bin.tar.gz

    `phoenix-hbase-2.2-5.1.2-bin.tar.gz`这个压缩包包含了Phoenix 2.2版本与HBase 5.1.2版本的二进制文件,用户可以解压后在本地或集群环境中安装和运行。安装步骤通常包括配置环境变量、创建HBase和Phoenix的目录结构...

    基于Hadoop-Hbase实现的的网络云盘系统+源代码+文档说明+设计方案

    基于Hadoop-Hbase实现的的网络云盘系统+源代码+文档说明+设计方案 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96...

    Hadoop3.3.5+HBase1.4.5.rar+winutils.exe

    将hadoop-3.3.5与hbase-1.4.5放到 Environment 目录 2.配置hadoop 2.1配置环境变量 HADOOP_HOME=D:\Environment\hadoop-3.3.5 添加到path %HADOOP_HOME%\bin 2.2 配置 winutils.exe 将winutils.exe移动到...

    hadoop-zookeeper-hbase.rar

    标题 "hadoop-zookeeper-hbase.rar" 涵盖了三个关键组件:Hadoop、ZooKeeper 和 HBase,这些都是大数据处理和存储领域的重要技术。接下来,我们将详细探讨这三个组件及其在分布式系统中的作用。 Hadoop 是一个开源...

    geomesa-hbase安装包

    1. 安全性:Geomesa-HBase支持Hadoop的安全认证机制,如Kerberos,以保障数据安全。 2. 分析与流处理:集成Apache Spark,提供实时地理空间分析和数据流处理能力。 3. 可视化:通过与其他GIS工具(如QGIS)集成,...

    hadoop+hbase集群搭建 详细手册

    Hadoop+HBase集群搭建详细手册 本文将详细介绍如何搭建Hadoop+HBase集群,包括前提准备、机器集群结构分布、硬件环境、软件准备、操作步骤等。 一、前提准备 在搭建Hadoop+HBase集群之前,需要准备以下几个组件:...

Global site tag (gtag.js) - Google Analytics