古代,人们用牛来拉重物。当一头牛拉不动一根圆木时,他们不曾想过培育更大更壮的牛。
同样:我们也不需要尝试开发超级计算机,而应试着结合使用更多计算机系统。
—— Grace Hopper(计算机软件第一夫人,计算机历史上第一个BUG的发现者,也是史上最大BUG千年虫的制造者)
这就是分布式。
再来看一组令人瞠目结舌的数据:
2012年11月11日
支付宝总交易额191亿元,订单1亿零580万笔,生成15TB日志,访问1931亿次内存数据块,13亿个物理读……
从上面的资料中我们看到了:高性能!高并发!高一致性!高可用性!海量数据!
这就是海量数据处理。远远超出单台计算机的能力范畴。
这就是分布式集群能力的体现,更说明了采用分布式系统的必要性。
正文:
单台设备的性能、资源、可扩展性等限制 —— 分布式系统(Hadoop)
传统关系型数据库在面对海量数据时的乏力 —— 分布式数据库(HBase)
关系型数据库,顾名思义,善于处理数据模型间复杂的关系、逻辑、事务。
但在处理海量数据时速度、并发量、可扩展性却惨不忍睹。
当然,我们可以通过巧妙的设计与二次开发来解决上述问题。
速度:分表(减少单表数据量)、缓存查询、静态预生成、提高硬件性能。
并发量:打破单机(或双机)模式,组建数据库集群。
可扩展性:复杂的数据迁移方案。
这个过程想必相当痛苦,而且由于技术约束,造成的用户体验也不够好。
比如我们查银行账单、手机话费的历史记录,总要先选择指定的月份或时间范围,然后点提交。
这就是分表带来的用户体验下降。
什么是Hadoop
而在原生的分布式系统中,整个集群的节点间共享计算、存储、IO资源,完美的解决了性能、并发、数据存储问题。
看一组关于Google的资料(约在2010年):
Google共有36个数据中心。其中美国有19个、欧洲12个、俄罗斯1个、南美1个和亚洲3个(北京-Google.cn<这个……>、香港-Google.com.hk和东京各1个)。
数据中心以集装箱为单位,每个数据中心有众多集装箱,每个集装箱里面有1160台服务器。
如何使这么多台服务器协同工作?
Google的三大核心元素:
1、Google文件系统(GFS)
2、Google大表;Bigtable:是Google一种对于半结构化数据进行分布存储与访问的接口或服务);由于Google的文件系统异常庞大,以至于甲骨文和IBM公司的商业数据库在方面无用武之地。另外,商业数据库都是按 CPU数量来收费,如果Google使用商业数据库,可想而知,这是一笔天文数字。所以,Google量体裁衣地设计了符合自身的大表。
3、Mapreduce 算法;它是Google开发的C++编程工具,用于大于1TB数据的大规模数据集并行运算。MapReduce能够找出一个词语在Google搜索目录中 出现的次数;一系列网页中特定词语出现的频率;链接到某个特定网站的所有网站数量等。
好用的东西,总能找到对应的开源实现,这就是Hadoop。
Hadoop的构成
其中:
Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据
Hive,可以使用类似SQL语言来访问HBase,最终本质是编译成MapReduce Job来处理HBase表数据,适合做数据统计。
谁在用Hadoop
Amazon、Adobe、Ebay、Facebook、Twitter、Yahoo、IBM……
国内:淘宝和支付宝的数据仓库、华为、百度的搜索日志分析,腾讯……
这里有更多的资料可查 http://wiki.apache.org/hadoop/PoweredBy
Facebook实时消息存储系统于2010年下半年迁移到了HBase。
HBase的前生今世
2006 年末 —— Google “BigTable: A Distributed Storage System for Structured Data”;
2007 02月 —— HBase的源代码初稿;
2007 10月 —— 第一个版本,随Hadoop 0.15.0 捆绑发布;
2010 05月 —— HBase从Hadoop子项目升级成Apache顶层项目;
什么是HBase
HBase是一个在Hadoop上开发的面向列(同类软件还有Cassandra和HyperTable)的分布式数据库。
利用HDFS作为其文件存储系统
利用MapReduce来处理HBase中的海量数据
利用Zookeeper作为协同服务,主要用于实时随机读/写超大规模数据集
很多关系型数据库为了应对这种场景提供了复制(replication)和分区(partitioning)解决方案,让数据库能从单个节点上扩展出去。
但是难以安装和维护,且需要牺牲一些重要的RDBMS(Relational DataBase Management System)特性,连接、复杂查询、触发器、视图以及外键约束这些功能要么运行开销大,要么根本无法使用。
HBase从另一个方向来解决可伸缩性的问题。它自底向上的进行构建,能够简单的通过增加节点来达到线性扩展。
HBase并不是关系型数据库,它不支持SQL,但它能够做RDBMS不能做的事;
在廉价硬件构成的集群上管理超大规模的稀疏表。
HBase的特点
面向列:列的动态、无限扩展 —— 内容评论的扩展,同类数据集中存储便于压缩
稀疏表:有数据时这个单元格才存在 —— 节省空间
HBase表格示意图
Ø Row Key: 行键,Table的主键,Table中的记录按照Row Key排序
Ø Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version number
Ø Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
HBase的组件构成
HMaster (HA),负责Table和Region的管理工作
1、建表、删表、查看表格属性;
2、管理RegionServer负载均衡,调整Region分布;
3、Region Split后,负责新Region的分配;
4、在RegionServer失效后,负责失效节点上的Regions迁移;
RegionServer(x N),主要负责响应用户I/O请求,向HDFS文件系统中读写数据
HBase中表格的存储
一张表存储在[1-N)个HRegion中,每个HRegion保存某张表RowKey连续的一段记录。
建表时可以预划分HRegion——提高并行度,进而提升读写速度
否则初始表存在单一HRegion中,随着数据增大HRegion会分裂为多个HRegion
HBase中有两张特殊的Table,-ROOT-和.META.
Ø .META.:记录了用户表的Region信息,.META.可以有多个regoin
Ø -ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region
Ø Zookeeper中记录了-ROOT-表的location
首先 HBase Client端会连接Zookeeper Qurom
通过 Zookeeper组件Client 能获知哪个 RegionServer管理-ROOT- Region 。
那么Client就去访问管理 -ROOT-的HRegionServer ,在META中记录了 HBase中所有表信息,(你可以使用 scan '.META.' 命令列出你创建的所有表的详细信息 ),从而获取Region 分布的信息。一旦 Client获取了这一行的位置信息,比如这一行属于哪个 Region,Client 将会缓存这个信息并直接访问 HRegionServer。
久而久之Client 缓存的信息渐渐增多,即使不访问 .META.表 也能知道去访问哪个 HRegionServer。
HBase读数据
HBase读取数据优先读取HMemcache中的内容,如果未取到再去读取Hstore中的数据,提高数据读取的性能。
HBase写数据
HBase写入数据会写到HMemcache和Hlog中,HMemcache建立缓存,Hlog同步Hmemcache和Hstore的事务日志,发起Flush Cache时,数据持久化到Hstore中,并清空HMemecache。
相关推荐
分布式存储系统hadoop:hbase安装经验,非常不错的hadoop之hbase,入门环境搭建。
【Hadoop与HBase部署文档】 Hadoop是一个开源的分布式计算框架,主要由Apache基金会维护。它被设计成能够处理和存储大量数据,是大数据处理领域的重要工具。Hadoop的核心组件包括HDFS(Hadoop Distributed File ...
由于ZooKeeper是独立的分布式协调服务,并不直接依赖于Hadoop或Hive,因此HBase与ZooKeeper的兼容性主要取决于ZooKeeper的版本是否满足HBase运行的要求。用户需要查看HBase官方的部署指南,以确定推荐的ZooKeeper...
在构建分布式网盘系统时,通常会涉及到多个技术栈,如大数据处理框架Hadoop、分布式数据库HBase以及微服务开发框架Spring Boot。本项目“基于hadoop+hbase+springboot实现分布式网盘系统”旨在利用这些技术搭建一个...
自己整理的Hadoop环境的一些安装,和一些简单的使用,其中包括Hadoop、hbase、hive、mysql、zookeeper、Kafka、flume。都是一些简单的安装步骤和使用,只在自己的虚拟机(Linux centOS7)上使用测试过。按照步骤一步...
接下来是HBase,一个基于Hadoop的分布式数据库,适用于半结构化数据的存储。HBase2.1.0提供了更好的性能和稳定性。配置HBase集群需要: 1. 设置Hadoop依赖:在`hbase-site.xml`中指定Hadoop的配置目录。 2. 配置...
虽然文档中没有明确指出支持的具体操作系统平台,但考虑到Hadoop与Hbase主要是在Linux环境下部署,我们可以推断出该文档所指的支持平台应该是基于Linux操作系统。 ##### 2.2 硬件环境 文档未提供具体的硬件配置要求...
1. Hadoop:Hadoop是一个基于分布式文件系统的数据处理框架,用于处理大规模数据。 2. HBase:HBase是一个基于Hadoop的分布式数据库,用于存储和处理大规模数据。 3. ZooKeeper:ZooKeeper是一个分布式协调服务,...
下载HBase的对应版本,同样配置环境变量,接着修改HBase的配置文件(如hbase-site.xml),设置HMaster、HRegionServer的地址以及HBase与Hadoop的连接参数。此外,还需要初始化HBase集群,创建必要的表和区域。 四、...
1. **Hadoop与HBase的关系**:Hadoop是Apache软件基金会开发的分布式计算框架,主要由HDFS(Hadoop Distributed File System)和MapReduce两部分组成。HBase是构建在HDFS之上的NoSQL数据库,利用Hadoop的存储和计算...
- HDFS(Hadoop Distributed File System)是分布式文件系统,它将大文件分割成块并分布在多台节点上,提供了高容错性和高可用性。 - MapReduce是Hadoop的并行计算模型,它将复杂的数据处理任务分解为两个阶段:Map...
在Windows系统中安装和配置Hadoop和Hbase,是为了建立起一个适合单机测试和开发的本地大数据环境。Hadoop是一个由Apache基金会开发的开源框架,用于存储和处理大规模数据,它通过可靠的分布式存储(HDFS)和分布式...
2. **HBase**:HBase是一个基于Hadoop的分布式数据库,适合实时读写操作,尤其适合半结构化和非结构化数据。它提供了一个高可靠性、高性能、列式存储、可伸缩的数据库。 - **HBase安装与配置**: - 在Hadoop集群...
Hbase是基于Hadoop的分布式NoSQL数据库,提供了高效的数据存储和检索能力。Spark是基于内存的数据处理引擎,能够快速处理大规模数据。Hive是基于Hadoop的数据仓库工具,提供了高效的数据处理和分析能力。本文档旨在...
在Hadoop生态系统中,HBase与Hadoop的紧密集成使得大数据处理能力更加强大。"hadoop-2.7.2-hbase-jar.tar.gz"这个文件,正是为了实现这种集成而提供的。该压缩包包含了Hadoop 2.7.2版本与HBase相关的JAR文件,这些...
Hadoop是一个由Apache基金会开发的分布式系统基础架构,它由HDFS、MapReduce和HBase三个核心组件组成。HDFS是一种主从结构的分布式文件系统,它包含了管理元数据的NameNode和存储数据的DataNode。MapReduce是分布式...
HBase则是基于Hadoop的分布式数据库,尤其适合处理大规模的非结构化数据。下面将详细阐述这两个技术以及它们相关的jar包。 1. Hadoop:Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。...
【Hadoop与HBase自学笔记】是一篇详细记录在Windows环境下搭建Hadoop和HBase分布式环境的教程。本文主要分为六个部分,涵盖了从基础环境准备到集群开发的全过程。 1. **安装JDK**:首先,你需要安装Java ...
HBase 是 Google Bigtable 的开源实现,类似 Google Bigtable 利用 GFS 作为其文件存储系统,HBase 利用 Hadoop HDFS 作为其文件存储系统。 HBase 技术介绍 ---------------- HBase 是一个高可靠性、高性能、面向...