Hadoop HDFS 教程(一)介绍

这个Hadoop HDFS教程的目标是教会你,什么是HDFS, 什么是不同节点,在HDFS中数据是如何存储的,HDFS的结构和HDFS的一些特点,比如分布式存储,容错能力,可用性高和依懒性高和一些关于块的知识等等。在HDFS教程中也会讨论一些HDFS的基本操作,比如怎么读和写来自HDFS和Rack的感知数据。这套Hadoop HDFS教程的目的是涵盖所有的概念在分布式系统中。

2.HDFS教程--介绍
分布式文件系统 -- HDFS是可靠度最高的文件存储系统。HDFS是为存储在集群上运行的的文件存储系统。它设计的原则是更趋向于少量的大文件,而不是大量的小文件。Hadoop HDFS同时提供容错存储层和其他的组件。HDFS复制数据可以帮助我们去实现这个特点。即是硬件失败,它也可以可靠地存储数据。它为应用数据平行提供高吞吐量的数据访问。

3.HDFS 节点
正如我们所知,Hadoop以雇主-奴隶的方式工作,HDFS也同时包含两个类型的节点。他们在集群中分别是namenodes 和datanodes。

3.1 HDFS Master(Namenode)
名节点为客户端调节可以访问的文件。它负责维护,管理和分配任务给slave节点。NameNode执行文件系统命名空间的操作,比如,打开,关闭和重命名地址跟路径。它应该部署在可靠的硬件上。

3.2 HDFS Slave(Datenode)
在分布式文件系统中有大量的努力节点负责管理存储数据。这些奴隶节点才是真正相应客户端读写请求的节点。他们还根据来自namenode的指令块,进行创建,删除和复制。他们复制自身给其他的数据节点,并继续处理,直到被规定的副本数量被创建完毕。数据节点可以被部署在硬件架子上,但是不必非要部署在非常可靠地机器上。

4.Hadoop HDFS的守护进程
在HDFS数据存储进程中有两个守护进程
Namenode:是在所有主人节点中运行的守护进程,Namenode存储元数据比如,文件名,block的数量,副本的数量,块的位置,块的ID等等。该数据在主内存中可用以便快速的检索数据。在本地磁盘中,元数据的副本可用于持久性。所以,名节点的内存应该配置较高。

Datanode:这是运行在节点上的守护进程,这些才是真正存储数据的工作节点。

  1. 数据在HDFS中的存储

当任何文件写入HDFS中时,它都会被打散分成小块儿存储,这就是所谓的Block. HDFS给block设置了默认大小为128MB,同时这个大小可以根据需求而增加。这些blocks以分布式的方式存储在HDFS系统中的不同节点上。这样的就为MapReduce提供了一种机制,可以在集群中平行的产生数据。
data-storage-in-hdfs-tutorial.png

对于每个block的多重复制是横跨集群在不同节点下的复制。这些复制都是重复的数据。在默认情况下,HDFS的默认因子为3。这样的设置为系统提供了容错性,可靠性和高可依赖性。

总结一下,大文件在HDFS中被分解成n个小的blocks.每个block以分布式的方式实现在集群上的存储,同时每个block对于自身的复制是夸集群进行的。

  1. Hadoop HDFS中的机架感知
    由于Hadoop通常的是运行在一个集群中,这就对机架数量有了要求。NameNode将不同的Block复制在不同的机架上用以提高系统的容错性。NameNode尝试着每个机架上都复制一个自己,这样就算一个机架不工作了,系统仍然可以高效的运行。优化存储位置是HDFS与现阶段的分布式系统区分开来的标志。机架感知与复制规则是用来提高系统的容错性,可靠性,高可用性和网络带宽利用率。

  2. HDFS架构
    一个单独的NameNode节点用来存储元数据和很多的NameNode用来做实际存储工作。这些节点被分配到在集群中的不同的机架上。在读写文件中,客户端需要访问NameNode。HDFS应用需要一个一次写入多次读取的访问模型。一旦文件的被创建和写入就不能被编辑。


    Hadoop-HDFS-architecture-tutorial.png

    NameNode储存元数据, DataNode储存实际的数据。客户端在执行任何一个任务的时候都学要访问数据节点,可以说数据节点是整个集群中的中心环节。

大量在集群中的datanodes被HDFS存储在本地磁盘里。DataNodes定时给发送心跳信息给Namenode,来确保它是否在线。它同时也给不同的DataNode传递自己身数据,直到复制因子达到3的时候完成。

  1. Hadoop HDFS的特点

a.分布式存储
由于HDFS以分布式的方式存储数据,它把数据分成小块,存储在集群中的不同节点上,在这种方式中,Hadoop提供一个map reduce的方式存储大数据的子集数据,就是把它打成小块儿去存储他们。MapReduce是Hadoop的核心,但是HDFS是提供这些能力的基础。

b.Blocks
由于HDFS把大的数据文件分成小块儿--Blocks. Block是文件系统中最小的数据单元。客户端和管理员不需要控制这些小块存储在什么位置上,Namenode将决定这类事情。

HDFS默认的块儿大小是128MB,当然这个大小可以增加。这不想OS文件操作系统,它的block大小只有4KB.

如果数据大小比块大小小的话,block大小就会等于数据大小。例如一个数据的大小为129MB,则系统会为这个数据创建两个Block一个大小为128MB,另一个大小只为1MB. 这样的设置可以保证存储空间不被浪费。

将Block大小设置为128MB有两个好处,一是解决数据搜寻时间。而是mapper可以一次性处理一个块儿的数据。

在分布式文件系统中,一个文件被分割成块儿,同时每个块又被复制成3块。

c.复制性
Hadoop HDFS为Blocks创建副本。所有的blocks副本都被夸集群创建,它通常在每个机架上都会创建一个副本。

Datanode根据机架被组织起来,所有在一个机架上的所有节点被一个开关控制,所以一但关闭,整个机架都不工作了。同时数据可以被来自其它机架的机器所访问。具体关于机架的细节,我会在以后机架感知章节提出。

在前文中提到过,默认的复制因子是3,修改这个因子可以通过修改配置文件hdfs-site.xml去实现。

d.高度可用性
复制数据块儿和跨集群存储可以提供高数据可用性,即是网络连接和节点或者硬件坏了,我们也可以轻松的从其它3个节点获取数据。

e. 数据可靠性

g. 高吞吐量的访问数据
Hadoop分布式文件系统提供高吞吐量的访问数据。吞吐量是单位时间内完成工作的数量,它被用来描述,系统访问数据有多快,这个指标经常被用于测试系统的表现。当我们想执行一个任务或者一个动作的时候,这个任务被分解给不同的系统。所以所有的系统都会被平行的执行它们自己部分。这就使工作会在很短的时间内完成。利用这点,HDFS给予了非常棒的吞吐量。平行读取数据的方式,使我们降低了读取超大数据所需的时间。

  1. Hadoop HDFS 操作

在Hadoop中,我们需要通过编程或命令行方式跟文件系统进行交互。

Hadoop 分布式文件系统和Linux文件系统有诸多相似之处。所以我们几乎可以将用于本地文件系统的所有操作命令都用到HDFS文件系统操作中来,比如,创建一个路径,复制一个文件,更改权限等等。

它也可以控制权限,例如,给不同的用户,不同的分组,创建不同的读写权限。

我们可以通过用浏览器访问http://master-IP:50070去访问文件系统,通过访问上述地址,你可以得到集群信息,比如,磁盘使用情况,活动节点的数量,死节点的数量等等。

9.1 HDFS读取操作

当客户端想读取一个文件的时候,客户端需要和NameNode节点进行交互,因为它是唯一存储数据节点元数据的节点。NameNode规定奴隶节点的存储数据的地址跟位置。客户端通过NameNode找到它需要数据的节点,然后直接在找到DataNode中进行读操作。考虑到安全和授权的目的,NameNode给客户端提供token,这个token需要出示给DateNote进行热证,认证通过后,才可以读取文件。

由于HDFS进行读操作的时候需要需要访问NameNode节点,所以客户端需要先通过接口发送一个请求,然后NameNode节点在返回一个文件位置。在这个过程中,NameNode负责检查,该客户端是否有足够的权限去访问这组数据?如果拥有权限,NameNode会将文件储存路径分享给该客户端,与此同时,namenode也会将用于权限检查的token分享给客户端。

当该客户端去数据节点读文件的时候,在检查token之后,数据节点允许客户端读特定的block. 一个客户端打开一个输入流开始从DataNode读取数据,然后,客户端直接从数据节点读取数据。

如果在读取数据期间datanodes突然废了,这个客户端会继续访问Namenode, 这是NameNode会给出这个数据节点副本的所在位置。

9.2 HDFS 写操作

我们知道读取文件需要客户端访问Namenode. 相似的写文件也需要客户端与NameNode进行交互。NameNode需要提供可供写入数据的奴隶节点的地址。

当客户端完成在block中写数据的操作时,这个奴隶节点开始复制自身给其他奴隶节点,知道完成拥有3个副本。当然这是在副本因子为3的时候的操作。当复制完成后,它会给客户端发一个通知,同样的这个授权步骤也和读取数据时一样。

当一个客户端需要写入数据的时候,它需要跟NameNode进行交互,客户端发送一个请求给NameNode, NameNode同时返回一个可写的地址给客户端。

NameNode分享可写数据的位置。然后客户端跟特定的DataNode进行交互,将数据直接写入进去。当数据被写入和被复制的过程完成后,datanode发送给客户端一个通知,告知数据写入已经完成。

我们已经讨论过在Hadoop HDFS系统中怎么写入文件,客户端第一步需要跟NameNode进行交互,然后向数据节点中写入数据。

当客户端完成写入第一个block时,第一个数据节点会复制一样的block给另一个DataNode, 然后在这个数据节点完成接收block之后,它开始复制这些blocks给第三个数据节点。第三个数据节点发送通知给第二个数据节点,第二个数据节点在发送通知给第一个数据节点,第一个数据节点负责最后通知客户端。不论复制因子是多少,客户端只发送一个数据副本给DataNode, DataNode完成后续所有任务的复制工作。所以,在Hadoop中写入文件并不十分消耗系统资源,因为它可以在多个数据点将blocks平行写入。

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

推荐阅读更多精彩内容

  • 首先,我们在使用前先看看HDFS是什麽?这将有助于我们是以后的运维使用和故障排除思路的获得。 HDFS采用mast...
    W_Bousquet阅读 4,160评论 0 2
  • 先思考问题 我们处在一个大数据的时代已经是不争的事实,这主要表现在数据源多且大,如互联网数据,人们也认识到数据里往...
    墙角儿的花阅读 7,339评论 0 9
  • 秋叶情 秋天,一个充满着韵味的季节,一个带着些许凄凉与惆怅的季节…… 一夜秋...
    阿澜手工布艺陶艺粘土阅读 270评论 0 0
  • 别梦凄,青沙明月江渚依,露重衣单雾鬓湿。 荷开荣枯经几时。霜染白,关山不隔重相忆。
    陽春阅读 208评论 0 4
  • 这本书是作者风笑天教授结合国内外社会研究方法的发展趋势和高等学校社会研究方法课程教学的实际,对社会研究方法的...
    关小昂阅读 5,476评论 4 17