初识Hadoop

原创
2015/03/24 11:58
阅读数 384

要对Hadoop整体有一个概念,是解决什么问题的要有一个认识。


当一头牛拉不动一根木头的时候,为了解决这个问题,我们不会去培育更强更壮的牛。同样,我们也不需要尝试开发超级计算机,而应该试着结合使用更多的计算机系统。


数据存储与分析:

多年来,磁盘存储存储容量快速的增加,但是其访问速度却没有增加的这么快。

读取一个磁盘中所有数据需要很多时间,写甚至更慢。一个很简单的减少读取时间的办法就是同时从多个硬盘上读取数据。如果我们有100个磁盘,每个磁盘存储1%的数据,并行读取,那么读取完自己需要的数据就会很快。仅使用磁盘容量的1%似乎很浪费,但是我们可以存储100个数据集,并实现共享磁盘的访问


尽管如此,实现多个磁盘的并行读写,还有很多问题需要解决

1)硬件故障,牵扯到数据备份:系统保存数据的冗余副本,当发生故障的时候,可以使用数据的应一个可用副本。冗余磁盘阵列(RAID)就是按照这个原理实现的。 另外Hadoop的文件系统,即HDFS(Hadoop Distributed FileSystem) 也是一类,不过采取的方法稍有不同。

2)大多数任务所需要的数据需要从不同的磁盘中读出,联合使用。各种分布式系统允许结合多个来源的数据并实现分析,保证其正确性是一个非常大的挑战。MapReduce提出了一个编程模型。该模型将磁盘读写的问题进行抽象,并转换为对一个数据集(由键值对组成)的计算。

该计算由map和reduce两部分组成。


简而言之:Hadoop提供了一个可靠的共享存储和分析系统。HDFS实现存储,而MapReduce实现分析处理。这两部分是Hadoop的核心



为什么不对数据库来大量磁盘磁盘上的大规模数据进行批量分析呢?我们为什么需要MapReduce?

这些问题的答案来自磁盘的另一个发展趋势:寻址时间的提高远远慢于传输速率的提高。寻址是将磁头移动到特定磁盘位置进行读写操作的过程。它是导致磁盘操作延迟的主要原因。


可以将MapReduce视为 关系型数据库管理系统的补充。(可以简单认为MapReduce在数据量比较大的时候会比较有优势)


MapReduce会尽量在计算节点上存储数据,以实现数据的本地快速访问。“数据本地化”特征是MapReduce的核心特性,并因此而获得良好的性能。



Hadoop因为MapReduce及其分布式文件系统HDFS而出名,但Hadoop这个名字用于一组相关项目的统称:

Common:

    一组分布式文件系统和通用I/O的组件与接口(序列化、Java RPC 和持久化数据结构)

Avro:

    一种支持高效、跨语言的RPC以及永久存储数据的序列化系统。

MapReduce:

    分布式数据处理模型和执行环境,运行于大型商用机集群。

HDFS:

    分布式文件系统,运行于大型商用机集群。

Pig:

    一种数据流语言和运行环境,用以检索非常大的数据集。Pig运行在MapReduce和HDFS的集群上。

Hive:

    一个分布式,按列存储的数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言(由运行时引擎翻译成MapReduce作业)用以查询数据。

HBase:

    一个分布式,按列存储数据库。HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)。

Zookeeper:

    一个分布式,可用性能高的协调服务。提供分布式锁之类的基本服务用于构建分布式应用。

Sqoop:

    在数据库和HDFS之间高效传输数据的工具。
















展开阅读全文
打赏
0
16 收藏
分享
加载中
更多评论
打赏
0 评论
16 收藏
0
分享
返回顶部
顶部