HDFS:分布式文件系统

一句话总结

一个文件先被拆分为多个Block块(会有Block-ID:方便读取数据),以及每个Block是有几个副本的形式存储

1个文件会被拆分成多个Block

blocksize:128M(Hadoop2.0以后默认的块大小,可以自定义配置)

130M ==> 2个Block: 128M 和 2M

HDFS设计目标

  • 巨大的分布式文件系统
  • 满足大数据场景基本数据存储的要求
  • 廉价的机器上
  • 当你的存储空间不够,你可以水平横向扩展机器方式提高

HDFS架构

NameNode + N个DataNode

典型的主从架构,即:

1 Master(NameNode/NN) 带 N个Slaves(DataNode/DN)

建议:NN和DN是部署在不同的节点上

PS:

常见的主从架构还有:HDFS/YARN/HBase

主从架构一个难题就是:如何保证HA的问题,很多时候会使用Zookeeper来配置使用

NameNode/NN:主节点Master

1)负责客户端请求的响应

2)负责元数据(文件的名称、副本系数、Block存放的DN)的管理

DataNode/DN:从节点Slaves

1)存储用户的文件对应的数据块(Block)

2)要定期向NN发送心跳信息,汇报本身及其所有的block信息,健康状况

HDFS副本机制

  • replication factor:副本系数、副本因子

  • 一个大的文件会被拆分为许多块,最终以多副本的方式存储在多个节点上

  • 一个文件,除了最后一个,其余所有块的大小都是一致的

问题:那么如何为每个Block选择存储在哪些节点上呢?

Rack代表的是机架:一般三份副本分别是这样存储的

第一份副本:存储在当前提交存储的机架中当前节点上

第二份副本:存储在非当前机架上的某一节点上

第三份副本:和第二副本统一机架的不同节点之上

建议:生产只能够,起码划分两个及其以上的机架

HDFS Shell

Usage: hdfs dfs [COMMAND [COMMAND_OPTIONS]]

hadoop fs -ls / 等价 hdfs dfs -ls /

[root@hadoop000 data]# ls
hadoop-tmp hello.txt
上传:
[root@hadoop000 data]# hadoop fs -put hello.txt /
下载:
[root@hadoop000 data]# hadoop fs -get /test/a/b/h.txt
查看内容:
[root@hadoop000 data]# hadoop fs -text /hello.txt
[root@hadoop000 data]# hadoop fs -cat /hello.txt
建立目录;
[root@hadoop000 data]# hadoop fs -mkdir /test
创建递归的目录
[root@hadoop000 data]# hadoop fs -mkdir -p /test/a/b
递归展示目录文件:
[root@hadoop000 data]# hadoop fs -ls -R /
本地拷贝到hdfs:
[root@hadoop000 data]# hadoop fs -copyFromLocal hello.txt /test/a/b/h.txt
删除文件:
[root@hadoop000 data]# hadoop fs -rm /hello.txt
递归删除文件夹:
[root@hadoop000 data]# hadoop fs -rm -R /test

HSFS的读写流程,工作原理(面试)

漫画图解

https://blog.csdn.net/eric_sunah/article/details/41546863

Client:客户端,通过HDFS Shell或Java API发起读写请求

1个NameNode:全局把控

N 个DataNode: 数据存储

写数据流程:

1.客户端把文件拆分为多个Block

2.NameNode:提供刚才拆分出来的Block块的具体datanode存储位置

3.DataNode:存储Block块的数据,把3个副本数据写完

读数据流程:

1.用户提供文件名就可以给客户端

2.客户端发起请求给NameNode

3.NameNode就会告诉客户端具体的存储位置和块

4.发起最近距离节点请求给DataNode下载数据

HDFS的优缺点

优点:

数据冗余,硬件容错

一次写入,多次读取数据

适合存储大文件

构建在廉价机器上

缺点:

延时性高

不适合小文件存储

Hadoop核心组件之HDFS的更多相关文章

  1. hadoop核心组件概述及hadoop集群的搭建

    什么是hadoop? Hadoop 是 Apache 旗下的一个用 java 语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台.允许使用简单的编程模型在大量计算机集群上对大型数据集进行分 ...

  2. 对Hadoop分布式文件系统HDFS的操作实践

    原文地址:https://dblab.xmu.edu.cn/blog/290-2/ Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop核 ...

  3. Hadoop学习笔记—HDFS

    目录 搭建安装 三个核心组件 安装 配置环境变量 配置各上述三组件守护进程的相关属性 启停 监控和性能 Hadoop Rack Awareness yarn的NodeManagers监控 命令 hdf ...

  4. Hadoop官方文档翻译——HDFS Architecture 2.7.3

    HDFS Architecture HDFS Architecture(HDFS 架构) Introduction(简介) Assumptions and Goals(假设和目标) Hardware ...

  5. hadoop 2.5 hdfs namenode –format 出错Usage: java NameNode [-backup] |

    在 cd  /home/hadoop/hadoop-2.5.2/bin 下 执行的./hdfs namenode -format 报错[hadoop@node1 bin]$ ./hdfs nameno ...

  6. Hadoop 分布式文件系统 - HDFS

    当数据集超过一个单独的物理计算机的存储能力时,便有必要将它分不到多个独立的计算机上.管理着跨计算机网络存储的文件系统称为分布式文件系统.Hadoop 的分布式文件系统称为 HDFS,它 是为 以流式数 ...

  7. Hadoop 2.x HDFS新特性

    Hadoop 2.x HDFS新特性 1.HDFS联邦    2. HDFS HA(要用到zookeeper等,留在后面再讲)    3.HDFS快照 回顾: HDFS两层模型     Namespa ...

  8. 何时使用hadoop fs、hadoop dfs与hdfs dfs命令(转)

    hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...

  9. 何时使用hadoop fs、hadoop dfs与hdfs dfs命令

    hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...

随机推荐

  1. springboot报 org.thymeleaf.exceptions.TemplateInputException: Error resolving template "succeed";

    --------------------- 本文转自 林晓风 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/Lin_xiaofeng/article/details/ ...

  2. 三维动画形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)

    在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...

  3. Liunx学习总结(七)--系统状态查看和统计

    sar命令 sar 是一个非常强大的性能分析工具,它可以获取系统的 cpu/等待队列/磁盘IO/内存/网络等性能指标.功能多的必然结果是选项多,应用复杂,但只要知道一些常用的选项足以. 语法 sar ...

  4. unity之shader

    渲染流程分为三个阶段:应用阶段,几何阶段,光栅化阶段. Unity Shader的分类: 使用的是ShaderLab编写unity中的的shader 1 表面着色器 Surface Shader 2 ...

  5. Super和This总结

    this: this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. Java关键字this只能用于方法体内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自 ...

  6. codeforces 245 D. Restoring Table(位运算+思维)

    题目链接:http://codeforces.com/contest/245/problem/D 题意:给出一个矩阵b,b[i][j]=a[i]&a[j],b[i][i]=-1.然后求a[i] ...

  7. hud 3555 Bomb 数位dp

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Subm ...

  8. yzoj P2344 斯卡布罗集市 题解

    共t条街对于每一条街上有n个店铺(n可能不相同),每次只能选两端第一个营业的店铺采购,采购第i个店铺会获得幸福度ai,采购完后,这个店铺和它相邻的店铺便会关门,问最大幸福度? 考场想了一下dp,一开始 ...

  9. 一起来聊一下 JavaScript 的用途和那些特性

    JavaScript 简介 我们一起来聊一下 JavaScript,用它能做什么,它有哪些特性,以及一些跟它配合使用的技术. 什么是 JavaScript? JavaScript 最初的目的是为了&q ...

  10. python 整型、字符串常用方法、for循环

    整型--int 定义:用于比较和计算 python2和python3: python2:python2中油int(整型)和long(长整型):1231312L+ 进制转换: 十进制转二进制:正除2,获 ...