付出,终有回报!
分类: HADOOP
2017-02-23 22:13:18
传统的关系型数据库处理方式是基于全面的 ACID 保证,遵循 SQL92 的标准表设计模式(范式)和数据类型,基于 SQL 语言的 DML 数据交互方式。长期以来这种基于关系型数据库的 IT 信息化建设中发展良好,但受制于关系型数据库提供的数据模型,对于逐渐出现的,为预先定义模型的数据集,关系型数据库不能很好的工作。越来越多的业务系统需要能够适应不同种类的数据格式和数据源,不需要预先范式定义,经常是非结构化的或者半结构化的(如用户访问网站的日志),这需要系统处理比传统关系型数据库高几个数量级的数据(通常是 TB 及 PB 规模级别)。传统关系型数据库能够纵向扩展到一定程度(如 Oracle 的 RAC,IBM 的 pureScale)。但这通常意味着高昂的软件许可费用和复杂的应用逻辑。
基于系统需求发生了巨大变化,数据技术的先驱们不得不重新设计数据库,基于大数据的 NoSQL 的曙光就这样出现了,大数据及 NoSQL 的使用首先在 google、facebook 等互联网公司,随后是金融、电信行业,众多 Hadoop&NoSQL 的开源大数据项目如雨后春笋般发展,被互联网等公司用于处理海量和非结构化类型的数据。一些项目关注于快速 key-value 的键值存储,一些关注内置数据结构或者基于文档的抽象化,一些 NoSQL 数据管理技术框架为了性能而牺牲当前的数据持久化,不支持严格的 ACID,一些开源框架甚至为了性能放弃写数据到硬盘……
Hbase 就是 NoSQL 中卓越的一员,Hbase 提供了键值 API,承诺强一致性,所以客户端能够在写入后马上看到数据。HBase 依赖 Hadoop 底层分布式存储机制,因此能够运行在多个节点组成的集群上,并对客户端应用代码透明,从而对每个开发人员来说设计和开发 Hbase 的大数据项目变得简单易行。Hbase 被设计来处理 TB 到 PB 级的数据,并针对该类海量数据和高并发访问做了优化,作为 Hadoop 生态系统的一部分,它依赖 Hadoop 其他组件提供的重要功能,如 DataNode 数据冗余和 MapReduce 批注处理。
HBase – Hadoop Database,是一个构建在HDFS上的,高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase是Google Bigtable的开源实现,典型的key/value系统,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
上图描述了Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。
此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。