热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hbase原理详解

1.Hadoop生态系统Zookeeper分布式监控中心:HDFS的NameNode和MapReduce高可用。zookeeper内部维护一个内存数据库。存储Hbase一些数据&

1.Hadoop生态系统

Zookeeper分布式监控中心:
    HDFS的NameNode和MapReduce高可用。
    zookeeper内部维护一个内存数据库。
    存储Hbase一些数据(后续再谈)
MapReduce:分布式计算框架
Hive:数据仓库
HBase:非关系型数据库
HDFS:分布式文件系统
Flume:日志收集工具(离线分析,离线数据处理)
Sqoop:关系数据ETL工具(非关系型数据与关系型数据转换工具)
Mahout:数据挖掘(将机器学习算法通过MapReduce做开源实现,可以通过MapReduce进行分析,提高效率)
Pig(淘汰):数据流处理语言,通过编写sql脚本分析HDFS数据。
Shark(淘汰):类似于Pig。
 
2.HBase简介
Hbase-Hadoop Database是一个高可用、高性能、面向列、可伸缩、实时读写的分布式数据库 。

可伸缩:可根据负载增减节点。

面向列:相对于行式数据库,空间利用率高。

利用HadoopHDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为分布式协同服务。

主要用来存储非结构化和半结构化数据。

3.HBase优点
      HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。

尽管已经有许多数据存储和访问的策略和实现方法,但事实上大多数解决方案,特别是一些关系类型的,在构建时并没有考虑超大规模和分布式的特点。许多商家通过复制和分区的方法来扩充数据库使其突破单个节点的界限,但这些功能通常都是事后增加的,安装和维护都和复杂。同时,也会影响RDBMS的特定功能,例如联接、复杂的查询、触发器、视图和外键约束这些操作在大型的RDBMS上的代价相当高,甚至根本无法实现。

HBase从另一个角度处理伸缩性问题。它通过线性方式从下到上增加节点来进行扩展。HBase不是关系型数据库,也不支持SQL,但是它有自己的特长,这是RDBMS不能处理的,HBase巧妙地将大而稀疏的表放在商用的服务器集群上。

HBase 是Google Bigtable 的开源实现,与Google Bigtable 利用GFS作为其文件存储系统类似, HBase 利用Hadoop HDFS 作为其文件存储系统;Google 运行MapReduce 来处理Bigtable中的海量数据, HBase 同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable 利用Chubby作为协同服务, HBase 利用Zookeeper作为对应。

大:一个表可以有上亿行,上百万列。

面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。

稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。

数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。

数据类型单一:HBase中的数据都是字符串,没有类型。

4.Hbase数据模型

RowKey:用于唯一标识Hbase中的一条数据(记录),不可重复,按照字典顺序排序,只能存储64k的字节数据,因此一般要求设计RowKey要简短。
TimeStamp:HBase自动赋值时间戳(也可自己实现),作为版本号,64位整型。Hbase每个cell存储单元(k:v)对同一份数据有多个版本,通过实践戳来区分版本之间的差异,按时间倒叙排序。
CF(ColumnFamily):列族,可包含多列。权限控制,存储以及调优都是在列族层面进行的。HBase把同一列族里面的数据存储在同一目录下,由几个文件保存(StoreFile)。
Column:列,对应key,一列可以在多个版本中维护不同数据。
Value:数据。
Cell:是未解析的字节数组。由{rowkey, column(=+),version}唯一确定的单元。由rowkey,列族,列,版本唯一确定一个单元。中的数据,没有类型,全部是字节码形式存储。

5.Hbase体系结构

Client:

包含访问HBase的接口并维护catch来加快对Hbase访问。

再谈Zookeeper:

保证任何时候,集群中只有一个master。

保存所有Region的寻址入口。

实时监控Region Server的上下线信息。并通知Master.

存储HBase的schema和table元数据

Master:

为RegionServer分配Region

负责 RegionServer的负载均衡

发现失效的RegionServer并重新分配到其他RegionServer工作。(KeepAlive)

管理用户对table的增删改查(只负责请求传递)

RegionServer:

维护多个region,处理对这些region的IO请求,真正的增删改查操作。

水平切分运行中变得过大的region(裂变,尽量等分)。

Region:

每个region保存表中某段连续的数据(多行),每个表一开始只有一个region,随着数据量不断增加,region增大,

当 达到一个阈值时,region就会被regionServer水平切分成两个新的region.

当region很多时,将会保存到其他regionServer上。

Store:

一个region由多个store组成,每一个store对应一个CF(列族),store包含memstore和storeFile

MemStore:

内存缓存区,数据的写操作会先写到memstore中,当memstore中的数增长到一个阈值后,regionServer会

启动flashcatch进程写入到storeFile中,每次写入形成一个单独的storeFile.

StoreFile:

当storeFile数量增长到一定阈值后,系统会进行合并(minor major compaction),合并过程会进行版本的合并和

删除工作,,形成更大的storeFile。(优化一般主要针对major合并)

(注意:过时的版本是在合并时候才删除的,而不是插入数据时)

当一个region所有的storeFile大小和数量增长到超过一定阈值后,会把当前region分割为两个,并且由master分配

到相应的eregionServer服务器,实现负载均衡。

客户端检索数据,现在menStore找,找不到再找storeFile。

Hfile:

和StoreFile是同一个东西,只不过是站在HDFS角度称这个文件为Hfile,在Hbase角度就叫StoreFile.

HLog:

是一个普通的Hadoop SequenceFile,记录数据以及数据的操作。目的是用来做数据容灾。HLog SequenceFile的

Value是HBase的KeyValue对象,对应HFile中的KeyValue。

例如磁盘掉电导致Memstore中数据没有持久化到storeFile中时,可通过HLog恢复。

问题:

Q:为什么做一些权限控制以及调优是 在列族层 面?

A:因为在上述体系架构中,我们区分到的最小层级单元就是StoreFile,而storeFile保存的就是一个列族信息。

Q:rowKey保存在哪?


A:每个store都要携带rowkey,TimeStamp,CF,列信息唯一确定。

作者:小明同鞋
来源:CSDN
原文:https://blog.csdn.net/sinat_30802291/article/details/80817426
版权声明:本文为博主原创文章,转载请附上博文链接!


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 本文介绍如何通过整合SparkSQL与Hive来构建高效的用户画像环境,提高数据处理速度和查询效率。 ... [详细]
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 面对众多的数据分析工具,如何选择最适合自己的那一个?对于初学者而言,了解并掌握几种核心工具是快速入门的关键。本文将从数据处理的不同阶段出发,推荐三种广泛使用的数据分析工具。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 深入理解云计算与大数据技术
    本文详细探讨了云计算与大数据技术的关键知识点,包括大数据处理平台、社会网络大数据、城市大数据、工业大数据、教育大数据、数据开放与共享的应用,以及搜索引擎与Web挖掘、推荐技术的研究及应用。文章还涵盖了云计算的基础概念、特点和服务类型分类。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
author-avatar
别说没用的妇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有