HDFS

HDFS(Hadoop Distributed File System),是一个文件系统,用于存储文件,通过目录树来定位文件,其实,它是分布式的,联合多台服务器实现功能。HDFS容错性高,适合处理大数据。
使用场景:

  1. 适合一次写入,多次读出的场景;
  2. 不支持文件的修改;
  3. 适合于用来做数据分析,不适合用过来做网盘。

缺点:

  1. 不适合低延时数据访问
  2. 无法高效的对大量小文件进行存储;
    2.1 大量小文件会占用NameNode大量的内存来存储文件目录和块信息。
    2.2 小文件存储的寻址时间会超过读取时间。
  3. 不支持并发写入、文件随机修改;
    3.1 一个文件只能有一个写,不允许多线程同时写。
    3.2 仅支持数据追加,不支持文件的随机修改。

HDFS组成架构


HDFS文件块大小

HDFS的文件在物理上是分块(block)存储的,块的大小可以通过配置参数(dfs.blocksize)来规定,在Hadoop2.x版本中默认是128M,老版本是64M。
块的大小与磁盘的传输速率有关系:

  1. 在集群的block中,寻址时间为10ms
  2. 当寻址时间为传输时间的1%时,为最佳状态。
    T_{传输时间}=10ms/0.01=1000ms=1s
  3. 目前磁盘的传输速度普遍为100MB/s,因此block的大小为:
    S_{block}=1s*100MB/s=100MB

HDFS的Shell操作

  1. hadoop fs -help rm:查看rm命令的帮助信息
  2. hadoop fs -ls /显示目录信息
  3. hadoop fs -mkdir -p /user/input:在HDFS上创建目录
  4. hadoop fs -moveFromLocal ./demo.txt /user/input/:将本地的demo.txt文件剪切粘贴到HDFS
  5. hadoop fs -copyFromLocal ./demo.txt /user/input/:将本地的demo.txt文件拷贝到HDFS

-put命令与-copyFromLocal功能相同

  1. hadoop fs -copyToLocal /user/input/demo.txt ./:将HDFS上的demo.txt拷贝到本地

-get命令与-copyToLocal功能相同

  1. hadoop fs -appendToFile ./append.txt /user/input/demo.txt:将本地的append.txt中的内容追加到已经存在的文件demo.txt的末尾
  2. hadoop fs -getmerge /user/input/* ./zaiyiqi.txt:将HDFS上/user/input/目录下的所有文件合并下载到本地,并将结果保存在zaiyiqi.txt中。
  3. hadoop fs -du -h /user/统计文件夹的大小

hadoop fs -du -h -s /:根目录下所有文件夹大小的总和

  1. hadoop fs -setrep 2 /demo.txt设置demo.txt的副本数为2

当副本数大于数据节点的个数时,数据的实际副本数仍然为节点数,只有当新增节点时,才会生成新的副本,直到增加的节点数与数据的副本数相同时停止。


HDFS写数据流程

1.节点距离计算

两个节点到达最近的公共祖先的距离总和。

2.Hadoop2.7.2副本节点选择

HDFS读数据流程


NameNode和SecondaryNameNode

1. NN和2NN的工作机制

所有的元数据存储在NN的内存中,同时在NN的本地磁盘会备份一个FsImage,以保证断电时数据不会丢失。但是这样每次元数据更新时同时更新FsImage时效率很低,此时,增加一个Edits文件,每当元数据有变化就将变动追加到Edits中,这样断电后就可以通过FsImag和Edits合并生成元数据。但是如果Edits的文件很大时,恢复一次元数据的效率非常低,应该定期进行FsImage和Edits的合并,而这个工作是由2NN完成的。

2. FsImage和Edits解析

2.1. 将Fsimage格式化成可查阅的文件

hdfs oiv -p XML -i fsimage_000*** -o fsimage.xml

2.2. 将Edits格式化成可查阅的文件

hdfs oev -p XML -i edits_000*** -o edits.xml

3. CheckPoint时间设置

3.1. 通常情况下,SecondaryNameNode每隔一小时执行一次
hdfs-default.xml

<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>3600</value>
</property>

3.2, 一分钟检查一次操作数,当操作数达到一百万时,SecondaryNameNode执行一次
hdfs-default.xml

<property>
  <name>dfs.namenode.checkpoint.txns</name>
  <value>1000000</value>
</property>

<property>
  <name>dfs.namenode.checkpoint.check_period</name>
  <value>60</value>
</property>

4.NameNode故障处理

4.1 将SecondaryNameNode中的数据拷贝到NameNode存储数据的目录,
步骤如下:
I. kill -9 NameNode进程
II. 删除NameNode存储的数据
rm -rf /opt/module/hadoop_2.x.x/data/tmp/dfs/name/*
III. 拷贝SecondaryNameNode中的数据到原NameNode存储数据的目录
scp -r secondaryNameNode:/opt/modeul/hadoop_2.x.x/data/tmp/dfs/namesecondary/* ./data/tmp/ds/name/
IV. 重新启动NameNode

4.2 使用-importCheckpoint选项启动NameNode守护进程,从而将SecondaryNameNode中的数据拷贝到NameNode中
步骤如下:
I. 修改hdfs-site.xml文件

<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>120</vaue>
</property>

<property>
  <name>dfs.namenode.name.dir</name>
  <value>/opt/module/hadoop-2.x.x/data/tmp/dfs/name</value>
</property>

II. kill -9 NameNode进程
III. 删除NameNode存储的数据
IV. 如果2NN和NN没有在一个主机节点上,需要将2NN存储数据的目录拷贝到NN存储数据的平级目录(也就是和/name处于同一目录下),并删除in_ust.lock文件
V. 导入检查点数据
bin/hdfs namenode -importCheckpoint
VI. 启动NameNode
bin/hadoop_daemon.sh start namenode

5. 集群的安全模式


DataNode工作机制

1. DataNode掉线时限参数设置

hdfs-site.xml中的参数heartbest.recheck.intervaldfs.heatbeat.interval,二者单位均为毫秒

2. 服役新节点

直接从已有的datanode上克隆一个主机,然后删除/data和/logs文件,启动服务器,即可加入新节点
但是这样做很危险,容易被人加入一台主机,偷走数据

3. 添加白名单

可以在NameNode主机上添加白名单,允许在白名单上的主机节点访问NameNode。具体配置如下:
I. 在NameNode的hadoop_2.x.x/etc/hadoop/目录下创建dfs.hosts文件,再文件里添加主机名

34.56.73.166
...

II. 在hdfs-site.xml配置文件中增加dfs.hosts属性

<property>
  <name>dfs.hosts</name>
  <value>hadoop_2.x.x/etc/hadoop/dfs.hosts</value>
</property>

III. 刷新NameNode,更新ResourceManager节点
hdfs dfsadmin -refreshNodes
yarn rmadmin refreshNodes

4. 黑名单退役

在黑名单上的主机都会被强制退出。具体配置如下:
I. 在NameNode的hadoop_2.x.x/etc/hadoop/目录下创建dfs.hosts.exclude文件,加入要退役的节点
II. 在NameNode的hdfs-stie.xml配置文件中添加dfs.hosts.exclude属性

<property>
  <name>dfs.hosts.exclude</name>
  <value>hadoop_2.x.x/etc/hadoop/dfs.hosts.exclude</value>
</property>

III. 刷新NameNode和ResourceManger。
IV. 在退役节点上进行单节点退出
sbin/hadoop-daemon.sh stop datanode
sbin/yarn-daemon.sh stop nodemanager


HDFS 2.x新特性

1. 小文件存档

2. 回收站

将删除的文件在不超时的情况下,恢复元数据,防止误删除、备份等作用。默认是关闭的。



启用回收站,在NN的core-site.xml中:

<property>
  <name>fs.trash.interval</name>
  <value>1</value> # 一分钟
</property>

修改访问垃圾回收站的用户名称,在NN的core-site.xml中:

<property>
  <name>hadoop.http.staticuser.user</name>
  <value>user_name</value>
</property>

3. 快照管理

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

推荐阅读更多精彩内容