大数据开发之路—3
之前记录了大数据开发环境的部署过程,下面就可以介绍大数据开发工具的一些工作机制和工作原理。今天首先介绍大数据开发中大家耳熟能详的工具——Hadoop。Hadoop作为一个最早开始流行的大数据开发工具,它能够做些什么呢?当然要看大数据开发需要干什么,简单来讲大数据主要做两件事情,一是海量数据的存储,二是海量数据的运算。那么Hadoop恰好就能够做这两件事情。为了能够满足以上两种需求,Hadoop的开发者设计以下几个核心的组件:
HDFS:分布式文件系统,实现将文件分布式地存储在多台物理分散的服务器上;
MapReduce:分布式运算编程框架,实现多态机器上分布式并行计算;
YARN:分布式资源调度平台,帮助用户调度大量的分布式运算程序,实现资源统一管理。(2.0版本以后加入)
本篇博客将主要介绍HDFS的核心工作原理和机制。
HDFS整体运行机制
HDFS组成:
NameNode:负责记录和管理元数据,通常有1个。
DataNode: 负责存储文件,通常有多个。
首先,HDFS有着文件系统共同的特征:
1、有目录结构,顶层目录是: /。
2、系统中存放的就是文件。
3、系统可以提供对文件的:创建、删除、修改、查看、移动等功能。
但是,HDFS跟普通的单机文件系统之间存在一些区别:
1、单机文件系统中存放的文件,是在一台机器的操作系统中。
2、HDFS的文件系统会横跨N多的机器。
3、单机文件系统中存放的文件,是在一台机器的磁盘上。
4、HDFS文件系统中存放的文件,是落在n多机器的本地单机文件系统中(HDFS是一个基于linux本地文件系统之上的文件系统)。
HDFS的工作机制:
1、客户把一个文件存入HDFS,HDFS会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:DataNode),切块行为由客户端决定。
2、一旦文件被切块存储,那么HDFS中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:NameNode)。
3、为了保证数据的安全性,HDFS可以将每一个文件块在集群中存放多个副本,副本的数量由客户端指定。
综述:一个HDFS系统,由一台运行了NameNode的服务器,和N台运行了DataNode的服务器组成!
HDFS核心工作原理
1.NameNode元数据管理
在HDFS中,文件分块存储在不同的DataNode上,然而文件的块信息(包括块ID,副本数量,存储位置等)由NameNode负责记录和管理,这样的块信息又叫做元数据。元数据的更新管理如图所示。
- NameNode将实时的完整元数据存储在内存中,并且在磁盘中存储内存元数据在某个时间点上的镜像文件,NameNode会把引起元数据变化的客户端操作记录在edits日志文件中。
- SecondaryNameNode会定期从NameNode上下载fsimage镜像和新生成的edits日志,然后加载fsimage镜像到内存中,然后顺序解析edits文件,对内存中的元数据对象进行修改(整合),整合完成后,将内存元数据序列化成一个新的fsimage,并将这个fsimage镜像文件上传给namenode,上述过程叫做:checkpoint操作,该操作仅在第一次进行时需要下载。
2.客户端写数据到HDFS
- 1.客户端向NameNode发起写文将请求;
- 2.NameNode告知客户端可写;
- 3.客户端向NameNode请求写入一个Block块;
- 4.NameNode返回N个DataNode主机,N为客户端指定的副本数量;
- 5.客户端选择一个DataNode请求建立数据连接,该DataNode与上述N-1个DataNode请求建立数据传输链路,DataNode一一响应,最终将响应结果回传客户端;
- 6.客户端向DataNode写入第一个Block块的数据;
- 7.重复3—6步骤写入剩余Block块的数据;
- 8.数据全部写完后,告知NameNode;
- 9.NameNode确认并记录元数据。
3.客户端从HDFS中读数据
- 1.客户端向NameNode请求读数据;
- 2.NameNode返回元数据信息;
- 3.客户端从元数据中选择一个DataNode依次读取Block块;
!