Hadoop是什么?Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.
Hadoop框架中最核心设计就是:HDFS和MapReduce.HDFS提供了海量数据的存储,MapReduce提供了对数据的计算.
数据在Hadoop中处理的流程可以简单的按照下图来理解:数据通过Haddop的集群处理后得到结果.
HDFS:Hadoop Distributed File System,Hadoop的分布式文件系统.
大文件被分成默认64M一块的数据块分布存储在集群机器中.
如下图中的文件 data1被分成3块,这3块以冗余镜像的方式分布在不同的机器中.
MapReduce:Hadoop为每一个input split创建一个task调用Map计算,在此task中依次处理此split中的一个个记录(record),map会将结果以key--value 的形式输出,hadoop负责按key值将map的输出整理后作为Reduce的输入,Reduce Task的输出为整个job的输出,保存在HDFS上.
Hadoop的集群主要由 NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker组成.
如下图所示:
NameNode中记录了文件是如何被拆分成block以及这些block都存储到了那些DateNode节点.
NameNode同时保存了文件系统运行的状态信息.
DataNode中存储的是被拆分的blocks.
Secondary NameNode帮助NameNode收集文件系统运行的状态信息.
JobTracker当有任务提交到Hadoop集群的时候负责Job的运行,负责调度多个TaskTracker.
TaskTracker负责某一个map或者reduce任务.
核心机制:
Hadoop的核心机制是通过HDFS文件系统和MapReduce算法进行存储资源、内存和程序的有效利用与管理。在现实的实例中,通过Hadoop,可以轻易的将多台普通的或低性能的服务器组合成分布式的运算-存储集群,提供大数据量的存储和处理能力。
知其然,知其所以然。要想深入学习和理解Hadoop的核心机制,还要从MapReduce和HDFS的原理入手。
MapReduce的“大事化小”
作为Google提出的架构,MapReduce通过Map(映射)和Reduce(化简)来实现大规模数据(TB级)的并行计算。可以简单理解 为,通过Map(映射)函数,把一组键值对映射成一组新的键值对;指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键 组。
MapReduce是一种大数据计算的开发模式和思想方法。开发人员先分析需求所提出问题的解决流程,找出数据可以并发处理的部分(Reduce),也就是那些能够分解为小段的可并行处理的数据,再将这些能够采用并发处理的需求写成Map程序(Map)。
然后就可以使用大量服务器来执行Map程序,并将待处理的庞大数据切割成很多的小份数据,由每台服务器分别执行Map程序来处理分配到的那一小段数据,接着再将每一个Map程序分析出来的结果,透过Reduce程序进行合并,最后则汇整出完整的结果。
MapReduce的整个流程就像…
MapReduce是Hadoop分布式计算的关键技术,将要执行的问题,拆解成Map和Reduce的方式来执行,以达到分散运算的效果。例如要 搜寻网页中的“In Big Data”这个词,可以先用Map程序,来计算出所有网页中,每一个词的位置。再使用Reduce程序,在每一个字的清单中,检索出“In Big Data”所对应的URL,您就来到了这个博客。MapReduce程序的执行过程如下:
MapReduce运行流程
MapReduce的运作方式就像快递公司一样。物流部门会将发往各地的包裹先运送到各地的物流分站,再由分站派出进行派送;快递员等每个包裹的用 户签单后将数据反馈给系统汇总,完成整个快递流程。在这里,每个快递员都会负责配送,所执行的动作大致相同,且只负责少量的包裹,最后由物流公司的系统进 行汇总(而不是从一个库房一个快递员直接发往各地;这样的话估计顺风、京东神马的会被人骂死)。
在Hadoop集群架构中,服务器依据用途可分成Master节点和Worker节点,Master负责分配任务,而Worker负责执行任务。
Hadoop中的Master与Worker
Hadoop运算集群中的服务器依用途分成Master节点和Worker节点。Master节点中含有JobTracker、NameNode、 TaskTracker和DataNode程序;Worker节点含有TaskTracker和DataNode。另外在系统的架构上,最简单的 Hadoop架构,可以分成上层的MapReduce运算层以及下层的HDFS数据层。
在Master节点的服务器中会执行两套程序:一个是负责安排MapReduce运算层任务的JobTracker,以及负责管理HDFS数据层的 NameNode程序。而在Worker节点的服务器中也有两套程序,接受JobTracker指挥,负责执行运算层任务的是TaskTracker程 序,与NameNode对应的则是DataNode程序,负责执行数据读写操作以及执行NameNode的副本策略。
在MapReduce运算层上,担任Master节点的服务器负责分配运算任务,Master节点上的JobTracker程序会将Map和 Reduce程序的执行工作指派给Worker服务器上的TaskTracker程序,由TaskTracker负责执行Map和Reduce工作,并将 运算结果回复给Master节点上的JobTracker。
在HDFS数据层上,NameNode负责管理和维护HDFS的名称空间、并且控制档案的任何读写动作,同时NameNode会将要处理的数据切割 成一个个档案区块(Block),每个区块是64MB,例如1GB的数据就会切割成16个档案区块。NameNode还会决定每一份档案区块要建立多少个 副本,一般来说,一个档案区块总共会复制成3份,并且会分散储存到3个不同Worker服务器的DataNode程序中管理,只要其中任何一份档案区块遗 失或损坏,NameNode会自动寻找位于其他DataNode上的副本来回复,维持3份的副本策略。
在一套Hadoop集群中,分配MapReduce任务的JobTracker只有1个,而TaskTracker可以有很多个。同样地,负责管理 HDFS文件系统的NameNode也只有一个,和JobTracker同样位于Master节点中,而DataNode可以有很多个。
不过,Master节点中除了有JobTracker和NameNode以外,也会有TaskTracker和DataNode程序,也就是说Master节点的服务器也可以在本地端扮演Worker角色的工作。
在部署上,因为Hadoop采用Java开发,所以Master服务器除了安装操作系统如Linux之外,还要安装Java执行环境,然后再安装 Master需要的程序,包括了NameNode、JobTracker和DataNode与TaskTracker。而在Worker服务器上,则只需 安装Linux、Java环境、DataNode和TaskTracker。
在之后的文章中将详细说明Hadoop安装部署方面的问题。这里只针对Hadoop的运行机制及内部细节做了讨论;在实际的应用中虽然还需要很多知识,但就理解Hadoop和MapReduce核心思想来说,以上的内容值得反复推敲。对技术,要知其然,知其所以然!
相关推荐
首先,Hadoop的核心由两个主要部分组成:Hadoop Distributed File System (HDFS) 和 MapReduce。HDFS 是一个高度容错性的系统,设计用来运行在廉价硬件上,它可以将大文件分布在多个节点上,确保数据的冗余和高可用...
Java-org.apache.hadoop是Apache Hadoop项目的核心组件,它在分布式计算领域扮演着至关重要的角色。Hadoop是由Apache软件基金会开发的一个开源框架,主要用于处理和存储大量数据。它设计的初衷是为了支持数据密集型...
Apache Ambari 是一款强大的开源工具,专门设计用于简化Apache Hadoop生态系统的集群管理与监控。它通过一个直观的Web界面提供了丰富的功能,使管理员能够轻松地供应、配置、管理和监控Hadoop集群。Hadoop在这里指的...
### Apache Hadoop 知识点详解 #### 一、Apache Hadoop 概述 Apache Hadoop 是一个由 Apache Software Foundation 开发的开源软件框架,它主要用于处理和存储大规模数据集。该框架支持分布式计算,能够跨越多台...
Hadoop的核心由两个主要组件构成:Hadoop Distributed File System (HDFS) 和 MapReduce。HDFS是一种分布式文件系统,能存储和处理海量数据;MapReduce是并行处理模型,用于处理和生成大数据集。 二、Hadoop 2.x的...
本书共包含17个章节及三个附录,涵盖了从Hadoop的基础概念到高级应用的各个方面: 1. **第1章:大数据的动机** - 本章旨在阐述大数据时代的需求及其背后的推动力。它讨论了大数据产生的原因、处理大量数据所面临的...
它主要由两个核心组件构成:HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供了分布式文件系统,而MapReduce则是一个并行处理和计算模型。`hadoop-client-modules.rar`这个压缩包很可能是包含了与...
Hadoop是由Apache基金会开发的一款分布式系统基础架构,旨在使用户无需深入了解分布式系统的底层复杂性即可开发分布式程序,充分利用集群的强大计算和存储能力。Hadoop的概念源于2005年秋天,当时作为Lucene的子项目...
Apache Ranger 是一个强大的安全管理框架,特别为Apache Hadoop生态系统设计,旨在提供集中式的授权和审计功能。这个框架允许管理员精细地控制对Hadoop组件,包括HDFS、YARN、Hive、HBase等数据访问的权限,从而确保...
Apache Sentry 是一个重要的开源组件,源自Cloudera公司,它主要负责在Hadoop生态系统中提供细粒度的、基于角色的授权和多租户管理功能。作为Apache的孵化项目,Sentry已经集成到了Hive、HCatalog、Apache Solr以及...
### Apache Hadoop 面试题解析 #### 一、启动Hadoop集群会分别启动哪些进程?各自的作用是什么? 1. **NameNode**: - **功能**:维护整个HDFS文件系统的目录树结构,记录文件与目录之间的层级关系。它还负责记录...
接着,文中指出Hadoop已经成为了大数据平台的内核,是分布式操作系统中的核心组件。没有任何人会单独使用内核,Hadoop生态系统是由Apache下的一系列项目组成,这些项目共同构成了一个松散的联邦结构,允许平台的演进...
类型系统和图形引擎共同构成了核心机制,所有功能都通过API暴露,可以通过Kafka消息系统进行集成。Atlas还支持多种数据源的元数据获取,如Hive、Sqoop和Storm。 4. **内部协作流程**: Atlas 利用JanusGraph存储和...
MapReduce则是Hadoop的核心处理机制,通过Map和Reduce两个步骤,实现了大规模数据的并行计算。对于初学者来说,理解这些基础知识是迈进Hadoop世界的第一步。通过实践和学习,你可以掌握更复杂的分布式数据处理技术,...
Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的出现为大数据处理提供了高效、可靠的解决方案。这个压缩包文件“hadoop 1.2.1核心源码”包含了Hadoop项目的核心组件,让我们深入探讨一下其中涉及的关键...
- **软件版本兼容性**:在选择Apache Hadoop及相关组件版本时,需注意各组件之间的兼容性,避免因版本不匹配导致问题。 - **性能调优**:针对具体的应用场景进行性能调优,例如通过调整HDFS副本数、MapReduce任务...
Apache Hadoop YARN,即Yet Another Resource Negotiator,是Hadoop生态系统中的一个关键组件,它为Hadoop带来了资源管理和分布式应用运行的新机制。自Hadoop 2版本起,YARN成为Hadoop的核心之一,它不仅替代了原有...
在Hadoop中,远程过程调用(RPC)是核心组件之一,它使得节点间的通信变得高效且可靠。本文将深入探讨Hadoop的RPC机制,解析其工作原理,并结合源码分析其内部实现。 一、RPC简介 RPC是一种让程序能够调用运行在...