hdfs基本原理

Hadoop分布式文件系统(HDFS)被设计成适合执行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有非常多共同点。

但同一时候,它和其它的分布式文件系统的差别也是非常明显的。

HDFS是一个高度容错性的系统,适合部署在便宜的机器上。HDFS能提供高吞吐量的数据訪问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最開始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache
Hadoop Core项目的一部分。

HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。

并且它提供高吞吐量(high throughput)来訪问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样能够实现流的形式訪问(streaming access)文件系统中的数据。

HDFS的主要组成:NameNode,SecondaryNameNode,DataNonde;

HDFS的基本操作:读、写、均衡;

图1,NameNode

图2。SecondaryNameNode

图3,client的读请求

图4,读取DataNode上的块

图5。写文件请求

图6。准备写

图7,单块的管线式写入数据节点

图8,多块的管线式写入数据节点

图9 重写损坏的数据块副本

图10 不均衡的集群

图11 均衡的集群

执行在HDFS之上的程序有非常大量的数据集。典型的HDFS文件大小是GB到TB的级别。所以,HDFS被调整成支持大文件。

它应 该提供非常高的聚合数据带宽,一个集群中支持数百个节点,一个集群中还应该支持千万级别的文件。

大部分的HDFS程序对文件操作须要的是一次写多次读取的操作模式。

一个文件一旦创建、写入、关闭之后就不须要改动了。这个假定简单化了数据一致的问题和并使高吞吐量的数据訪问变得可能。一个Map-Reduce程序或者网络爬虫程序都能够完美地适合这个模型。

HDFS是一个主从结构,一个HDFS集群是由一个名字节点,它是一个管理文件命名空间和调节client訪问文件的主server。当然另一些数据节点,一般是一个节点一个机器,它来管理相应节点的存储。HDFS对外开放文件命名空间并同意用户数据以文件形式存储。内部机制是将一个文件切割成一个或多个块,这些块被存储在一组数据节点中。名字节点用来操作文件命名空间的文件或文件夹操作,如打开,关闭,重命名等等。它同一时候确定块与数据节点的映射。数据节点负责来自文件系统客户的读写请求。数据节点同一时候还要运行块的创建,删除,和来自名字节点的块复制指令。

名字节点和数据节点都是执行在普通的机器之上的软件。机器典型的都是GNU/Linux。HDFS是用java编写的。不论什么支持java的机器都能够执行名字节点或数据节点,利用java语言的超轻便型。非常easy将HDFS部署到大范围的机器上。典型的部署是由一个专门的机器来执行名字节点软件,集群中的其它每台机器执行一个数据节点实例。

体系结构不排斥在一个机器上执行多个数据节点的实例,可是实际的部署不会有这样的情况。集群中仅仅有一个名字节点极大地简单化了系统的体系结构。

名字节点是仲裁者和全部HDFS元数据的仓库。用户的实际数据不经过名字节点。

HDFS是一个不错的分布式文件系统,它有非常多的长处,但也存在有一些缺点,包含:不适合低延迟数据訪问、无法高效存储大量小文件、不支持多用户写入及随意改动文件。

HDFS 经常使用的基本操作命令

1,HDFS  Shell

查看 hadoop fs

2, 常见命令

-ls 显示当前文件夹结构

该命令选项表示查看指定路径的当前文件夹结构,后面跟hdfs 路径,如图所看到的。

上图中的路径是hdfs 根文件夹,显示的内容格式与linux 的命令ls –l 显示的内容格式很相似,解析每一行的内容格式:

1. 首字母表示目录(假设是“d”)还是文件(假设是“-”)。                                                                                                                       2. 后面的9
位字符表示权限;

3. 后面的数字或者“-”表示副本数。

假设是文件。使用数字表示副本数。目录没有副本;

4. 后面的“root”表示属主。

5. 后面的“supergroup”表示属组 。

6. 后面的“0”、“6176”、“37645”表示文件大小,单位是字节 ;

7. 后面的时间表示改动时间,格式是年月日时分;

8. 最后一项表示文件路径。

-du 统计文件夹下各文件大小

-mv 移动

该命令选项表示移动hdfs 的文件到指定的hdfs 文件夹中。

后面跟两个路径,第一个表示源文件,第二个表示目的文件夹。

-cp 复制

该命令选项表示复制hdfs 指定的文件到指定的hdfs 文件夹中。

后面跟两个路径。第一个是被复制的文件,第二个是目的地

-rm 删除文件/空白目录

该命令选项表示删除指定的文件或者空文件夹

-rmr 递归删除

该命令选项表示递归删除指定文件夹下的全部子文件夹和文件

-put 上传文件

该命令选项表示把linux 上的文件拷贝到hdfs 中

-copyFromLocal 从本地复制

操作与-put 一致

-moveFromLocal 从本地移动

该命令表示把文件从linux 上移动到hdfs 中

getmerge 合并到本地

该命令选项的含义是把hdfs 指定文件夹下的全部文件内容合并到本地linux 的文件里

-cat 查看文件内容

该命令选项是查看文件内容

-text 查看文件内容

该命令选项能够觉得作用和使用方法与-cat 同样,此处略。

-mkdir 创建空白目录

该命令选项表示创建目录,后面跟的路径是在hdfs 将要创建的目录

-setrep 设置副本数量

该命令选项是改动已保存文件的副本数量,后面跟副本数量,再跟文件路径

-touchz 创建空白文件

该命令选项是在hdfs 中创建空白文件

-stat 显示文件的统计信息

该命令选项显示文件的一些统计信息

-tail 查看文件尾部内容

该命令选项显示文件最后1K 字节的内容。

一般用于查看日志。假设带有选项-f,那么当文件内容变化时,也会自己主动显示

-chmod 改动文件权限

该命令选项的使用类似于linux 的shell 中的chmod 使用方法,作用是改动文件的权限

-chown 改动属主

该命令选项表示改动文件的属主

-help 帮助

该命令选项会显示帮助信息。后面跟上须要查询的命令选项就可以

3。数据的读写过程

管线式(PipeLine)写入:当client写数据到HDFS文件里时,数据首先被写入本地文件里。如果HDFS文件的复制因子是3。当本地文件堆积到一块大小的数据,client从名字节点获得一个数据节点的列表。这个列表也包括存放数据块副本的数据节点。当client刷新数据块到第一个数据节点。

第一个数据节点開始以4kb为单元接收数据,将每一小块都写到本地库中,同一时候将每一小块都传送到列表中的第二个数据节点。同理。第二个数据节点将小块数据写入本地库中同一时候传给第三个数据节点,第三个数据节点直接写到本地库中。一个数据节点在接前一个节点数据的同一时候。还能够将数据流水式传递给下一个节点,所以,数据是流水式地从一个数据节点传递到下一个。
因此,三个节点的写数据完毕的时间相几乎相同。

hdfs的基本原理和基本操作总结的更多相关文章

  1. Hadoop(五):HDFS的JAVA API基本操作

    HDFS的JAVA API操作 HDFS在生产应用中主要是客户端的开发,其核心步骤是从HDFS提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件. 主 ...

  2. HDFS基本原理及数据存取实战

    ---------------------------------------------------------------------------------------------------- ...

  3. spark必知必会的基本概念

    首先我们从宏观的视角来窥视下大数据技术框架: 图1 大数据技术框架 从图1可以看出,数据源-数据收集-数据存储-资源管理,这是我们进行数据分析和处理的基本;图中的计算框架包括批处理.交互式分析和流处理 ...

  4. HBase的基本架构及其原理介绍

    1.概述:最近,有一些工程师问我有关HBase的基本架构的问题,其实这个问题仅仅说架构是非常简单,但是需要理解.在这里,我觉得可以用HDFS的架构作为借鉴.(其实像Hadoop生态系统中的大部分组建的 ...

  5. 基于 SWTBot 进行 Eclipse GUI 自动化测试

    背景简介 在软件开发领域,持续集成和部署对于软件测试自动化提出了越来越高的要求,基于 Eclipse 应用在这一需求中仍然占据重要的组成部分.目前主流的测试自动化工具主要以录制回放的功能为主,辅助以脚 ...

  6. Hadoop简介与分布式安装

    Hadoop的基本概念和分布式安装: Hadoop 简介 Hadoop 是Apache Lucene创始人道格·卡丁(Doug Cutting)创建的,Lucene是一个应用广泛的文本搜索库,Hado ...

  7. 动态时间规整-DTW算法

    作者:桂. 时间:2017-05-31  16:17:29 链接:http://www.cnblogs.com/xingshansi/p/6924911.html 前言 动态时间规整(Dynamic ...

  8. Hadoop 相关知识点(一)

    作业提交流程(MR执行过程) Mapreduce2.x Client:用来提交作业 ResourceManager:协调集群上的计算资源的分配 NodeManager:负责启动和监控集群上的计算容器( ...

  9. hdfs基本操作

    hdfs基本操作 1.查询命令 hadoop dfs -ls /   查询/目录下的所有文件和文件夹 hadoop dfs -ls -R 以递归的方式查询/目录下的所有文件 2.创建文件夹 hadoo ...

随机推荐

  1. C++ 学习路线推荐

        相信有非常大一部分学计算机的童鞋都是靠自学,即使本身是计算机专业的同学,也会认为只通过课堂上的学习是远远不够的,并且在上课时所用到的教材也不够好.然而自学的时候有个非常大的问题就是找不到合适的 ...

  2. js日期常用方法

    js获取日期时间格式 export function formatDateTime(timeStamp) { var date = new Date(); date.setTime(timeStamp ...

  3. Java Web学习总结(13)——JSP入门

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  4. js进阶 13-9/10 jquery如何实现三级列表

    js进阶 13-9/10 jquery如何实现三级列表 一.总结 一句话总结:用的是定位,父标签相对定位,子标签就可以绝对定位了,绝对定位的孩子还是可以设置绝对定位.用toggle设置子菜单显示和隐藏 ...

  5. 语言模型(Language Modeling)与统计语言模型

    1. n-grams 统计语言模型研究的是一个单词序列出现的概率分布(probability distribution).例如对于英语,全体英文单词构成整个状态空间(state space). 边缘概 ...

  6. 在react底下安装环境

    1.在react底下安装环境 Image.png Image.png 2.新建一个文件夹 Image.png 3.配置入口文件redux:staticRoot+'/redux/app' Image.p ...

  7. springboot集成shiro 实现权限控制(转)

    shiro apache shiro 是一个轻量级的身份验证与授权框架,与spring security 相比较,简单易用,灵活性高,springboot本身是提供了对security的支持,毕竟是自 ...

  8. 优雅地使用Retrofit+RxJava(二)

    前言 在我上一篇讲Retrofit+RxJava在MVP模式中优雅地处理异常(一)中,发现非常多网友发邮箱给我表示期待我的下一篇文章,正好趁着清明假期.我就写写平时我在使用RxJava+Retrofi ...

  9. 【Codeforces Round #435 (Div. 2) C】Mahmoud and Ehab and the xor

    [链接]h在这里写链接 [题意] 让你组成一个n个数的集合,使得这n个数的异或和为x; x<=1e5 每个数最大1e6; [题解] 1e5<=2^17<=2^18<=1e6的 ...

  10. AE 向已存在的要素类中添加字段

    风过无痕 原文向已存在的要素类中添加字段 以前,在用AE写程序的时候,为了方便,一般都是直接新建一个MapControl窗体应用程序.这次需要解决的问题用不到窗口,就突发奇想,直接新建了一个Conso ...