当前位置:首页 > 问答 > 正文

hadoop到底是啥,简单说就是支撑大规模数据处理的分布式系统架构

主要整合自Apache Hadoop官网的项目介绍、IBM知识库关于Hadoop的解读以及《Hadoop权威指南》核心观点)

Hadoop,就是为了解决一个非常具体且棘手的问题而诞生的:当一家公司拥有的数据量巨大到一台最顶尖的电脑也完全存不下、算不动的时候,该怎么办?Hadoop给出的答案不是去造一台更贵、更大的超级电脑,而是反其道而行之,用一大堆普通的、便宜的电脑,通过网络把它们连接起来,让它们协同工作,共同承担这个巨大的存储和计算任务,这种“人多力量大”的思路,就是所谓的“分布式系统架构”,Hadoop的核心思想非常朴素,就是把大任务拆成无数个小任务,分给一群机器去干,干完了再把结果收集起来。

要理解Hadoop具体是怎么做到这一点的,我们需要看看它的两个最核心的组成部分,就像人的左膀右臂一样,第一个核心部件叫HDFS,你可以把它想象成一个超级巨大的、分布式的硬盘,这个“硬盘”并不是一个实体的盒子,而是由成百上千台电脑的硬盘共同组成的,当你有一个超大文件,比如一部高清电影或者整个图书馆的扫描资料,需要存进去的时候,HDFS会自动把这个大文件切分成很多个标准大小的“数据块”,比如一个100GB的文件,可能会被切成100个1GB的小块,关键的是,它不会只把每个小块放在一台电脑上,而是为了安全起见,会把同一个数据块复制出两三个副本,分散地存放在不同的电脑里,这样,即使其中一两台电脑突然坏掉了,数据也不会丢失,因为其他电脑上还有备份,这种机制保证了海量数据存储的可靠性和安全性,这就是Hadoop解决“存不下”问题的方法。

光能存还不够,更重要的是能从这些海量数据里算出有价值的信息,这就是Hadoop的第二个核心部件,MapReduce计算框架要解决的问题,MapReduce是一种编程模型,它的名字就揭示了它的工作方式,分为“Map(映射)”和“Reduce(归约)”两个阶段,举个例子,假设我们有过去十年全中国所有的报纸文本数据,现在想统计一下“人工智能”这个词每年出现的次数,这个任务如果让一台电脑来做,它可能需要从头到尾扫描所有数据,耗时极长,而用MapReduce来做,它会这样做:在“Map”阶段,Hadoop会把任务分发到存放着各个数据块的电脑上,让每台电脑就地处理自己本地存储的那一小块数据,每台电脑会扫描自己那块数据,如果看到“人工智能”这个词,就记下“一笔账”,2015年,1次)、(2018年,1次),这个过程是并行进行的,几百台电脑同时在各自的数据上“映射”出初步结果,在“Reduce”阶段,系统会把所有电脑产生的这些零散的“小账本”收集起来,按照年份进行分组,把同一年份的所有次数相加,把所有电脑报上来的关于2015年的次数加起来,就得到了2015年“人工智能”出现的总次数,通过这种“分而治之”的策略,庞大的计算任务被完美地分解并并行处理,极大地提高了效率,这就是Hadoop解决“算不动”问题的方法。

正是因为Hadoop提供了这样一套成熟可靠的、能同时解决海量数据存储和计算问题的底层架构,它才成为了大数据时代的基石技术,在它出现之前,企业面对数据爆炸式增长往往束手无策,或者需要支付天价购买专有硬件和软件,Hadoop的出现,使得任何公司,哪怕是初创公司,也能利用廉价的普通服务器集群来处理之前只有科技巨头才能驾驭的数据规模,它催生了一个全新的数据处理生态,使得从Web日志分析、用户行为推荐、金融风险建模到基因序列分析等众多需要处理TB甚至PB级别数据的应用场景成为可能,可以说,没有Hadoop及其引发的技术革命,我们今天所熟知的许多互联网服务,如精准的搜索引擎、个性化的商品推荐、实时更新的地图路况等,都难以达到现在的规模和智能水平。

Hadoop的本质就是一个专门为处理“超大、超海量”数据而设计的工具包,它不追求单台机器的性能极限,而是通过软件层面的巧妙设计,将一群普通电脑组织成一个能力超强的“计算军团”,通过分工协作来完成看似不可能完成的任务,它奠定了现代大规模分布式数据处理的基础,是大数据技术领域一个里程碑式的存在。

hadoop到底是啥,简单说就是支撑大规模数据处理的分布式系统架构