微软Big Data解决方案介绍(二)

Hadoop是由Apache基金会开发,这个一个开源的组织。Hadoop的想法非常简单直接,就是借用分布式程序,充分利用集群的能力来进行计算和存储。Hadoop听上去比较抽象,而且一些介绍的文档列举了许多比较奇怪的名字,让人感觉Hadoop好像很复杂。事实上Hadoop是简单和直接的。Hadoop地核心就是3个组件,甚至可以说就是2个组件。一个是分布式文件系统(Hadoop Distributed File System),简称HDFS。另一个是MapReduce的应用(还有一个是HBase分布式NoSQL列数据库.)

HDFS有着高容错性的特点,并且设计用来部署在低成本的硬件上。这个有非常大的意义。由于保存数据的硬件的成本低廉,用户就可以存储大量的数据,而不必由于成本问题不得不丢弃或者封存老数据。HDFS实现高容错性的原理也非常简单,就是因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。另外,HDFS对超大文件的访问进行了优化,利用流的形式访问文件系统中的数据来提高大文件访问性能

MapReduce引擎 - MapReduce应用程序主要含有2个函数-Map 函数和Reduce 函数。Map 接受一组数据并将其转换为一个键/值对列表,Reduc函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。下面我举一个简单的例子大家就会明白了

假设输入的是 I want to buy a cake, you want to buy a bike 运行Map 函数将得出以下的键/值对列表:

(I, 1) (want, 1) (to, 1) (buy, 1) (a, 1) (cake, 1)

(you, 1) (want, 1) (to, 1) (buy, 1) (a, 1) (bike, 1)

  如果对这个键/值对列表应用 Reduce 函数处理,将得到以下一组排过序的键/值对:

(a, 2) (bike,1) (buy, 2) (cake, 1) (I, 1) (to, 2) (want, 2) (you, 1) 

在Hadoop里面由于MapReduce是可以由多个节点来并行处理的,比如 I want to buy a cake是一个节点处理,you want to buy a bike是另一个节点处理,然后将这两个键/值对列表应用到另一个 Reduce 函数,这样就体现的Hadoop并行处理的威力。

其他的就是在Hadoop生态环境里面的一些工具和应用,像Hive, pig等等。只要理解了Hadoop的HDFS和MapReduce作用和原理,其实就算是理解了Hadoop的主要运作方式了