HDFS-简介

HDFSHadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统,是一种旨在在商品硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。但是,与其他分布式文件系统的区别很明显。HDFS具有高度的容错能力,旨在部署在低成本硬件上。HDFS提供对应用程序数据的高吞吐量访问,并且适用于具有大数据集的应用程序。HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问。HDFS最初是作为Apache Nutch Web搜索引擎项目的基础结构而构建的。HDFS是Apache Hadoop Core项目的一部分,是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。

一、特点

  • 高容错:硬件故障是正常现象,而非例外。HDFS实例可能包含数百或数千个服务器计算机,每个服务器计算机都存储文件系统数据的一部分。存在大量组件并且每个组件的故障概率都很低的事实意味着HDFS的某些组件始终无法运行。因此,检测故障并快速,自动地从故障中恢复是HDFS的核心目标。
  • 流数据访问:在HDFS上运行的应用程序需要对其数据集进行流式访问。它们不是通常在通用文件系统上运行的通用应用程序。HDFS设计用于批处理,而不是用户交互使用。重点在于数据访问的高吞吐量,而不是数据访问的低延迟。POSIX提出了许多针对HDFS的应用程序不需要的硬性要求。在一些关键领域中,POSIX语义已经被交易以提高数据吞吐率。
  • 支持大数据集:在HDFS上运行的应用程序具有大量数据集。HDFS中的典型文件大小为GB到TB。因此,HDFS已调整为支持大文件。它应提供较高的聚合数据带宽,并可以扩展到单个群集中的数百个节点。它应该在单个实例中支持数千万个文件。
  • 一次写入多次读取:HDFS应用程序需要文件一次写入多次读取访问模型。一旦创建,写入和关闭文件,除了追加和截断外,无需更改。支持将内容追加到文件末尾,但不能在任意点更新。该假设简化了数据一致性问题并实现了高吞吐量数据访问。MapReduce应用程序或Web爬网程序应用程序非常适合此模型。
  • 移动计算:如果应用程序所请求的计算在其所操作的数据附近执行,则效率会高得多。当数据集的大小巨大时,尤其如此。这样可以最大程度地减少网络拥塞,并提高系统的整体吞吐量。假设通常是将计算迁移到更靠近数据的位置,而不是将数据移动到应用程序正在运行的位置。HDFS为应用程序提供了接口,使它们自己更靠近数据所在的位置。
  • 高度可移植性:HDFS是使用Java语言构建的;任何支持Java的机器都可以运行NameNode或DataNode软件。高度可移植的Java语言的使用意味着HDFS可以部署在各种各样的机器上。
  • 运行于商业硬件上: Hadoop不需要特别贵的、reliable的(可靠的)机器,可运行于普通商用机器(可以从多家供应商采购) ,商用机器不代表低端机器。在集群中(尤其是大的集群),节点失败率是比较高的HDFS的目标是确保集群在节点失败的时候不会让用户感觉到明显的中断。

二、组成架构

HDFS采用主/从体系结构,整个HDFS集群由一个Namenode和多个Datanode构成master-worker(主从)模式。Namenode负责构建命名空间,管理文件的元数据等,Datanode负责实际存储数据和处理来自系统客户端的读写请求。

hdfsarchitecture

群集中单个NameNode的存在极大地简化了系统的体系结构。NameNode是所有HDFS元数据的仲裁器和存储库。该系统的设计方式使用户数据永远不会流过NameNode。

具体来说,HDFS由四部分组成,HDFS Client、NameNode、DataNode和Secondary NameNode。

**HDFS客户端:**就是客户端。
1、提供一些命令来管理、访问 HDFS,比如启动或者关闭HDFS。
2、与 DataNode 交互,读取或者写入数据;读取时,要与 NameNode 交互,获取文件的位置信息;写入 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。

**NameNode:**即Master,
1、管理 HDFS 的名称空间。
2、管理数据块(Block)映射信息
3、配置副本策略
4、处理客户端读写请求。

**DataNode:**就是Slave。NameNode 下达命令,DataNode 执行实际的操作。
1、存储实际的数据块。
2、执行数据块的读/写操作。

**Secondary NameNode:**并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
1、辅助 NameNode,分担其工作量。
2、定期合并 fsimage和fsedits,并推送给NameNode。
3、在紧急情况下,可辅助恢复 NameNode。

三、文件系统命名空间

HDFS支持传统的分层文件组织。用户或应用程序可以创建目录并将文件存储在这些目录中。文件系统名称空间层次结构与大多数其他现有文件系统相似。可以创建和删除文件,将文件从一个目录移动到另一个目录或重命名文件。HDFS支持用户配额和访问权限。HDFS不支持硬链接或软链接。但是,HDFS体系结构并不排除实现这些功能。

尽管HDFS遵循FileSystem的命名约定,但某些路径和名称(例如/.reserved.snapshot)被保留。功能,如透明加密和快照使用预约路径。

NameNode维护文件系统名称空间。对文件系统名称空间或其属性的任何更改均由NameNode记录。应用程序可以指定应由HDFS维护的文件副本的数量。文件的副本数称为该文件的复制因子。此信息由NameNode存储。

四、数据复制

HDFS旨在在大型群集中的计算机之间可靠地存储非常大的文件。它将每个文件存储为一系列块。复制文件的块是为了容错。块大小和复制因子是每个文件可配置的。

文件中除最后一个块外的所有块都具有相同的大小,而在添加了对可变长度块的支持后,用户可以在不填充最后一个块的情况下开始新的块,而不用配置的块大小。

应用程序可以指定文件的副本数。复制因子可以在文件创建时指定,以后可以更改。HDFS中的文件只能写入一次(追加和截断除外),并且在任何时候都只能具有一个写入器。

NameNode做出有关块复制的所有决定。它定期从群集中的每个DataNode接收心跳信号和Blockreport。收到心跳信号表示DataNode正常运行。Blockreport包含DataNode上所有块的列表。

HDFS数据节点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

awk教程入门与实例练习(二)

在这篇 awk 简介的续集中,Daniel Robbins 继续探索 awk(一种很棒但有怪异名称的语言)。Daniel 将演示如何处理多行记录、使用循环结构,以及创建并使用 awk 数组。阅读完本文后,您将精通许多 awk 的功能,而且…

HDFS-配置项

一、core-site.xml与core-default.xml core-default.xml与core-site.xml的功能是一样的&#xff0c;如果在core-site.xml里没有配置的属性&#xff0c;则会自动会获取core-default.xml里的相同属性的值 <configuration><property><!-- 这个属性用来指定namenod…

awk教程入门与实例练习(三)

在 awk 系列的这篇总结中&#xff0c;Daniel 向您介绍 awk 重要的字符串函数&#xff0c;以及演示了如何从头开始编写完整的支票簿结算程序。在这个过程中&#xff0c;您将学习如何编写自己的函数&#xff0c;并使用 awk 的多维数组。学完本文之后&#xff0c;您将掌握更多 awk…

HDFS-常用命令

1. -help&#xff1a;显示帮助信息 hadoop fs -help rmshel2. -ls&#xff1a;显示目录信息 hadoop fs -ls /3. -mkdir&#xff1a;在HDFS上创建目录 hadoop fs -mkdir -p /user/ha4. -moveFromLocal&#xff1a;从本地剪切粘贴到HDFS hadoop fs -moveFromLocal ~/test.txt…

如何关闭WINDOWS2003 DEP数据保护功能

近来很多朋友和客户都使用了WINDOWS2003来架设自己的GAME SERVER,但有很多朋友反映说,不如WINDOWS2000好,原因不是稳定,而是成功率高,和简单.但我个人觉得WINDOWS2003还是不错的系统,如果朋友们都不用这个系统,而用WINDOWS2000 有点不值得了.我就开始找寻这样的问题.我对GAME 不…

JDK源码解析之 java.lang.Thread

位于java.lang包下的Thread类是非常重要的线程类&#xff0c;它实现了Runnable接口&#xff0c;今天我们来学习一下Thread类&#xff0c;在学习Thread类之前&#xff0c;先介绍与线程相关知识&#xff1a;线程的几种状态、上下文切换&#xff0c;然后接着介绍Thread类中的方法的…

TASKLIST

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]参数列表:/S system 指定连接到的远程系统。/U [domain/]user 指定使用哪个用户执行这个命令。/P [password] 为指定的用户指定密码。/SVC 显示每个进程中的服务…

JDK源码解析之 java.lang.ThreadLocal

此类提供线程局部变量。这些变量与普通变量不同&#xff0c;每个访问一个线程&#xff08;通过其get或set方法&#xff09;的线程 都有其自己的&#xff0c;独立初始化的变量副本。 ThreadLocal实例通常是希望将状态与线程关联的类中的私有静态字段&#xff08;例如&#xff0c…

华尔街顶级大师胡立阳名言

1.不要听“亲朋好友”的话&#xff0c;他们只会让你成为“平凡人”。 2.不要只会“用功读书”&#xff0c;重要的是“要读对书”。  3&#xff0e;不要只是“努力工作”&#xff0c;重要的是“做对工作”。   4.不要指示结交“志趣相投”的朋友&#xff0c;否则你永远只看到…

JDK源码解析之 Java.lang.Enum

Enum是一个特殊的类. 我们不能以class Xxx extends Enum的方式手动继承, 必须写成enum Xxx的形式; 然而这段枚举类的定义在编译之后又变回了class Xxx extends Enum. 一、类定义 public abstract class Enum<E extends Enum<E>>implements Comparable<E>, …

Linux下的一些简单网络配置命令介绍

1、 ifconfig可以使用ifconfig命令来配置并查看网络接口的配置情况。例如&#xff1a;&#xff08;1&#xff09; 配置eth0的IP地址&#xff0c; 同时激活该设备。#ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up&#xff08;2&#xff09; 配置eth0别名设备eth0:1的IP地…

JDK源码解析之 java.lang.Throwable

在 Java 中&#xff0c;所有的异常都有一个共同的祖先 Throwable&#xff08;可抛出&#xff09;。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。 一、类定义 public class Throwable implements Serializable {}Serializable&#xff1a;可…

JDK源码解析之 java.lang.Error

java.lang.Error 错误。是所有错误的基类&#xff0c;用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。 一、源码部分 //继承了java.lang.Throwable public class Error extends Throwable {//适用于java序列化机制,过判断类的serialVersionU…

linux命令之有关网络的操作命令

1&#xff0e;hostname 命令&#xff08;1&#xff09;一般格式&#xff1a;hostname [选项] [主机名]&#xff08;2&#xff09;说明&#xff1a;显示或设置系统的主机名&#xff1b;如果无任何选项和主机名&#xff0c;则用于显示系统的主机名。&#xff08;3&#xff09…

JDK源码解析之 java.lang.Exception

异常。是所有异常的基类&#xff0c;用于标识一般的程序运行问题。这些问题通常描述一些会被应用程序捕获的反常情况。 一、源码部分 //继承了java.lang.Throwable public class Exception extends Throwable {//适用于java序列化机制,过判断类的serialVersionUID来验证的版本…

linux命令之有关关机和查看系统信息的命令

shutdown 正常关机 reboot 重启计算机 ps 查看目前程序执行的情况top 查看目前程序执行的情景和内存使用情况kill 终止一个进程date 更改或查看目前时间 一&#xff0e;查看系统的进程 要管理进程&#xff0c;首先要知…

HDFS-文件读写过程

一、文件读取 Client向NameNode发起RPC请求&#xff0c;来确定请求文件block所在的位置&#xff1b;NameNode会视情况返回文件的部分或者全部block列表&#xff0c;对于每个block&#xff0c;NameNode 都会返回含有该 block 副本的 DataNode 地址&#xff1b; 这些返回的 DN 地…

linux命令复习之有关磁盘空间的命令

1&#xff0e;mount 命令&#xff08;1&#xff09;一般格式&#xff1a;mount 文件系统类型 [选项] 挂接设备&#xff08;2&#xff09;说明&#xff1a;将某个文件系统挂载到某个目录上。当这个命令执行成功后&#xff0c;直到使用 umount 将这个文件系统移除为止。&…

HDFS-常用API操作

一、Maven <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version> </dependency> <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>…

linux命令之-管理文件和目录的命令

一. 创建和删除目录的命令 1&#xff0e;mkdir 命令 &#xff08;1&#xff09;一般格式&#xff1a;mkdir [选项] 目录名 &#xff08;2&#xff09;说明&#xff1a;该命令创建由目录名命名的目录。 &#xff08;3&#xff09;举例1&#xff1a; 在目录 /usr/fedora 下建…