`
ztianlong
  • 浏览: 66906 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hadoop学习笔记<三>----HDFS

 
阅读更多



 Hadoop Distributed File System
,简称HDFS,是一个分布式文件系统。

1.       特性:

1.1.    大数据集

运行在HDFS上的应用具有很大的数据集。可以是从GBTB级的。

1.2.    高容错性

hadoop集群环境下,每份数据都被保存在多个结点里边。一个结点的不可用不会导致该结点存储的数据不可用。

1.3.    高吞吐量

跑在Hdoop上的应用,更多的是做批处理,HDFS的设计中更多的考虑到了数据批处理,而不是用户交互处理。比之数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。

1.4.    简单一致的模型

采用了"一次写入,多次读取"的模型。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。Map/Reduce应用或者网络爬虫应用都非常适合这个模型。目前还有计划在将来扩充这个模型,使之支持文件的附加写操作。

1.5.    可移植性

HDFS在设计的时候就考虑到平台的可移植性。这种特性方便了HDFS作为大规模数据应用平台的推广。 (可以这样理解:基于java,并且在HDFS是在本地FileSystem之上抽象出来的文件系统)

1.6.    移动计算比移动数据更高效

一个应用请求的计算,离它操作的数据越近就越高效,在数据达到海量级别的时候更是如此。因为这样就能降低网络阻塞的影响,提高系统数据的吞吐量。将计算移动到数据附近,比之将数据移动到应用所在显然更好。HDFS为应用提供了将它们自己移动到数据附近的接口。

一个简单的例子:程序X在计算机A上,数据在计算机A,BC上。普通的做法是在A上运行程序X,读取ABC上的数据,然后进行计算(或者是边读取边计算)。hadoop的做法是:将程序X同时也发送到BC上,ABC同时读取本地计算机上的数据进行计算。得出结果之后再进行汇总(当然这里只是通俗的举了个例子,实际上hadoop处理数据更为复杂)。这样就避免了在网络上传输大量数据导致的等待和BC计算能力的浪费。

 

2.       概念:

nameNode dataNode

HDFS采用了master/slave架构。HDFS由一个nameNode和若干个dataNode组成。

2.1 nameNode

nameNode类似于一个仓库管理员,负责记录数据存储在哪些仓库(dataNode)的哪些地方,同时也负责和客户端(Client)对文件的访问。nameNode作为一个中心服务器。因此当nameNode出现故障时是比较致命的。为了防止出现恶劣的后果,通常集群环境下还有一个Secondary NameNode 作为备份。

2.2 dataNode

dataNode负责文件的存储(可以理解为仓库)。

一个文件被分为多个文件块存储在一组dataNode里边。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。

3.       文件流

3.1 读文件

客户端(client)FileSystemopen()函数打开文件,DistributedFileSystemRPC调用元数据节点,得到文件的数据块信息。对于每一个数据块,元数据节点返回保存数据块的数据节点的地址。DistributedFileSystem返回FSDataInputStream给客户端,用来读取数据。客户端调用streamread()函数开始读取数据。DFSInputStream连接保存此文件第一个数据块的最近的数据节点。Data从数据节点读到客户端(client),当此数据块读取完毕时,DFSInputStream关闭和此数据节点的连接,然后连接此文件下一个数据块的最近的数据节点。当客户端读取完毕数据的时候,调用FSDataInputStreamclose函数。

整个过程就是如图所示


3.2 写文件

客户端调用create()来创建文件,DistributedFileSystemRPC调用元数据节点,在文件系统的命名空间中创建一个新的文件。元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。DistributedFileSystem返回DFSOutputStream,客户端用于写数据。客户端开始写入数据,DFSOutputStream将数据分成块,写入data queueData queueData Streamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3)。分配的数据节点放在一个pipeline里。Data Streamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。DFSOutputStream为发出去的数据块保存了ack queue,等待pipeline中的数据节点告知数据已经写入成功。如果数据节点在写入的过程中失败:关闭pipeline,将ack queue中的数据块放入data queue的开始。

 

 

整个过程如图所示:



 
 

4.       使用命令行操作HDFS

 

1.添加目录  hadoop  fs  -mkdir /abc

  就在HDFS下创建了一个abc的目录

2.列出HDFS根目录下的文件  hadoop fs -ls  /

  列出根目录下的所有文件 hadoop fs -ls

3.复制文件   hadoop  fs  -put  /tianlong/test   /abc

4.查看文件   hadoop  fs  -cat  /abc/test

5.HDFS上取文件 hadoop  fs  -get  /abc/test  ~/test.txt  HDFS里的test文件 取回 当前用户目录的test.txt

 

5.       编程操作HDFS

下边简单介绍几个常用的API,具体的例子网上有很多,就不重复贴了。

FileSystem Hadoop文件系统通过Hadoop Path 对象来代表文件,是一个通用的文件系统API

 

 Hadoop中关于文件操作类基本上全部是在"org.apache.hadoop.fs"包中,这些API能够支持的操作包含:打开文件,读写文件,删除文件等。

 

Hadoop类库中最终面向用户提供的接口类是FileSystem,该类是个抽象类,只能通过来类的get方法得到具体类。get方法存在几个重载版本,常用的是这个:

static FileSystem get(Configuration conf) throws IOException;

static FileSystem get(URI uri, Configuration conf) throws IOException;

或者从Path对象中获得FileSystem实例

        Path dst = new Path("hdfs://192.168.0.111:9000/home");

         // 得到dstFileSystem.

         FileSystem hdfs = dst.getFileSystem(conf);

 

 

  该类封装了几乎所有的文件操作,例如mkdirdelete等。综上基本上可以得出操作文件的程序库框架:

 

operator()

{

    得到Configuration对象

    得到FileSystem对象

    进行文件操作

}

  • 大小: 16.7 KB
  • 大小: 15.6 KB
分享到:
评论

相关推荐

    大数据开发中的Sqoop学习笔记(自己整理版).pdf

    这里 `&lt;hostname&gt;` 是数据库服务器地址,`&lt;port&gt;` 是数据库监听端口,`&lt;database&gt;` 是数据库名,`&lt;tablename&gt;` 是表名,`&lt;username&gt;` 和 `&lt;password&gt;` 是数据库连接的凭证,`&lt;hdfs_path&gt;` 指定HDFS上的目标存储位置...

    初识hadoop之hadoop 安装

    提供的文档`hadoop学习笔记.doc`可能包含了Hadoop的基础概念、操作指南、实战案例等,建议仔细阅读以深入了解Hadoop的用法和原理。 至此,你已经成功安装了Hadoop,并且具备了运行一个基本Hadoop集群的基础。接...

    最新Hadoop学习笔记

    **Hadoop学习笔记详解** Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储海量数据。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,两者构成了大数据处理的基础...

    Hadoop-HDFS-Shell-学习资料及文档、Java代码

    内容概要: 架构、流程、机制、原理、环境、数据...HadoopHDFS-JavaRPC操作代码,含服务端和客户端代码; hadoop生态现状、介绍、部署; hadoop2.4.1伪分布式搭建; 分布式文件系统; 复安装过程详细步骤; hdfs笔记;

    传智黑马赵星老师hadoop七天课程资料笔记-第一天(全)

    【标题】"传智黑马赵星老师hadoop七天课程资料笔记-第一天(全)" 提供的是一份关于Hadoop的全面学习资料,主要聚焦在Hadoop的第一天课程内容。这个资源包涵盖了从基础概念到实际操作的多个方面,旨在帮助初学者快速...

    VMware下完全分布式Hadoop集群安装笔记

    在`/usr/Hadoop_installs/hadoop-1.1.2/conf/hdfs-site.xml`中设置HDFS的数据块副本数量: ```xml &lt;configuration&gt; &lt;property&gt; &lt;name&gt;dfs.replication&lt;/name&gt; &lt;value&gt;1&lt;/value&gt; &lt;/property&gt; &lt;/configuration&gt; `...

    本地调试所需hadoop包,hadoop-common-bin-master,winutils.exe

    解决这些问题通常需要对Hadoop的配置机制有深入理解,包括core-site.xml、hdfs-site.xml、yarn-site.xml和mapred-site.xml等配置文件的设置。 总的来说,这个压缩包提供了一个在Windows环境下本地调试Hadoop的起点...

    传智黑马赵星老师hadoop七天课程资料笔记-第七天(全)

    【标题】"传智黑马赵星老师hadoop七天课程资料笔记-第七天(全)" 涵盖了Hadoop技术栈的重要知识点,这是一份关于Hadoop学习的详尽资料,特别关注了课程的最后一天内容。在Hadoop的学习过程中,第七天通常会涉及到系统...

    HADOOP学习笔记

    【HADOOP学习笔记】 Hadoop是Apache基金会开发的一个开源分布式计算框架,是云计算领域的重要组成部分,尤其在大数据处理方面有着广泛的应用。本学习笔记将深入探讨Hadoop的核心组件、架构以及如何搭建云计算平台。...

    Hadoop学习笔记.pdf

    Hadoop的源码项目结构主要包括hadoop-common-project、hadoop-hdfs-project、hadoop-mapreduce-project、hadoop-yarn-project等,每个项目下又有多个子项目,包含了Hadoop运行所需的各个组件和客户端等。 在实际...

    hadoop学习笔记.rar

    三、Hadoop学习笔记之三:用MRUnit做单元测试 MRUnit是针对MapReduce任务的单元测试框架,它允许开发者对MapReduce作业进行单元测试,确保每个Mapper和Reducer的功能正确性。通过MRUnit,可以在不实际运行Hadoop集群...

    3.Hadoop学习笔记.pdf

    1. HDFS(Hadoop Distributed File System):这是一个高度容错的系统,设计用来运行在廉价的硬件上。HDFS具有高吞吐量的特点,适合于有大量数据的应用程序。HDFS将数据存储为一系列的块,这些块默认大小为128MB,...

    Hadoop学习笔记整理

    "Hadoop学习笔记整理" 本篇笔记对Hadoop进行了系统的介绍和总结,从大数据的基本流程到Hadoop的发展史、特性、集群整体概述、配置文件、HDFS分布式文件系统等方面都进行了详细的讲解。 一、大数据分析的基本流程 ...

    传智黑马赵星老师hadoop七天课程资料笔记-第二天(全)

    标题和描述中提到的是“传智黑马赵星老师hadoop七天课程资料笔记-第二天(全)”,这表明这是一个关于Hadoop技术的深度学习资源,主要聚焦于赵星老师的Hadoop教学课程中的第二天内容。通常,这样的课程会涵盖Hadoop的...

    传智黑马赵星老师hadoop七天课程资料笔记-第三天(全)

    【描述】这部分内容是赵星老师在传智黑马的Hadoop七天课程中的第三天教学资料,包含了丰富的学习材料,如PPT、文本笔记、示例数据和工作流程详解,旨在通过实例帮助学员消化吸收Hadoop的核心概念和技术。 【标签】...

    Hadoop学习笔记

    这个“Hadoop学习笔记”涵盖了Hadoop生态系统中的核心组件,包括HDFS(Hadoop分布式文件系统)、HBase(一个分布式、列式存储的数据库)、Hive(数据仓库工具)以及Spark(一个快速、通用且可扩展的数据处理引擎)。...

    传智黑马赵星老师hadoop七天课程资料笔记-第四天(全)

    在“传智黑马赵星老师hadoop七天课程资料笔记-第四天(全)”的学习中,我们深入探讨了Hadoop这一分布式计算框架的关键概念和技术。Hadoop是Apache软件基金会的一个开源项目,它设计用于处理和存储海量数据,通过...

    大数据生态圈学习.zip

    - elasticsearch开始使用|├── qs-hadoop-file -- 学习相关的资料文件、以及遇到的坑点笔记|├── qs-hadoop-flink -- 分布式数据流处理和批量数据处理框架 flink 初次见面|├── qs-hadoop-hdfs -- hadoop核心...

    个人笔记_hadoop-hdfs架构详解.docx

    理解HDFS的架构和工作原理对于深入学习Hadoop和大数据处理至关重要,它是构建大数据解决方案的基石。在实践中,根据具体场景调整HDFS的配置参数,如数据块大小、副本数量、磁盘目录策略等,能够进一步优化性能和可靠...

Global site tag (gtag.js) - Google Analytics