HDFS基本特性常见命令工作机制

HDFS是一个分布式文件系统,采用分而治之的设计思想,将大文件、大批量文件,分布式存放在大量服务器上,为各类分布式运算框架(MapReduce,spark,tez等)提供数据存储服务。首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

基本特性

适合用来做数据分析,并不适合用来做网盘应用,因为,不便修改,延迟大,网络开销大,成本太高

  1. HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M;
  2. HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data
  3. 目录结构及文件分块信息(元数据)的管理由nameNode节点承担。nameNode是HDFS集群主节点,负责维护整个hdfs文件系统的目录树,以及每一个路径(文件)所对应的block块信息(block的id,及所在的dataNode服务器);
  4. 文件的各个block的存储管理由dataNode节点承担。dataNode是HDFS集群从节点,每一个block都可以在多个dataNode上存储多个副本(副本数量也可以通过参数设置dfs.replication);
  5. HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改;

常见命令

// 列出文件
hadoop fs -ls /

// 创建目录
hadoop fs -mkdir 目录名称

// 查看文件
hadoop fs -cat 文件名称

// 删除文件或文件夹
hadoop fs -rm -r /aaa/bbb/

// 从本地文件系统中拷贝文件到hdfs路径去
hadoop  fs  -copyFromLocal  ./jdk.tar.gz  /aaa/
// 上传,等同于copyFromLocal
hadoop  fs  -put  /aaa/jdk.tar.gz  /bbb/jdk.tar.gz.2

// 从hdfs拷贝到本地
hadoop fs -copyToLocal /aaa/jdk.tar.gz
// 从hdfs下载文件到本地,等同于copyToLocal 
hadoop fs -get  /aaa/jdk.tar.gz

// 统计文件系统的可用空间信息
hadoop  fs  -df  -h  /

// 统计文件夹的大小信息
hadoop  fs  -du  -s  -h /aaa/*

// 统计一个指定目录下的文件节点数量
hadoop fs -count /aaa/

// 设置hdfs中文件的副本数量,这里设置的副本数只是记录在nameNode的元数据中,是否真的会有这么多副本,还得看dataNode的数量
hadoop fs -setrep 3 /aaa/jdk.tar.gz

工作机制

  1. HDFS集群分为两大角色:nameNode、dataNode;
  2. nameNode负责管理整个文件系统的元数据;
  3. dataNode负责管理用户的文件数据块;
  4. 文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台dataNode上;
  5. 每一个文件块可以有多个副本,并存放在不同的dataNode上;
  6. dataNode会定期向nameNode汇报自身所保存的文件block信息,而nameNode则会负责保持文件的副本数量;
  7. HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向nameNode申请来进行;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏祝威廉

CarbonData集群模式体验

之前专门写过一篇CarbonData的文章;由CarbonData想到了存储和计算的关系。可惜碍于时间问题到现在才开始真正的尝试。

3452
来自专栏小狼的世界

Hadoop学习笔记一:单节点安装

通过本节的学习,可以掌握如何在单节点上使用Hadoop进行Map/Reduce以及HDFS存储的实现。

943
来自专栏机器学习算法工程师

Hadoop学习笔记

作者:伍栋梁 编辑:陈人和 1.hadoop安装与介绍 1.1hadoop生态圈介绍 分布式系统—Google三架马车(GFS,mapreduce,Bigta...

1.1K6
来自专栏猿人谷

Python抓取中文网页

早就有想法把博客每天的访问流量记下来,刚好现在申请了GAE的应用,又开始学Python,正好拿这个练手。打算先利用Python把访问记录保存在本地,熟悉之后可以...

2565
来自专栏社区的朋友们

TAF 必修课(三):Server 启动全过程

本节对 Taf-server整个启动流程进行解析,思考多协议支持,开发运营一体化。

1.2K2
来自专栏简单聊聊Spark

Spark性能调优篇八之shuffle调优(重要)

本篇文章来介绍一个重量级的Spark调优机制,就是我们常说的shuffle调优。在讲解shuffle调优之前,我们先来明确一个概念,什么是shuffle操作?

1503
来自专栏Maroon1105

Linode Cloud中的大数据:使用Apache Storm进行流数据处理

Apache Storm是一项大数据技术,使软件,数据和基础架构工程师能够实时处理高速,大容量数据并提取有用信息。任何涉及实时处理高速数据流的项目都可以从中受益...

1732
来自专栏数据之美

通过hiveserver远程服务构建hive web查询分析工具

(1)hive 三种启动方式及用途,本文主要关注通过hiveserver(可jdbc连接)的方式启动  1, hive  命令行模式,直接输入/hive/...

2175
来自专栏腾讯大数据的专栏

网卡收包流程

0.前言 为提升信鸽基础服务质量,笔者就网络收包全流程进行了内容整理。 网络编程中我们接触得比较多的是socket api和epoll模型,对于系统内核和网卡驱...

1.9K14
来自专栏hrscy

iOS多线程 - GCD

GCD 全称 Grand Central Dispatch,可翻译为『牛逼的中枢调度器』。GCD 是纯 C 语言,提供了非常强大的函数。

862

扫码关注云+社区

领取腾讯云代金券