做者 | WenasWeihtml
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。充分利用集群的威力进行高速运算和存储。node
Hadoop的框架最核心的设计就是:HDFS1和MapReduce2。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。git
Apache Hadoop软件库是一个框架,该框架容许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。库自己不依赖于硬件来提供高可用性,而是被设计用来检测和处理应用程序层的故障,所以能够在计算机集群的顶部提供高可用性服务,每台计算机都容易出现故障。github
Hadoop 是一个可以对大量数据进行分布式处理的软件框架, 支持C++,Java开发语言,其带有用Java语言编写的框架,所以运行在 Linux 生产平台上是很是理想的。apache
Hadoop 已经不仅是一个大数据框架,它逐渐演化成为 Hadoop 生态系统。Hadoop 生态系统中涵盖
了各类各样的大数据处理技术,包括Hadoop、Storm、Spark、Hive、Zookeeper、Flume、Kafka等一系列技术和框架,已然成为大数据处理的事实标准。编程
Hadoop的分布式架构,将大数据处理引擎尽量的靠近存储数据,对例如像 ETL3 这样的批处理操做相对合适,由于相似这样操做的批处理结果能够直接走向存储。Hadoop 的 MapReduce 功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,以后再以单个数据集的形式加载(Reduce)到数据仓库里。服务器
hadoop主要的功能就是用来处理大数据:网络
Hadoop的核心组件分别是:架构
MapReduce 编程模型借鉴了 "分而治之" 的思想,将一个大而复杂的计算问题分解成多个小的计算问题,由多个map()函
数对这些分解后的小问题进行并行计算,输出中间计算结果,而后由 reduce() 函数对 map() 函数的输出结果进行进一步合并,得出最终的计算结果。并发
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。并且是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,很是适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。
HDFS采用Java语言开发,所以任何支持Java的机器均可以部署Namenode或Datanode。
HDFS采用master/slave架构, 即主从模式。一个HDFS集群是由一个Namenode和必定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode通常是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户可以以文件的形式在上面存储数据。从内部看,一个文件其实被分红一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操做,好比打开、关闭、重命名文件或目录。它也负责肯定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的建立、删除和复制。
YARN-资源调度框架是从Hadoop2.0版本开始引入的, 引入以前, MapReduce框架的核心 Job Tracker(做业跟踪者), JobTracker 须要与集群中的机器定时通讯 (heartbeat), 须要管理哪些程序应该跑在哪些机器上,须要管理全部 job 失败、重启等操做,还须要和数据元数据中心通信,了解数据分布等等, 既当爹又当妈的意思,即既作资源管理又作任务调度/监控。Task Tracker资源划分过粗放,二大部分工做是能够高度一致的监控任务。
Job Tracker 存在的问题:
YARN 框架中将 JobTracker 资源分配和做业控制分开,分为 Resource Manager(RM) 以及 Application Master(AM)。
资源调度管理器最核心是
Yarn的主要组件以下:
Resource Manager:ResourceManager包含两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。
Yarn框架做为一个通用的资源调度和管理模块,同时支持多种其余的编程模型,好比最出名的Spark。
Hadoop 的 Common 工做理解起来比较简单, 就是封装了一些经常使用的底层工具,供其余
Hadoop 模块使用。其主要包括配置工具 Configuration、 远程过程调用(Remote Procedure
Cal.RPC)、序列化工具和 Hadoop 的抽象文件系统工具 FileSystem 等,为其余 Hadoop 模块的运行提供基本服务,并为开 发Hadoop 程序提供了必要的 API。
Hadoop 在物理架构上会采用 Master/Slave模式。NameNode 服务器存放集群的元数据信息,负责整个数据集群的管理。DataNode 分布在不一样的物理机架上,保存具体的数据块并按期向 NameNode 发送存储的数据块信息,以心跳的方式告知 NameNode。客户端与 Hadoop 交互时,首先要向 NameNode 获取元数据信息,根据 NameNode 返回的元数据信息,到具体的 DataNode 服务器上获取数据或写入数据。
Hadoop 提供了默认的副本存放策略,每一个 DataNode 默认保存了3个副本,其中2个副本会保存在同一个机架的不一样节点,另外一个副本会保存在不一样机架的节点上。