什么是Hadoop
Apache Hadoop是一个开放源代码框架,用于在节点(商品硬件)集群上并行存储数据和处理大数据的数据集。
Hadoop框架旨在从单个服务器扩展到数千台计算机,每台计算机都提供存储和计算功能。它也是可靠和容错的,框架本身旨在检测和处理应用程序层的故障,因此Hadoop框架使用节点群集提供了高可用性的服务。
Hadoop的模块
Hadoop框架是用Java编写的,其中包括以下模块
- Hadoop Common –该模块包含其他模块使用的库和实用程序。
- Hadoop分布式文件系统(HDFS)–这是Hadoop框架的存储部分。它是一个分布式文件系统,其工作原理是将大文件拆分为多个块并将这些块存储在不同的节点中。这样,HDFS可提供对应用程序数据的高吞吐量访问。
- Hadoop Yarn(还有另一个资源协商程序)–该模块负责调度作业和管理集群资源。请参阅Hadoop中的YARN以了解有关YARN的更多信息。
- Hadoop MapReduce –这是MapReduce编程模型的实现,用于并行处理数据。
Hadoop的简要历史
Hadoop是由Doug Cutting创建的,它起源于Nutch,它是一个开源Web搜寻器。当道格·切特(Doug Cutting)和迈克·卡法雷利亚(Mike Cafarella)研究Nutch并尝试对其进行扩展时,他们遇到了两本有关GFS(Google的分布式文件系统)和MapReduce的Google白皮书。 Nutch的开发人员使用这些白皮书中描述的架构,提出了分布式文件系统NDFS(Nutch分布式文件系统)和MapReduce的开源实现。
已经认识到可以将NDFS和MapReduce创建为一个单独的项目,并且Hadoop最初成为子项目。雅虎还通过提供资源和团队来帮助开发框架,方法是改进可伸缩性,性能和可靠性,并添加许多新功能。 Hadoop在2008年成为Apache中的一个顶级项目,而不是一个子项目,现在它已成为具有自己的生态系统的广泛使用的框架。
Hadoop如何工作的
在这里,我将尝试以非常简单的方式解释Hadoop的工作原理,而不必像NameNode或者Resource Manager之类的所有守护程序那样复杂。
将巨大的文件复制到HDFS后,框架会将文件拆分为多个块,并将这些块分布在群集中的各个节点上。
然后,编写一个MapReduce程序,该程序具有一些逻辑来处理该数据。我们将代码打包为jar,然后将打包的代码传输到存储数据块的DataNodes。这样,MapReduce代码就可以在文件部分上工作(HDFS块位于运行代码的节点上)并并行处理数据。
另一个优点是,我们无需将数据发送到代码中(例如,从DB服务器获取数据的传统编程),而是将代码发送到数据中。显然,数据的大小要大得多,因此Hadoop可以更有效地利用网络带宽。