Hadoop基本原理
Getting Started
Hadoop是一个用于海量数据统计分析的分布式计算框架,封装了分布式计算中比较困难的进程间通信、负载均衡,任务调度等模块,降低了学习门槛。在最简单的程序实现中,仅仅需要重写map和reduce方法,并实现任务提交逻辑。接下来,就让我们一起推开Hadoop的大门,走进大数据的神奇世界。
Hadoop的组成
Hadoop目前主要包括Hadoop1.x和hadoop2.x,两种版本差距较大,目前常用的是Hadoop2.x版本,所以主要基于Hadoop2.x进行讲解
主要组成模块
- Hadoop Distributed File System(HDFS):分布式文件存储系统。
- MapReduce:并行计算框架(可以自定义计算逻辑的部分)
- Yet Another Resource Negotiator(YARN):另一种资源协调者(顾名思义,Hadoop1.x采用的不是这一个资源管理器)
MapReduce的工作机制
上图是MapReduce的工作原理,首先解释一下各个组成模块的作用。
- Job:由客户端向集群提交的一次计算任务。
- Task:集群的最小可执行单位(一个Job将会分为多个Task执行)
- ResourceManager(以下简称RM):管理整个集群的计算资源,主要用于为每一个Job分配计算资源(整个集群只有一个RM)
- Container:资源分配单位,一个Container包括一些CPU和存储资源
- NodeManager(以下简称NM):管理单台服务器的计算资源,类似RM的更细粒度实现(集群中每台服务器有一个NM)。
- ApplicationMaster(以下简称AM):监控每一个Job的执行情况,包括资源申请、Task调度等。
为了便于理解,下面有一个并不是太恰当的比喻。类似一个学生宿舍的构成,RM相当于宿舍管理处的大BOSS,而Task则相当于一个学生,大BOSS(RM)负责分配一片区域给某个班(Job)的学生(Task)住,而具体每个学生(Task)住哪儿,则由班主任(AM)和楼管(NM)商量(当然一个班级的学生还是可以住在多个楼里边的)。
接下来具体解释图中每一步的作用:
- client调用Job提交接口,Job被提交到集群上
- 为了便于标识Job,会首先向RM请求一个唯一ID,并同时检查Job中的输入/输出路径是否存在,如果输入路径不存在,则报错;如果输出路径存在,也会报错(注意别看错了)
- 获得唯一ID之后,就把Job所需资源(包括Jar包和输入路径信息)上传到HDFS中(因为分布式环境的原因,需要将这些资源上传到所有节点都能访问到的目录,即这里的HDFS)
- 在完成以上步骤之后,则可以真正提交Job到集群中。
- 启动一个Job的时候,首先需要启动该Job的AM,所以RM会主动分配NM上的一个Container(一个Container就是一个JVM),用于运行AM守护进程。
- 初始化Job,包括启动一些Job运行状态跟踪对象。
- 从HDFS中读取第3步上传的输入路径信息(包括输入文件所在的服务器节点信息,一份输入文件可能存储在多台服务器上)。
- 根据上一步的文件路径信息,向RM申请所需资源(Container),尽量保证Container和输入文件在同一台服务器上边,能够减小网络IO(即数据本地化)
- AM根据RM分配的Container,向Container所属的NM申请启动Task。
- Container在收到启动命令之后,会首先从HDFS下载Task所需Jar包和缓存文件等
- 最后就是Task的正式运行阶段了。
Hadoop基本原理相关推荐
- Hadoop基本原理之一:MapReduce
1.为什么需要Hadoop 目前,一块硬盘容量约为1TB,读取速度约为100M/S,因此完成一块硬盘的读取需时约2.5小时(写入时间更长).若把数据放在同一硬盘上,且全部数据均需要同一个程序进行处理, ...
- 【大数据分析之Hadoop】一、Hadoop基本原理
一.hadoop概念 Hadoop由两部分组成,一是负责存储与管理文件的分布式文件系统HDFS.二是负责处理与计算的MapReduce的计算框架. 二.HDFS 1.namenode 负责管理工作(管 ...
- Hadoop HDFS概述
前言 在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储.统一管理分布在集群上的文件系统称为分布式文件系统. HDFS,是Hadoop Distributed File System的简 ...
- Hadoop Streaming的基本原理与参数解析
Hadoop Streaming原理介绍 Hadoop是基于hdfs和MapReduce的分布式框架.由于hadoop是基于java语言的,对于其他语言实现map reduce操作不太方便,因此出现了 ...
- 使用ToolRunner运行Hadoop程序基本原理分析
为了简化命令行方式运行作业,Hadoop自带了一些辅助类.GenericOptionsParser是一个类,用来解释常用的Hadoop命令行选项,并根据需要,为Configuration对象设置相应的 ...
- Hadoop框架:MapReduce基本原理和入门案例
本文源码:GitHub·点这里 || GitEE·点这里 一.MapReduce概述 1.基本概念 Hadoop核心组件之一:分布式计算的方案MapReduce,是一种编程模型,用于大规模数据集的并行 ...
- XGBoost4J-Spark基本原理
XGBoost4J-Spark基本原理 XGBoost4J-Spark是一个项目,旨在通过使XGBoost适应Apache Spark的MLLIB框架,无缝集成XGBoost和Apache Spark ...
- hadoop学习之一
Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop的框架最核心的设计就是:HD ...
- 《Hadoop基础教程》之初识Hadoop
Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...
- Hadoop:HDFS NameNode内存全景
原文转自:https://tech.meituan.com/namenode.html 感谢原作者 一.概述 从整个HDFS系统架构上看,NameNode是其中最重要.最复杂也是最容易出现问题的地方, ...
最新文章
- Node.js进击基础一(5-11事件模块)
- 项目用druid,长时间不访问应用,再访问又连接不上了数据库了
- STC51-A/D和D/A
- 《Cracking the Coding Interview》——第10章:可扩展性和存储空间限制——题目1
- 在线CSV转XML/JSON工具
- quicksearch连接oracle,dos命令下连接oracle数据库表
- 联邦学习在光大科技的落地应用
- Java 自动装箱与拆箱(Autoboxing and unboxing)
- linux ps流程,Linux下PS命令详解 (转)
- 英制BSW 美制UNC 螺牙的理解
- 科普:千兆级LTE技术深度解析
- 【Qt】无法定位程序输入点 于动态链接库
- xpdf工具(PDF转图片工具)
- 洛谷P1003铺地毯
- java如何获取复选框选中的值
- java图形化界面编程之Swing
- walking机器人入门教程-硬件清单
- 蚂蚁金服面试及笔试(附自己的答案)
- TFTLCD 16位并口屏幕驱动
- 解决Ardupilot+gazebo+mavros在仿真状态下无人机能解锁,但是不能起飞的问题
热门文章
- JAVA代码翻译更新(第五篇)
- (转载)New poker 2总算放出新固件了!
- html用css美化表单登录页面
- 【机器学习】第一章 - 机器学习概论 - 周志华机器学习笔记
- linux flash文件系统,需要了解Linux flash文件系统
- 服务器pci-e硬盘,来一发干货,PCI-E SSD硬盘使用须知
- 文件(1):文本文件、二进制文件、文件编码
- qt mysql图形界面_qt数据库界面
- 2017cad光标大小怎么调_2017版CAD画直线时怎么设置光标处有显示长度和角度的?...
- 基于SpringBoot实现简易的单点登录系统(提供gitee源码)