Hadoop——HDFS的构架
在使用一个工具之前,应该先对它的机制、组成等有深入的了解,以后才会更好的使用它。下面来介绍一下什么是HDFS,以及他的构架是什么样的。
1.什么是HDFS?
Hadoop主要是用于进行大数据处理,那么如何有效的存储大规模的数据呢?显然,集中式的物理服务器保存数据是不现实的,其容量、数据传输速度等都会成为瓶颈。那么要实现海量数据的存储,势必要使用十几台、几百台甚至是更多的分布式服务节点。那么,为了统一管理这些节点上存储的数据,必须要使用一种特殊的文件系统——分布式文件系统。HDFS(Hadoop Distributed File System)就是Hadoop提供的一个分布式文件系统。
HDFS具有大规模数据分布式存储能力、高并发访问能力、强大的容错能力、顺序式文件访问、简单的一致性模型(一次写多次读)、数据块存储模式等优点。
2.HDFS的基本框架
2.1 Architecture
HDFS一Master-Slave模式运行,主要由两类节点:一个NameNode(即Master)和多个DataNode(即Slave),其框架图如下图所示:

2.2 NameNode、DataNode、JobTracker和TaskTracker
- NameNode是一个主服务器,用来管理整个文件系统的命名空间和元数据,以及处理来自外界的文件访问请求。
 
NameNode保存了文件系统的三种元数据:
- 命名空间:即整个分布式文件系统的目录结构;
 - 数据块与文件名的映射表;
 - 每个数据块副本的位置信息,每一个数据块默认有3个副本。
 
2. DataNode。HDFS对外提供了命名空间,让用户的数据可以存储在文件中,但是在内部,文件可能被分成若干个数据块,DataNode用来实际存储和管理文件的数据块。
3. JobTracker对应于NameNode,TaskTracker对应于DataNode(如上图所示),NameNode与Datanode是针对数据存储而言的,JobTracker与TaskTracker是针对与MapReduce的执行而言的。
2.3 HDFS的基本文件访问过程
- 用户的应用程序通过HDFS的哭护短程序将文件名发送至NameNode;
 - NameNode接收到文件名之后,在HDFS目录中检索文件名对应的数据块,在根据数据块信息找到保存数据块的DataNode地址,将这些地址送回客户端;
 - 客户端接收到这些DataNode地址之后,与这些DataNode并行的进行数据传输操作,同时将操作结果的相关日志提交到NameNode。
 
2.4 MapReduce的执行过程
- JobClient会在客户端通过JobClient类将对应已经配置好的参数打包成Jar,存储到HDFS,并把路径提交到JobTracker,然后由JobTracker创建每一个Task(即Map Task和Reduce Task),并将它们分发到各个TaskTracker服务中执行;
 - JobTracker是一个master服务,软件启动后JobTracker接收Job,负责调度Job的每一个子任务task,并监控它们,如果发现有失败的Task就重新运行它;
 - TaskTracker是运行在多个节点上的Slave服务,运行在HDFS的DataNode节点上,主动与JobTracker通信,接收作业,并负责执行每一个任务。
 
2.5 SecondaryNameNode
Hadoop中使用SecondaryNameNode来备份NameNode备份NameNode的元数据,以便在NameNode失效时能从SecondaryNameNode恢复出NameNode上的元数据,它充当NameNode的一个副本,它本身并不处理任何请求,周期性保存NameNode的元数据
参考链接:
[1]. hadoop JobTracker和TaskTracker——http://wz102.blog.51cto.com/3588520/1327972
[2]. HDFS学习(三)—NameNode and DataNode——http://shitouer.cn/2012/12/hdfs-namenode-datanode/
[3]. 深入理解大数据-大数据处理与编程实践
Hadoop——HDFS的构架的更多相关文章
- Hadoop HDFS 用户指南
		
This document is a starting point for users working with Hadoop Distributed File System (HDFS) eithe ...
 - Hadoop HDFS负载均衡
		
Hadoop HDFS负载均衡 转载请注明出处:http://www.cnblogs.com/BYRans/ Hadoop HDFS Hadoop 分布式文件系统(Hadoop Distributed ...
 - Hive:org.apache.hadoop.hdfs.protocol.NSQuotaExceededException: The NameSpace quota (directories and files) of directory /mydir is exceeded: quota=100000 file count=100001
		
集群中遇到了文件个数超出限制的错误: 0)昨天晚上spark 任务突然抛出了异常:org.apache.hadoop.hdfs.protocol.NSQuotaExceededException: T ...
 - Hadoop程序运行中的Error(1)-Error: org.apache.hadoop.hdfs.BlockMissingException
		
15/03/18 09:59:21 INFO mapreduce.Job: Task Id : attempt_1426641074924_0002_m_000000_2, Status : FAIL ...
 - Hadoop HDFS编程 API入门系列之HDFS_HA(五)
		
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs3; import java.io.FileInputStream;import ...
 - Hadoop HDFS编程 API入门系列之简单综合版本1(四)
		
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs4; import java.io.IOException; import ja ...
 - [转]hadoop hdfs常用命令
		
FROM : http://www.2cto.com/database/201303/198460.html hadoop hdfs常用命令 hadoop常用命令: hadoop fs 查看H ...
 - org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hive/warehouse/page_view. Name node is in safe mode
		
FAILED: Error in metadata: MetaException(message:Got exception: org.apache.hadoop.ipc.RemoteExceptio ...
 - Hadoop HDFS文件常用操作及注意事项
		
Hadoop HDFS文件常用操作及注意事项 1.Copy a file from the local file system to HDFS The srcFile variable needs t ...
 
随机推荐
- 【SQLSERVER】从数据库文件mdf中拆分ndf的方法和利弊
			
一.数据文件格式 SQLSERVER中,数据库的文件后缀有3种:mdf.ndf.ldf. 如下图所示,DW_TEST.mdf.DW_TEST_HIS.ndf.DW_TEST.ldf 属于同一个数据库T ...
 - VINS(九)Ceres Solver优化(未完待续)
			
使用Ceres Solver库处理后端优化问题,首先系统的优化函数为
 - Android官方开发文档Training系列课程中文版:目录
			
Android官方开发文档Training系列课程中文版:目录 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻译成英文,供国内的开发者使用,尤其是入门开 ...
 - 数据库Mysql的学习(八)-储存过程和事务和导入导出
			
储存过程 DELIMITER // CREATE PROCEDURE pro1() BEGIN SELECT book_id,book_name,category FROM bookinfo t1 J ...
 - 加密SecurityHelper
			
接下来给大家分享一下我用的加密helper,现在只用的md5加密的方法,网上很多方法找到的时候加密完了会变成乱码,这样对于密码这种字段保存的时候就会出错.其实只需要把加密完的byte字节转化成16位就 ...
 - vmware centOS上网配置笔记
			
⦁ 修改/etc/sysconfig/network-scripts/ifcfg-eth0文件 (首先查看本机vmware 虚拟网络编辑器中的网关) 重启网络 使用命令:service net ...
 - java学习过程小问题
			
一:基本的需要注意点(基础语句); package my; public class hello { public static void main(String[] args) { // TODO ...
 - DAY7敏捷冲刺
			
站立式会议 工作安排 (1)服务器配置 服务器端项目结构调整 (2)数据库配置 单词学习记录+用户信息 (3)客户端 客户端项目结构调整,代码功能分离 燃尽图 燃尽图有误,已重新修改,先贴卡片的界面, ...
 - Java中I/O流之缓冲流
			
Java 中的缓冲流: 1. 缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法(带缓冲区的,显著减少对 IO 的读写次数,保护硬盘). 2. ...
 - 数据库索引(结合B-树和B+树)
			
数据库索引,是数据库管理系统中一个排序的数据结构以协助快速查询.更新数据库表中数据.索引的实现通常使用B树及其变种B+树. 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种 ...