通过一个对数据的存储和分析的简单实例初识Hadoop

        对于一个刚刚接触Hadoop的菜鸟来说,Hadoop的概念还是挺抽象的,而且这个技术刚刚兴起,除了阿里巴巴,腾讯、中国移动这些技术实力非常强而且需要对数据进行海量存储的公司对Hadoop技术有一些初步应用以外,其它中小企业对它的应用和需求并不多,网络上也鲜有比较适合的解决方案以供参考。前阵,在Hadoop的官方网站看过一篇文档,通过  一个数据存储和分析的简单实例,浅显易懂的对Hadoop进行了一个简要介绍,自认为对我理解Hadoop起到了启蒙作用,下面通过这个实例和我的它的理解对Hadoop的概念做一个初步说明。
      多年来,硬盘存储容量快速增长的同时,访问速度(数据从硬盘读取的速度)却未能与时俱进。1990年,一个普通硬盘驱动器的存储容量为1370 MB,传输速度为4.4 MB/s,读完整个硬盘的数据需要5分钟的时间;20年过去了,1TB级别的磁盘驱动器是很正常的,但数据传输的速度却在100 MB/s左右,所以它需要花将近3个小时才能读完整个驱动器的数据。从一个驱动器上读取所有的数据需要很长时间,写数据甚至更慢。
      所以,如何大幅减少硬盘驱动器的数据读取时间显的至关重要。一个很简单的方法就是同时从多个磁盘读取数据。假设,我们有100个容量为1TB的磁盘,需要存储的数据为1TB,每个磁盘存储百分之一的数据(即1/100T=10485.76MB),如果这100个硬盘并行运算,那么不到两分钟我们就可以读完这1T的数据。由此可见并行运算对于减少数据读取时间是非常有效的。但多个磁盘并行运算也有一些瓶颈问题:
       1. 第一个需要解决的问题是硬件故障:一旦开始使用多个硬件设施,其中一个会出故障的概率是非常高的,避免数据丢失的常见做法就是复制;通过系统保存数据的冗余副本,在故障发生时,可以使用数据的另一份副本。这就是冗余磁盘阵列的工作方式。Hadoop的文件系统HDFS也是一个例子,它的工作原理与冗余磁盘阵列基本相似,都是通过保存数据的冗余副本来避免数据丢失,不同的是HDFS以数据块(Block)的形式,将数据块复制三份,存储在不同的数据节点上。
       2. 之前的数据是通过分布式存储做并行运算的,大部分数据分析任务需要通过某种方式把数据合并起来,即从一个磁盘读取的数据可能需要和另外99个磁盘中读取的数据合并起来才能使用。目前,各种不同的分布式系统是能够组合多个来源的数据,但是如何保证正确性是一个非常难的挑战,而Hadoop中的核心组件MapReduce提供了一个编程模型,其抽象出上述磁盘读写的问题,将其转换为计算一个由成对键/值组成的数据集,通过Map和Reduce的接口将分布式存储的数据整合在一起。
       综上,Hadoop提供了一个稳定的共享存储和分析系统。存储由HDFS实现,分析由MapReduce实现,Hadoop很好的解决了上述关于分布式存储和并行运算所遇到的瓶颈问题,纵然Hadoop还有其他功能,但这些功能是它的核心所在。

你可能感兴趣的:(hadoop,职场,休闲)