`
郑云飞
  • 浏览: 813664 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入Hadoop HDFS

 
阅读更多

深入Hadoop HDFS

 

1. hdfs架构简介

1.1  hdfs架构挑战

1.2 架构简介

1.3 文件系统命名空间File System Namespace

1.4  数据复制

1.5 元数据持久化

1.6 信息交换协议 

2.  hdfs数据可访问性

2.1  web interface

2.2 shell command

<1>. hdfs架构简介 

1.1 hdfs架构挑战

hdfs和大多数现有的分布式文件系统存在很多类似特点,但是又具有自己一些特性:具有很高的容错性highly fault-tolerant,较高的数据吞吐量high throughput等。为了满足上面的特性,hdfs将不得不解决下面的一些棘手问题:

1. 硬件错误:在一个 hdfs系统中可能保存大量的服务器,那么每个服务器均存在硬件故障的可能性,那么hdfs需要保证能够自动检测到某个服务器错误,同时能够自动恢复。这个目标是hdfs架构的首要解决的问题。

2. 流式的数据访问Streaming Data Access:hdfs需要向应用程序提供流式的数据访问。

3. 大文件支持:在hdfs上存储的文件可能是在G级别或者是T级别的,这样hdfs需要能够对大文件支持。同时需要支持在一个实例中存储大量的文件(It should support tens of millions of files in a single instance)。

4. 数据一致性保证:hdfs需要能够支持“write-once-read-many access” 模型。 

面对上面的架构需求,我们来看看hdfs是如何满足上面的架构需求的。 

1.2 架构简介

hdfs采用的是master/slave模型,一个hdfs cluster包含一个NameNode和一些列的DataNode,其中NameNode充当的是master的角色,主要负责管理hdfs文件系统,接受来自客户端的请求;DataNode主要是用来存储数据文件,hdfs将一个文件分割成一个多这是多个的block,这些block可能存储在一个DataNode上或者是多个DataNode上。

基于上面的架构需求,hadoop采用了这种master/slave的架构,具体来说私有一下的几部分组成:

1. NameNode:基本上等同于Master的地位,复制控制底层文件的io操作,处理mapreduce任务等。

2. DataNode: 在slave机器上运行,负责实际的底层的文件的读写。如果客户端client程序发起了读hdfs上的文件的命令的话,那么首先将这些文件分成所谓的block,然后NameNode将告知client这些block数据是存储在那些DataNode上的,之后,client将直接和DataNode交互。

3. Secondary NameNode:该部分主要是定时对NameNode进行数据snapshots进行备份,这样尽量降低NameNode崩溃之后,导致数据的丢失。

4. JobTracker:该部分相当于在client program和hadoop之间的桥梁,在整个的hadoop系统中仅仅存在一个JobTracker的实例。 

 

5. TaskTracker:TaskTracker主要是负责的是每个具体的任务task,如下: 

 

1.3 文件系统命名空间File System Namespace

hdfs支持传统文件系统的目录结构,应用程序能够创佳目录directory,在这些目录中存储文件,创建文件,移动文件remove file,重命名文件,但是不支持硬链接和软连接。 

1.4 数据复制Data Replication

hdfs将一个发文件分割成block,然后将这些block存储到不同的DataNode中,那么如何保证如果一个DataNode死掉,保证数据的完整性,通常的技术就是进行数据的备份,hdfs同样使用的是这一策略。

我们现在考虑系统启动时,NameNode首先进入SafeMode,在这种模式下是不进行数据的备份(拷贝的)的,DataNode向NameNode发送Heartbeat和Blockreport,从而使得NameNode得到在每个DataNode上存储的数据文件,然后NameNode检查那些block的备份镜像数量还未达到所需备份数量,那么NameNode将对这些blocks。

 

1.5 元数据持久化

hdfs使用日志机制将对文件系统的操作全部存储在一个日志文件中,同时将整个文件系统信息(the mapping of blocks to files and file system properties)映射成一个FsImage文件,该文件存储在NameNode主机的本地文件系统上。同时FsImage和Log支持multiple copies,这些hdfs保证这些备份文件的一致性。

1.6 信息交换协议

上面讲到“DataNode向NameNode发送Heartbeat和Blockreport”,这其中显然涉及到协议的问题,hdfs communication协议是构建在tcp/ip协议上的。客户端通过ClientProtocol协议和NameNode交换信息,NameNode通过DataNode Procotol协议和DataNode交换信息。

<2>. 数据可访问性 

2.1 web interface

hdfs可以使用web页面来查看hdfs中文件系统中的目录http://localhost:50075:

 

2.2 shell command

1. 创建目录

xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop dfs -mkdir /foodir

 

2. 删除目录

xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop dfs -rmr/foodir

3. 上传文件

xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ ./bin/hadoop dfs -put./conf/* /foodir

4. 查看文件 

xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ bin/hadoop dfs -cat /foodir/capacity-scheduler.xml

5. 删除文件

xuqiang@ubuntu:~/hadoop/src/hadoop-0.21.0$ bin/hadoop dfs -rm /foodir/capacity-scheduler.xml

 

分享到:
评论

相关推荐

    深入HadoopHDFS高级课程.txt

    深入HadoopHDFS高级课程

    java整合spring和hadoop HDFS全部jar

    Java整合Spring和Hadoop HDFS是一项常见的任务,特别是在大数据处理和分布式存储的场景下。这里,我们将深入探讨这个主题,了解如何将这三个关键技术融合在一起。 首先,Java是编写应用程序的通用编程语言,它提供...

    python 操作 Hadoop hdfs

    本篇文章将深入探讨如何使用Python来操作Hadoop HDFS。 首先,我们需要一个Python库,如`hdfs`或`pyarrow`,它们提供了与HDFS交互的API。这里以`hdfs`库为例,你可以通过pip安装: ```bash pip install hdfs ``` ...

    深入理解Hadoop HDFS高级教程.txt打包整理.zip

    通过这个深入理解Hadoop HDFS的高级教程,读者将能全面了解HDFS的工作原理,并具备在实际环境中部署、管理和优化HDFS的能力。无论你是数据工程师、大数据分析师还是系统管理员,都能从中受益匪浅。

    《HDFS——Hadoop分布式文件系统深度实践》PDF

    《HDFS——Hadoop分布式文件系统深度实践》这本书是针对Hadoop分布式文件系统(HDFS)的详尽指南,旨在帮助读者深入理解HDFS的工作原理、设计思想以及在实际应用中的最佳实践。HDFS是Apache Hadoop项目的核心组件之...

    I001-hadoophdfs-mkdirs.7z

    通过解压并查看"I001-hadoophdfs-mkdirs"的内容,你可以深入理解HDFS的目录管理,以及如何高效地使用Hadoop的命令行工具进行文件系统的操作。这将有助于提升你在大数据领域的专业技能,更好地应对分布式存储和计算的...

    Hadoop HDFS初级部分

    ### Hadoop HDFS初级部分知识点概述 #### 一、HDFS简介 **HDFS**(Hadoop Distributed File System)是Hadoop项目的核心子项目之一,它是一个分布式文件系统,旨在为海量...这对于进一步深入学习Hadoop具有重要的意义。

    Hadoop_HDFS系统双机热备方案.pdf

    在展开有关Hadoop HDFS系统双机热备方案的知识点前,首先需要了解双机热备的基本概念,HDFS的基本架构以及如何搭建Hadoop集群。在这些基础之上,才能更深入地理解双机热备方案的设计理念及其实施步骤。 双机热备,...

    hadoop HDFS增删改

    本文将根据提供的文档信息,深入探讨 HDFS 中涉及的增、删、改操作以及相关的配置参数。 #### 一、HDFS 基础配置 HDFS 的配置主要分为两部分:`hdfs-site.xml` 和 `core-site.xml`。这两个文件中包含了 HDFS 运行...

    hadoop hdfs ftp

    标题中的“hadoop hdfs ftp”...总的来说,Hadoop HDFS与FTP的结合使用为非Hadoop环境下的应用和用户提供了便捷的数据访问途径,同时也需要对Hadoop的安全性、性能和权限管理有深入的理解,才能有效地利用这一功能。

    Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理.pdf

    《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是Hadoop技术领域的一本深入解析之作,它详尽地探讨了Hadoop的两大核心组件——HADOOP COMMON和HDFS(Hadoop Distributed File System)的...

    分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析.pdf

    7. 分布式文件系统的设计思想:通过对Hadoop和Linux的文件系统进行比较,可以更深入地理解分布式文件系统的概念及其设计思想。分布式文件系统的主要优势是可以在多台计算机上分散存储和处理数据,提高了系统的可扩展...

    Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理

    《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是IT领域的经典之作,专门探讨了Hadoop的核心组件——Hadoop Common和HDFS(Hadoop Distributed File System)的设计理念、架构及其背后的...

    Hadoop_HDFS安装和管理

    ### Hadoop HDFS安装与管理知识点详解 #### 一、Hadoop HDFS概述 Hadoop是一种分布式计算框架,主要用于...通过本文档的学习,读者可以掌握Hadoop HDFS的基本安装和管理方法,为进一步深入学习和实践打下坚实的基础。

    Hadoop-HDFS-实践教程

    Hadoop-HDFS实践教程是...总之,Hadoop-HDFS实践教程是一本非常适合大数据初学者的入门指南,通过学习这本教程,可以帮助初学者快速上手Hadoop技术,理解HDFS的原理和应用,并为今后深入研究大数据技术打下坚实的基础。

    高级软件人才培训专家-Hadoop课程资料-2-第二章 - 分布式存储 Hadoop HDFS

    ### 高级软件人才培训专家-Hadoop课程资料-2-第二章 - 分布式存储 Hadoop HDFS #### 重要知识点解析 ##### 1....对于从事大数据处理的专业人士来说,深入理解HDFS的原理和技术细节是非常重要的。

    Hadoop 技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理

    Hadoop 技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理

Global site tag (gtag.js) - Google Analytics