Hadoop中HDFS工作原理
转自:http://blog.csdn.net/sdlyjzh/article/details/28876385
Hadoop其实并不是一个产品,而是一些独立模块的组合。主要有分布式文件系统HDFS和大型分布式数据处理库MapReduce。由于目前主要用到HDFS,所以这里看一下它的工作原理,以及相应的介绍下配置。
什么是HDFS?Hadoop Distributed File System,字面意思,Hadoop分布式文件系统,通俗的讲,就是可以将不同节点的设备用来存储。它分为两个部分:NameNode和DateNode,NameNode相当于一个领导,它管理集群内的DataNode,当客户发送请求过来后,NameNode会根据情况指定存储到哪些DataNode上,而其本身自己并不存储真实的数据。那NameNode怎么知道集群内DataNode的信息呢?DataNode发送心跳信息给NameNode。
下面工作原理我就直接copy了。。
工作原理
写操作:

有一个文件FileA,100M大小。Client将FileA写入到HDFS上。
HDFS按默认配置。
HDFS分布在三个机架上Rack1,Rack2,Rack3。
a. Client将FileA按64M分块。分成两块,block1和Block2;
b. Client向nameNode发送写数据请求,如图蓝色虚线①------>。
c. NameNode节点,记录block信息。并返回可用的DataNode,如粉色虚线②--------->。
Block1: host2,host1,host3
Block2: host7,host8,host4
原理:
NameNode具有RackAware机架感知功能,这个可以配置。
若client为DataNode节点,那存储block时,规则为:副本1,同client的节点上;副本2,不同机架节点上;副本3,同第二个副本机架的另一个节点上;其他副本随机挑选。
若client不为DataNode节点,那存储block时,规则为:副本1,随机选择一个节点上;副本2,不同副本1,机架上;副本3,同副本2相同的另一个节点上;其他副本随机挑选。
d. client向DataNode发送block1;发送过程是以流式写入。
流式写入过程,
1>将64M的block1按64k的package划分;
2>然后将第一个package发送给host2;
3>host2接收完后,将第一个package发送给host1,同时client想host2发送第二个package;
4>host1接收完第一个package后,发送给host3,同时接收host2发来的第二个package。
5>以此类推,如图红线实线所示,直到将block1发送完毕。
6>host2,host1,host3向NameNode,host2向Client发送通知,说“消息发送完了”。如图粉红颜色实线所示。
7>client收到host2发来的消息后,向namenode发送消息,说我写完了。这样就真完成了。如图黄色粗实线
8>发送完block1后,再向host7,host8,host4发送block2,如图蓝色实线所示。
9>发送完block2后,host7,host8,host4向NameNode,host7向Client发送通知,如图浅绿色实线所示。
10>client向NameNode发送消息,说我写完了,如图黄色粗实线。。。这样就完毕了。
分析,通过写过程,我们可以了解到:
①写1T文件,我们需要3T的存储,3T的网络流量贷款。
②在执行读或写的过程中,NameNode和DataNode通过HeartBeat进行保存通信,确定DataNode活着。如果发现DataNode死掉了,就将死掉的DataNode上的数据,放到其他节点去。读取时,要读其他节点去。
③挂掉一个节点,没关系,还有其他节点可以备份;甚至,挂掉某一个机架,也没关系;其他机架上,也有备份。
OK,复制到此结束,我们结合配置文件具体了解一下:
core-site.xml,核心配置文件
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.10.129.188:7001</value> (注:这个属性值是hdfs的NameNode的节点地址和端口号,需要根据业务需求而变更)
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/cdh/cdh/hadoop-2.0.0-cdh4.2.1/tmp</value>(注:这个属性值请根据实际情况修改,这里需要预先手动在/home/cdh/cdh/hadoop-2.0.0-cdh4.2.1路径下创建tmp文件夹。secondarynamenode的目录系统默认为${hadoop.tmp.dir}/dfs/namesecondary,如果没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoop-cdh。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。)
<description>A base for other temporary directories.</description>
</property>
hdfs-site.xml
修改为:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hadoop-2.0.0/workspace/hadoop_space/hadoop23/dfs/name</value>
(这个是配置namenode目录的地方)
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/hadoop-2.0.0/workspace/hadoop_space/hadoop23/dfs/data</value>
(这个是配置datanode目录的地方,也就是datanode存储文件的路径)
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
(这个是配置备份因子)
<value>1</value>
</property>
<property>
<name>dfs.permission</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>10.10.129.186:50090</value>(注:配置secondarynamenode的IP和端口号)
<description>The secondary namenode http server address and port.</description>
</property>
</configuration>
Hadoop中HDFS工作原理的更多相关文章
- HADOOP1.X中HDFS工作原理
转载自:http://www.daniubiji.cn/archives/596 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据googl ...
- 一图看懂hadoop分布式文件存储系统HDFS工作原理
一图看懂hadoop分布式文件存储系统HDFS工作原理
- hadoop中HDFS的NameNode原理
1. hadoop中HDFS的NameNode原理 1.1. 组成 包括HDFS(分布式文件系统),YARN(分布式资源调度系统),MapReduce(分布式计算系统),等等. 1.2. HDFS架构 ...
- Hadoop 4、Hadoop MapReduce的工作原理
一.MapReduce的概念 MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框就是mapreduce,两者缺一不可,也就是 ...
- Hadoop 中HDFS、MapReduce体系结构
在网络环境方面,作为分布式系统,Hadoop基于TCP/IP进行节点间的通信和传输. 在数据传输方面,广泛应用HTTP实现. 在监控.通知方面,Hadoop等分布式大数据软件则广泛使用异步消息队列等机 ...
- Spring MVC中DispatcherServlet工作原理探究
转:http://blog.csdn.net/zhouyuqwert/article/details/6853730 下面类图将主要的类及方法抽离出来,以便查看方便,根据类的结构来说明整个请求是如何工 ...
- Java 8 中 ConcurrentHashMap工作原理的要点分析
简介: 本文主要介绍Java8中的并发容器ConcurrentHashMap的工作原理,和其它文章不同的是,本文重点分析了对不同线程的各类并发操作如get,put,remove之间是如何同步的,以及这 ...
- Java8 中 ConcurrentHashMap工作原理的要点分析
简介: 本文主要介绍Java8中的并发容器ConcurrentHashMap的工作原理,和其它文章不同的是,本文重点分析了不同线程的各类并发操作如get,put,remove之间是如何同步的,以及这些 ...
- Hadoop的RPC工作原理
RPC远程过程调用: Hadoop的远程过程调用(Remote Procedure Call,RPC)是Hadoop中核心通信机制,RPC主要通过所有Hadoop的组件元数据交换,如MapReduce ...
随机推荐
- nginx-rtmp流媒体服务器搭建【转】
nginx-rtmp https://github.com/pengqiuyuan/nginx-rtmp nginx-rtmp 流媒体服务器的搭建(采集桌面,手机直播) 在线Demo,直播自己的pc机 ...
- 【转】TCP(协议号6)的方方面面
转:http://blog.sina.com.cn/s/blog_6002b97001018fxh.html 第一:TCP连接的建立(也就是所谓的三次握手)过程. 第一次握手:建立连接时,客户端发送s ...
- mysql数据库安装、启动及权限设置
1. 安装需安装mysql客户端和服务器端. Centos下,可用命令:yum install mysql安装mysql客户端:使用命令:yum install mysql-server安装mysql ...
- 聊聊高并发(二十)解析java.util.concurrent各个组件(二) 12个原子变量相关类
这篇说说java.util.concurrent.atomic包里的类,总共12个.网上有非常多文章解析这几个类.这里挑些重点说说. watermark/2/text/aHR0cDovL2Jsb2cu ...
- Unity WP8开发环境
Unity WP8开发环境 VS2012旗舰版: 安装WP SDK8.0出错提示: 根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内 解决办法: 方法一:把操作系统的时间日期调整到 ...
- a标签添加点击事件
a标签添加点击事件 CreateTime--2017年8月8日09:11:34 Author:Marydon 一.基础用法 方式一:(不推荐使用) <a href="javascr ...
- 【转帖】阿里金融云:分布式服务注册中心(DSR)
https://www.cloud.alipay.com/docs/middleware/register/index.html 分布式服务注册中心(DSR) 分布式服务注册中心简介 服务注册中心 ( ...
- Asp.Net Core + SignalR 实现实时通信
一.搭建项目 1.创建一个ASP.NET Core MVC 项目 2.nuget 下载和安装 MicroSoft.AspNetCore.SignalR vs提示版本冲突 这时我们选择低版本即可 二.S ...
- python --批量重命名文件名
# -*- coding: utf-8 -*- import os path = "d:\\curl\data\\" for file in os.listdir(path): p ...
- 使用命令行设置树莓派的wifi网络
假设你没有登录到经常使用的图形用户界面.这样的方法就适合用来设置树莓派的wifi.尤其是在你没有屏幕或者有线网络,仅使用串口控制线的时候.另外,这样的方法也不须要额外的软件,全部须要的东西都已经包括进 ...