Hadoop架构的初略总结(1)

Hadoop架构的初略总结(1)

Hadoop是一个开源的分布式系统基础架构,此架构可以帮助用户可以在不了解分布式底层细节的情况下开发分布式程序。

首先我们要理清楚几个问题。

1.我们为什么需要Hadoop?

解:

简单来说,我们每天上网浏览,上街购物,都会产生数据。我们处于一个数据量呈爆发式增长的时代。我们需要对这些数据进行分析处理,以获得更多有价值的东西。而Hadoop应时代而生。其次我们应该比较了解传统型关系数据库跟Hadoop之间有何区别。这些在前面的Hadoop第二课我们都有所提到。

2.不难知道,现阶段有Hadoop1.0和Hadoop2.0,那Hadoop2.0生态系统是有哪些组成的呢?

Hadoop2.0作为Hadoop1.0的升级版本,可以先大致了解下。

解:

用百度脑图画了个图,便于更直观的记忆了解。

3.在前面的问题中,我们了解了Hadoop2.0大致是由哪些组成的,那么我们由此作为铺垫来探究Hadoop1.0的大致工作流程。

解:

用ppt绘画了个流程图,如图所示:

通过观察流程图,我们不难知道以下三点:

? 第一代Hadoop,由分布式文件系统HDFS和分布式计算框架MapReduce组成

? HDFS由一个NameNode和多个DataNode 组成

? MapReduce由一个JobTracker和多个TaskTracker组成

引用某位前辈博客中的话。即Hadoop通过HDFS既能够存储海量的数据,又能够通过MapReduce实现分布式的一个计算,用一句话来概括Hadoop就是:Hadoop是适合大数据的分布式存储与计算的一个平台。

有了对整体结构的大致了解。下面介绍一下HDFS的体系结构。首先我们要知道HDFS采用了主从(Master/Slave)结构模型。何为主从结构?经查阅资料,有以下解释:

HDFS采用的是基于Master/Slave主从架构的分布式文件系统,一个HDFS集群包含一个单独的Master节点和多个Slave节点服务器。这里的一个单独的Master节点的含义是HDFS系统中只存在一个逻辑上的Master组件。一个逻辑的Master节点可以包括两台物理主机,即两台Master服务器、多台Slave服务器。一台Master服务器组成单NameNode集群,两台Master服务器组成双NameNode集群,并且同时被多个客户端访问,所有的这些机器通常都是普通的Linux机器,运行着用户级别(user-level)的服务进程。

这里需要提到的是 集群的概念在Hadoop第二课中有所解释。我的理解就是一个集群是由若干计算机通过某种方式成为了一个整体!

简单来说,一个HDFS集群是有由一个NameNode和若干个DateNode组成,其中NameNode是主节点(Master节点),DateNode是从节点(Slave节点),每一个节点都是一台普通的计算机。只不过在Hadoop2.0中,一个逻辑的Master节点是包含上面跑NameNode进程的两台服务器。

这里引入Client(客户端),顾名思义,就是为客户提供本地服务的程序。具体的我也不清楚。而HDFS是通过三个重要的角色来进行文件系统的管理,NameNode,DateNode,Client。

接下来我们先进一步了解HDFS中NameNode,DateNode,SecondearyNameNode的作用。

(在Hadoop第二课中有相关讲解,这里进行一定归纳补充)

NameNode

作为主服务器,可以看作是分布式文件系统中的管理者。

1)    主要负责管理文件的命名空间操作,比如打开、关闭、重命名文件或目录。集群配置信息和存储块的复制和客户端对文件的访问操作等;

2)    它会将文件系统的Metadata存储到内存中,这些信息包括文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode中的信息等,也可以说,它负责文件块到具体DateNode的映射

Ps:也就是说,NameNode管理着整个文件系统的Metadata(元数据),所谓元数据信息指定是除了数据本身之外涉及到文件自身的相关信息 ;其次,NameNode保管着文件与Block块(文件块)序列之间的对应关系以及Block块与DataNode节点之间的对应关系 。文件块后面会进行解释。

DateNode:

HDFS允许用户以文件的形式存储数据。而文件在HDFS底层被分割成了Block。DataNode是文件存储的基本单位,它将被分割的文件块存储到本地文件系统中,保留了所有Block的Metadata,同时周期性地将所有存在的Block信息发送给NameNode(心跳检测 有问题的话用数据备份的方式来保证数据的安全性)。

值得注意的一点:在HDFS中,我们真实的数据是由DataNode来负责来存储的,但是数据具体被存储到了哪个DataNode节点等元数据信息则是由我们的NameNode来存储的。

SecondearyNameNode:不是太了解,就是一个冷备份。具体的我相信后面的博客中我会写到。

最后,我们通过三个具体的操作来说明一下HDFS对数据是如何进行管理的。文件写入,文件读取,文件块复制。(吐槽一下这部分是书上的内容,有了前面知识点的铺垫,可以有个理解。好难得打字…)

(1) 文件写入

1)    Client向NameNode发送文件写入的请求

2)    NameNode根据文件大小和文件块配置情况,返回给Client所管理的DateNode的信息

3)    Client将文件划分为多个Block,根据DataNode的地址信息,按顺序将其写入到一个DataNode中

(2) 文件读取

1)    Client向NameNode发起文件读取请求

2)    NameNode返回文件存储的DataNode信息

3)    Client读取文件信息

(3) 文件块复制

1)    NameNode发现部分文件的Block不符合最小复制数这一要求,或部分DataNode失效

2)    通知DataNode相互复制Block

3)    DataNode开始直接相互复制

值得一提的是,文件在内部被分为多个文件块,这些Block分散存储在不同的DateNode上,每个Block还可以进行复制,一个Block会有三个备份,进而达到容错容灾的目的。

总结完HDFS后,我们下面介绍一下MapReduce的体系结构。

MapReduce的体系结构也是一个主从式的结构,主节点JobTracker只有一个,从节点TaskTracker有很多个。也就是说,MapReduce在Hadoop体系中,这一简单易用的软件框架(Map/Reduce框架)是有一个单独运行在主节点的JobTracker和运行在每个集群从节点的TackTracker共同组成的。

那么JobTracker和TackTracker这两个进程有何作用呢?

Hadoop中有一个作为主控的JobTracker,负责调度构成一个作业的所有任务。当一个Job被提交时,JobTracker接收到提交作业和其配置信息后,就会将Map任务和Reduce任务分发给空闲的TaskTracker,让这些任务并发运行,并负责监控任务的运行情况。而TaskTracker它必须运行于DataNode上,也就是说DataNode即是数据存储点,也是计算节点。如果某一个TaskTracker出了故障,JobTracker会将其负责的任务交给另一个空闲的TaskTracker重新运行。

最后,我们来说说MapReduce编程模型的原理(先了解一下,有个印象):利用一个key/value对集合产生一个输出的key/value对集合。MapReduce库的用户用两个函数来表达这个计算:Map和Reduce。

好了,不早了。Hadoop架构的初略总结(2)会讲解Hadoop2.0的框架,1.0和2.0的区别,尽可能的学习下YARN.YARN上课时听得我一脸懵逼。

参考文献:

http://blog.csdn.net/a2011480169/article/details/53647012

http://book.51cto.com/art/201504/473015.htm

原文地址:https://www.cnblogs.com/DC0307/p/8594024.html

时间: 2024-08-10 16:28:34

Hadoop架构的初略总结(1)的相关文章

18.如何自学Struts2之Struts2标签和集成初略总结篇

18.如何自学Struts2之Struts2标签和集成初略总结篇[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 有问题可以直接回复这篇文章.

Spring简单的小例子SpringDemo,用于初略理解什么是Spring以及JavaBean的一些概念

一.开发前的准备 两个开发包spring-framework-3.1.1.RELEASE-with-docs.zip和commons-logging-1.2-bin.zip,将它们解压,然后把Spring开发包下dist目录的所有包和commons-logging包下的commons-logging-1.1.1.jar复制到名为Spring3.1.1的文件夹下.那么Spring开发所需要的包就组织好了. 二.建立项目,导入包 在项目节点上右键,Build Path/ADD Libraries/U

学习: Delphi FireMonkey 结构性初略分析

Delphi 下的FireMonkey,很好地实现了 DirectUI与跨平台.学习了解他,对DirectUI编程及项目的跨平台实现有一定帮助.虽然作为开发者个体,并不需要了解太多这些东西,只要求拿来能用能实现功能就行,但对 FireMonkey的学习分析,对自己程序设计思想的提升,会有一定帮助. 昨天用FireMonkey控件写了一个小例子,发现他的 Animation类在实现控件的小动画时,很高效,很灵活.初步印象是 FireMonkey的内核有很多值得学习的地方,尤其他的界面渲染上,可以深

架构师初码邀你—浅聊上云思路

架构师初码邀你-浅聊上云思路 话题发布专家:初码--资深程序员,初级架构师,知名博主 在实践中,无论是个人站长还是中小企业,选择云服务,都会遇到如何上云的问题,这个问题的详细描述就是,应该选择怎样一种迁移和部署到云服务上的方式并且应该使用哪些云服务?今天我们抛开具体的技术和语言不谈,就可能出现的架构方式简单的聊一聊,以我个人的经验来看,有较多的遇到过如下3种上云场景 一.傻瓜型: 在云服务时代前,但凡提到建站,多数所指即使用虚拟主机搭建一个内容管理网站或者论坛社区网站,操作者只需要知晓简单的虚拟

自然语言处理(英语文章)———初略处理

这里利用2-gram模型来提取一篇英文演讲的初略的主题句子,这里是英文演讲的的链接:http://pythonscraping.com/files/inaugurationSpeech.txt n-gram模型是指n个连续的单词组成的序列 以下贴出代码(基于python2.7),详情参考<python网络数据采集> #-*- coding:utf-8 -*- from urllib2 import urlopen import re import string import operator

Hadoop架构: 流水线(PipeLine)

该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 流水线(PipeLine),简单地理解就是客户端向DataNode传输数据(Packet)和接收DataNode回复(ACK)[Acknowledge]的数据通路. 整条流水线由若干个DataNode串联而成,数据由客户端流向PipeLine,在流水线上,假如DataNode A 比 DataNode B 更接近流水线 那么称A在B的上游(Upstream),称B在A的下游(Downstream).

hadoop架构

hadoop是一种主从架构模型 主(NameNode节点):保存文件元数据(描述文件的数据),单节点. 从(DataNode节点):保存文件Block数据,多节点. DataNode和NameNode保持心跳,提交Block列表. HdfsClient和NameNode交互元数据信息找到Block位置,然后在DataNode交互Block数据. DataNode利用服务器本地文件系统存储数据块. 原文地址:https://www.cnblogs.com/xumaomao/p/11449483.h

Hadoop架构及集群

摘要:Hadoop是一个由Apache基金会所开发的分布式基础架构,Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算,特点是:高可靠性,高扩展性,高效性,高容错性.l 原文地址:https://www.cnblogs.com/gllyun/p/12302195.html

阿里 Dubbo架构设计攻略

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.关于注册中心.协议支持.服务监控等内容,详见后面描述. 总体架构 Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubb