HDFS
hdfs简介
- hadoop中高效数据处理基础是它的数据存储模型
- hdfs是hadoop分布式文件系统的实现
- 它是参考谷歌文件系统设计
- hdfs为处理大批大量数据而设计
- 通过网络提供给多个分部的客户端易用的数据访问方式
hdfs优势
- 相比于nfs之类的分布式文件系统,hdfs可以存储大量数据并支持更大的文件
- hdfs是为在大量机器和文件系统之间传输数据而设计的
- hdfs具有可靠的数据存储能力,并通过数据副本的方式处理集群中的某台机器宕机或数据丢失的情况
- hdfs于hadoop的mapreduce模型易于集成,因此,允许数据从本地读取和处理
hdfs的不足
- hdfs并非一个通用的应用程序,而是局限于某些特定的场景
- hdfs优化了高速流数据读取性能,代价则是随机读取性能上的削弱
- 访问hdfs文件最好采取顺序读取的方式
- hdfs只支持在文件上做少数的操作,但不包括任何更新的操作
- hdfs不提供数据的本地缓存机制
HBase
HBase是一个分布式的,本地化的,面向列的,多维度的存储系统,在设计上具备高性能和高可用性。
* hbase是goole的bigtable架构的开源实现
* 与传统的关系型数据库管理系统类似,hbase中也是以表的形式组织数据
* hbase支持非常松散的结构定义,但不支持任何表连接joins,查询数据或sql操作
* hbase主要在大稀疏表上做crud操作
* 大多是hbse的实现都在使用高度非结构化数据
* 参与主从架构实现
* hbase利用hdfs做持久化数据存储
* 具有校验,数据复制和存储
* hbase数据管理由分布式的域服务器(region server)实现,域服务器由hbase主控服务器hmaster管理
hbase主要操作:
* get:获取制定行的版本信息,获取指定行和指定列簇的所有column
* put:键值不存在时,在表中添加新航,如果键值已经存在,则更新对应值即可
* scan:允许在多行上迭代以查找特定值,该特定值可以包括正航或其任意子集
* delete:删除一行或者指定列簇
Hive:
Hive不支持更改数据的操作,Hive基于数据仓库,提供静态数据的动态查询。其使用类SQL语言,底层经过编译转为MapReduce程序,在Hadoop上运行,数据存储在HDFS上。
Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS(关系型数据库)数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
Pig:
Pig的语言层包括一个叫做PigLatin的文本语言,Pig Latin是面向数据流的编程方式。Pig和Hive类似更侧重于数据的查询和分析,底层都是转化成MapReduce程序运行。区别是Hive是类SQL的查询语言,要求数据存储于表中,而Pig是面向数据流的一个程序语言。
结合hdfs和hbase
- hdfs采用顺序读取访问数据,并具有海量数据的存储能力,然后hbae则以数据的快速随机访问能力建厂
- hbase并不适用于非常大的数据量
- hdfs通过mapfiles文件类型提供了快速访问特殊文件类型的机制,然而并不能随着key的数量增加得到比较好的扩展
hadoop中所有应用程序设计的重要一环是选择合适的数据存储方式
* 如果数据植被mapreduce模型实现,则hdfs是最佳方案
* sequencefiles是采用mapreduce模型处理的最佳选择
* 应用程序的实际分区哦是取决去数据的使用模式
* 通用的方法是评估计算请求的数量设计合适的分区模式
- 当新数据产生时候:
- 如果数据的计算结果需要更新时,那么应该考虑一种新的数据存储设计方案
- hadoop唯一支持更新存储机制的组建是hbase
- 所以,如果mapreduce计算结果需要更新数据,hbase就是最好的方案
- 当数据量超级大的时候:
- hbase不是足好的选择,典型的解决方案是hbase和hadoop的结合使用
- hdfs存储实际的数据,hbase负责数据的索引文件
- 实时访问数据时:
- 如果对数据进行实时访问,根据数据量大大小,Hadoop采用不同的解决方案
- 如果数据的key space相对较狭而且数据不经常改变sequencefiles是一个不错的选择
- 对于较大的keyspace和有数据更新需求的时候,hbase或则hbase/hdfs联合使用时最合适的解决方案
- 选择合适的数据存储方案的时候,安全性也是必须考虑的