扫盲:Hadoop分布式文件系统(HDFS)基础概念讲解!

无论你如何将Hadoop与Spark进行对比,无论Spark生态多么成熟和完善,其底层终归要基于HDFS,毕竟这是目前最成熟的分布式底层文件系统,几乎没有哪家公司愿意重新花费精力研发一个全新的文件系统。

本文将讨论Hadoop分布式文件系统(HDFS)的基本概念以及管理HDFS的十大Hadoop Shell命令。HDFS是Apache Hadoop框架的底层文件系统,是一个分布式存储框架,跨越数千种商用硬件。

该文件系统提供容错、高吞吐、流数据访问以及高可靠性等功能。HDFS的体系架构适用于存储大量数据及快速处理,HDFS是Apache生态系统的一部分。

在此之前,我们先来了解Apache Hadoop框架,其主要包含以下几大模块:

Hadoop Common——包含Hadoop其他模块所需的库和实用程序;

HDFS——商用机存储数据的分布式文件系统,在集群中提供非常高的聚合带宽;

Hadoop YARN ——资源管理平台,负责管理集群上的计算资源并使用它们调度用户应用程序;

Hadoop MapReduce——用于大规模数据处理的编程模型。

Hadoop中的所有模块都设计了一个基本假设,即硬件故障(单个机器或整个机架)是显而易见的,因此应由Hadoop框架在软件应用程序中自动处理。

Apache Hadoop的HDFS组件最初来自Google的MapReduce和Google File System(GFS)。

HDFS是Hadoop应用程序使用的主要分布式存储,HDFS集群主要由NameNode和DataNode组成。NameNode管理文件系统元数据,DataNode用于存储实际数据。

HDFS架构图解释了NameNode、DataNode和客户端之间的基本交互,客户端组件调用NameNode以获取文件元数据或修改,客户端直接使用DataNodes执行实际的文件I / O操作。

HDFS可能存在一些用户感兴趣的显著特征

1、非常适合使用低成本商用硬件进行分布式存储和处理。Hadoop具有可扩展性,容错性且易于扩展。MapReduce以其大量分布式应用程序的简单性和适用性而著称。

HDFS则具有高度可配置性,默认配置足以满足大多数应用程序的需求。通常,仅需要针对非常大的集群调整默认配置;

2、Hadoop是基于Java平台编写的,几乎在所有主要平台上都受支持;

3、Hadoop支持shell和shell类命令与HDFS的通信;

4、NameNode和DataNode具有内置Web服务器,可以轻松检查集群的当前状态;

5、HDFS中经常实现新的功能和更新,以下列表是HDFS中可用的功能子集:

文件权限和身份验证;

Rackawareness:有助于在计划任务和分配存储时考虑节点的物理位置;

Safemode:管理主要用于维护的模式;

fsck:这是一个实用程序,用于诊断文件系统的运行状况以及查找丢失的文件或块;

fetchdt:这是一个用于获取DelegationToken并将其存储在本地系统文件中的实用程序;

Rebalancer:当数据在DataNode之间分布不均时,这是一个用于平衡集群的工具;

升级和回滚:软件升级后,可以在升级前回滚到上一状态,以防出现任何意外;

SecondaryNameNode:此节点执行命名空间的Checkpoint,并帮助将包含HDFS修改日志的文件大小保持在NameNode的特定限制内;

Checkpoint节点:此节点执行命名空间的Checkpoint,并有助于最小化存储在NameNode中的日志大小,其中包含对HDFS所做的更改,它还替换了以前由Secondary NameNode填充的角色或功能。作为替代方案,NameNode允许多个节点作为Checkpoint,只要系统没有可用(注册)的备份节点即可;

Backup节点:可以将其定义为Checkpoint节点的扩展。除了Checkpoint之外,它还用于从NameNode接收编辑流。因此,它维护自己命名空间的内存副本,始终与活动的NameNode和命名空间状态同步,一次只允许向NameNode注册一个备份节点。

HDFS的设计目标

Hadoop的目标是在非常大的集群中使用常用服务器,并且每个服务器都有一组廉价内部磁盘驱动器。为了获得更好的性能,MapReduce API尝试在存储要处理的数据的服务器上分配工作负载,这称为数据局部性。

因此,在Hadoop环境中,建议不要使用区域存储网络(SAN)或网络直接存储(NAS) 。对于使用SAN或NAS的Hadoop部署,额外的网络通信开销可能会导致性能瓶颈,尤其是在集群规模较大的情况下。

假设,我们目前拥有1000台机器集群,每台机器都有三个内部磁盘驱动器。因此,请考虑由3000个廉价驱动器+ 1000个廉价服务器组成的集群的故障率,这个数值会非常大!

不过,好在廉价硬件相关的MTTF故障率实际上已被很好地理解和接受,这让用户对Hadoop的包容性变得很高。Hadoop具有内置的容错和故障补偿功能,已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击HDFS也是如此,因为数据被分成块,这些块的副本存储在Hadoop集群的其他服务器上。

为了使其易于理解,我们可以说单个文件实际上存储为较小的块,这些块在整个集群中的多个服务器之间进行复制,以便更快地访问文件。

我们可以考虑一个应用场景,假设我们现在需要存储某区域内所有居民的电话号码,将姓氏以A开头的存储在服务器1上,以B开头的在服务器2上,依此类推。

在Hadoop环境中,此电话簿的各个部分将分布式存储在整个集群中。如果要重建整个电话簿的数据,程序需要访问集群中每个服务器的块。为了实现更高的可用性,HDFS默认将较小的数据复制到另外两台服务器上。

这里会涉及到冗余的概念,但支持冗余是为了避免故障并提供容错解决方案,可以基于每个文件或针对整个环境增加或减少该冗余。这种冗余具备多种好处,最明显的一个是数据高可用。除此之外,数据冗余允许Hadoop集群将工作分解为更小的块,并在集群中的所有服务器上运行较小的作业,以实现更好的可伸缩性。

最后,作为最终用户,我们获得了数据局部性的好处,这在处理大型数据集时至关重要。

管理HDFS的十大Hadoop Shell命令

以下是通过shell命令管理Hadoop HDFS的十大基本操作,这些操作对于管理HDFS集群上的文件非常有用。出于测试目的,你可以使用Cloudera或者Hortonworks等中的某些VM调用此命令,或者用于伪分布式集群设置。

1、在给定路径的HDFS中创建目录

2、列出目录内容

3、在HDFS中上传和下载文件

Upload:

hadoop fs -put:

将单个src文件或多个src文件从本地文件系统复制到Hadoop数据文件系统

将文件复制/下载到本地文件系统

Download:

hadoop fs -get:

4、查看文件的内容

与unix cat命令相同:

5、将文件从源复制到目标

此命令也允许多个源,在这种情况下,目标必须是目录。

6、将文件从(到)本地文件系统复制到HDFS

与put命令类似,但源仅限于本地文件引用。

7、将文件从源移动到目标

注意:不允许跨文件系统移动文件。

8、删除HDFS中的文件或目录

删除指定为参数的文件,仅在目录为空时删除目录:

9、显示文件的最后几行

类似于Unix中的tail命令

10、显示文件的聚合长度

结论

我们已经看到HDFS是Apache Hadoop生态系统的重要组件之一。相比于本地文件系统,HDFS确实非常强大。

因此,所有大数据应用程序都使用HDFS进行数据存储,这也是作为大数据人必须了解HDFS的原因。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容

  • 首先,我们在使用前先看看HDFS是什麽?这将有助于我们是以后的运维使用和故障排除思路的获得。 HDFS采用mast...
    W_Bousquet阅读 4,196评论 0 2
  • 翻译: http://hadoop.apache.org/docs/stable/hadoop-project-d...
    金刚_30bf阅读 491评论 0 0
  • 一、系统参数配置优化 1、系统内核参数优化配置 修改文件/etc/sysctl.conf,添加如下配置,然后执行s...
    张伟科阅读 3,748评论 0 14
  • 【什么是大数据、大数据技术】 大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法在合理时间内通过传统的应...
    kimibob阅读 2,743评论 0 51
  • 医院的空气又湿又黏,如果拿绵柔巾在空气中挥一挥,应该能沾出​鼻涕来,所以呼吸久了,就想出去。外面热烘烘的干...
    远山的轮廓阅读 278评论 1 1