Hadoop是一个用java编写的Apache开源框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集. Hadoop框架应用程序在跨计算机群集提供分布式存储和计算的环境中工作. Hadoop旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储.
核心,Hadoop有两个主要层次,即 :
处理/计算层(MapReduce)和
存储层(Hadoop分布式文件系统).
MapReduce是一种并行编程模型,用于编写Google设计的分布式应用程序,用于高效处理大量数据(多TB数据集),大型集群(数千个节点)的商用硬件,采用可靠,容错的
方式. MapReduce程序在Hadoop上运行,Hadoop是一个Apache开源框架.
Hadoop分布式文件系统(HDFS)是基于Google文件系统(GFS),提供旨在在商用硬件上运行的分布式文件系统.它与现有的分布式文件系统有许多相似之处.但是,来自其他分布式文件系统的差异
非常重要.它具有高度容错性,旨在部署在低成本硬件上.它提供对
应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序.
除上述两个核心组件外,Hadoop框架还包括以下两个模块 :
Hadoop Common : 这些是其他Hadoop
模块所需的Java库和实用程序.
Hadoop YARN : 这是作业调度和集群资源
管理的框架.
使用处理大规模处理的大型配置构建更大的服务器是相当昂贵的,但作为替代方案,您可以将许多商用计算机与单CPU连接在一起,作为单个功能分布式系统,实际上,群集机器可以并行读取数据集并提供更高的吞吐量.而且,它比一个高端服务器便宜.因此,这是使用Hadoop的第一个动机因素,它运行在集群和低成本机器上.
Hadoop在一组计算机上运行代码.此过程包括Hadoop执行的以下核心任务 :
数据最初分为目录和文件.文件分为128M和64M(最好是128M)的统一大小的块.
然后将这些文件分布在各个集群节点上以便进一步处理.
HDFS位于本地文件系统之上,负责监督处理.
块是复制以处理硬件故障.
检查代码是否已成功执行.
执行地图和减少阶段之间的排序.
将已排序的数据发送到某台计算机.
为每个作业编写调试日志.
Hadoop框架允许用户快速编写和测试分布式系统.它是高效的,它自动分配数据并在机器上工作,反过来利用CPU核心的底层并行性.
Hadoop不依赖在硬件上提供容错和高可用性(FTHA),而Hadoop库本身就是为了检测和处理应用层的故障而设计的.
服务器可以动态地从集群中添加或删除,Hadoop可以不间断地继续运行.
Hadoop的另一大优势是除了开源之外,它还是因为它是基于Java的,所以在所有平台上兼容.