大二暑假学习总结03

大数据学习之Hadoop

Hadoop 核心-HDFS 

一、HDFS概述

在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在 集群上的文件系统称为分布式文件系统 。HDFS(Hadoop Distributed File System)是 Apache Hadoop 项目的一个子项目. Hadoop 非常 适于存储大型数据 (比如 TB 和 PB), 其就是使用 HDFS 作为存储系统. HDFS 使用多台计算机存 储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统.

二、HDFS应用场景

1、适合的应用场景
①存储非常大的文件:这里非常大指的是几百M、G、或者TB级别,需要高吞吐量,对延时 没有要求。

②采用流式的数据访问方式: 即一次写入、多次读取,数据集经常从数据源生成或者拷贝一 次,然后在其上做很多分析工作 。 运行于商业硬件上: Hadoop不需要特别贵的机器,可运行于普通廉价机器,可以处节约成本

③需要高容错性
④为数据存储提供所需的扩展能力

2、不适合的应用场景
①低延时的数据访问 对延时要求在毫秒级别的应用,不适合采用HDFS。HDFS是为高吞吐数 据传输设计的,因此可能牺牲延时
②大量小文件 文件的元数据保存在NameNode的内存中, 整个文件系统的文件数量会受限 于NameNode的内存大小。 经验而言,一个文件/目录/文件块一般占有150字节的元数据内存 空间。如果有100万个文件,每个文件占用1个文件块,则需要大约300M的内存。因此十亿级 别的文件数量在现有商用机器上难以支持。
③多方读写,需要任意的文件修改 HDFS采用追加(append-only)的方式写入数据。不支持 文件任意oset的修改。不支持多个写入器(writer)

三、HDFS架构

HDFS是一个 主/从(Mater/Slave)体系结构,HDFS由四部分组成,HDFS Client、NameNode、DataNode和Secondary NameNode。
1、Client:就是客户端。

·文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存 储。

·与 NameNode 交互,获取文件的位置信息。

·与 DataNode 交互,读取或者写入数据。

·Client 提供一些命令来管理 和访问HDFS,比如启动或者关闭HDFS。

2、NameNode:就是 master,它是一个主管、管理者。
·管理 HDFS 的名称空间

·管理数据块(Block)映射信息

·配置副本策略

·处理客户端读写请求。
3、DataNode:就是Slave。NameNode 下达命令,DataNode执行实际的操作。
·存储实际的数据块。

·执行数据块的读/写操作。
4、Secondary NameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
·辅助 NameNode,分担其工作量。

·定期合并 fsimage和fsedits,并推送给NameNode。

·在紧急情况下,可辅助恢复NameNode。

原文地址:https://www.cnblogs.com/ICDTAD/p/14213404.html