Hadoop HDFS核心概念,Hadoop底层的五行元素,你知道吗?

知识要点:

基本概念

Hadoop底层五行元素
Hadoop四种机制
Hadoop两大功能

基本概念

存储目录
①name:存储元数据
②data:存储数据
③dfs:SecondaryNameNode执行Checkpoint合并(SNN合并)的存储目录
④nm-local-dir:缓存目录
元数据
①抽象目录树
②数据和块的映射
③数据块的存储节点

Hadoop底层五行元素

NameNode
Namenode 维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是 镜像文件(Namespace image)和操作日志文件(edit log)。
在HDFS中主要是通过两个数据结构FsImage和EditsLog来实现Metadata的更新。在启动HDFS时,会从FSImage文件中读取当前HDFS文件的Metadata,之后对HDFS的操作都会记录到EditsLog文件中。
镜像文件
FSImage
保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。

  • 对于文件来说包括了数据块描述信息、修改时间、访问时间等;
  • 对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。
    简单的说,FSImage存储的信息就相当于整个HDFS在某一时刻的快照,就是这个时刻HDFS上所有的文件块和目录,分别的状态,位于哪些个datanode,各自的权限,各自的副本个数等。
    文件格式
    镜像文件(元数据文件):fsimage_oooooooo(如:fsimage_0000000000000000006)
-rw-rw-r-- 1 hadoop hadoop     477 1月  21 13:59 fsimage_0000000000000000023
-rw-rw-r-- 1 hadoop hadoop      62 1月  21 13:59 fsimage_0000000000000000023.md5
-rw-rw-r-- 1 hadoop hadoop     477 1月  21 14:44 fsimage_0000000000000000025
-rw-rw-r-- 1 hadoop hadoop      62 1月  21 14:44 fsimage_0000000000000000025.md5

查看FSImage内容

hdfs oev -i /home/hadoop/hdfs/name/current/fsimage_0000000000000000000 -o /home/hadoop/editslog.xml -p XML

日志文件
①EditLogs
对HDFS进行的各种更新操作、写操作都会被记录到editlog中。日志文件保护两种,一种是历史日志文件,另外一种是正在操作的日志文件。
②文件格式

  • 正在操作的日志文件:edits_inprogress_xxxxxxxx(如:edits_inprogress_0000000000000000015)
  • 镜像文件(元数据文件):fsimage_oooooooo(如:fsimage_0000000000000000006)
    历史日志
-rw-rw-r-- 1 hadoop hadoop     314 1月  19 15:02 edits_0000000000000000001-0000000000000000006
-rw-rw-r-- 1 hadoop hadoop     567 1月  19 16:02 edits_0000000000000000007-0000000000000000014
-rw-rw-r-- 1 hadoop hadoop      42 1月  19 17:02 edits_0000000000000000015-0000000000000000016
-rw-rw-r-- 1 hadoop hadoop     651 1月  19 18:02 edits_0000000000000000017-0000000000000000025
-rw-rw-r-- 1 hadoop hadoop      42 1月  19 19:02 edits_0000000000000000026-0000000000000000027
-rw-rw-r-- 1 hadoop hadoop      42 1月  19 20:02 edits_0000000000000000028-0000000000000000029

正在操作的日志

-rw-rw-r-- 1 hadoop hadoop 1048576 1月  21 14:44 edits_inprogress_0000000000000000026

查看EditsLog内容

hdfs oev -i /home/hadoop/hdfs/name/current/edits_0000000000000000001-0000000000000000006 -o /home/hadoop/editslogs.xml -p XML

启动阶段合并
启动阶段合并的作用就是:在启动时保证FSImage元数据是最新的。
EditsLog存储的是日志信息,在Namenode启动后所有对目录结构的增加,删除,修改等操作都会记录到EditsLog文件中,并不会同步的记录在FSImage中。
而当Namenode结点关闭的时候,也不会将FSImage与EditsLog文件进行合并,这个合并的过程实际上是发生在Namenode启动的过程中。

  • 将fsimage文件加载到内存
  • 将edits文件也加载到内存
  • 在内存将fsimage和edits文件进行合并
  • 将合并后的文件写入fsimage
  • 清空原先edits中的数据,使用一个空的edits文件进行正常操作

    SecondaryNameNode
    问题:如果NameNode在启动后发生的改变过多,势必会导致EditsLog文件变得非常大,那么在下一次NameNode启动的过程中,读取了FSImage文件后,会用这个无比巨大的EditsLog文件进行“启动阶段合并”,从而导致Hadoop启动时间过长。
    SecondaryNameNode的作用就是:根据规则被唤醒,然后进行FSImage文件与EditsLog文件的合并,防止editslog文件过大,从而导致NameNode启动时间过长。
    为什么要合并?
    防止editslog文件过大,导致NameNode启动时间过长。
    FSImage是一个元数据文件,并且保存着Hadoop的整个目录树结构。随着时间的推移,元数据也会越来越庞大,FSImage文件也会越来越大,而FSImage的目录树也越来越复杂,如果直接对FSImage进行修改,势必会影响到效率。所以先把操作记录到EditsLog日志文件中,而后在checkpoint点(合并了多长时间或者事务数达到多少条)上进行合并。
    Checkpoint合并
  • 将hdfs更新记录写入一个新的文件——edits.new。
  • 将fsimage和editlog通过http协议发送至secondary namenode。
  • 将fsimage与editlog合并,生成一个新的文件 —— fsimage.ckpt。因为比较耗时,所以在secondary namenode中进行。
  • 将生成的fsimage.ckpt通过http协议发送至namenode。
  • 重命名fsimage.ckpt为fsimage,edits.new为edits。
  • 等待下一次checkpoint触发SecondaryNameNode进行工作,一直这样循环操作。
    合并参数
    checkpoint合并触发的条件可以在core-site.xml文件中进行配置
fs.checkpoint.period       检查点间隔时间          单位秒。默认值3600,当距离上次检查点执行超过该时间后启动检查点
fs.checkpoint.size         检查点文件大小          单位字节。默认值67108864,当edits文件超过该大小后,启动检查点

DataNode
DataNode在HDFS中真正存储数据。相关的数据会有两个文件,如:

-rw-rw-r-- 1 hadoop hadoop    157136 2020/01/29 16:06 blk_1073742069
-rw-rw-r-- 1 hadoop hadoop      1235 2020/01/29 16:06 blk_1073742069_1245.meta

blk_1073742069 中存储的是具体的数据。
blk_1073742069_1245.meta 是一个CRC校验文件,其中保存数据块的校验信息。

Hadoop四种机制

  • 机架感知
  • 负载均衡
  • 心跳机制
  • 安全机制

Hadoop两大功能

数据块(Block)
128m 1m
文件大小===》split(128m)===》Map Task 10TB 1m 多少Task 128m 80000
寻道时间
写入

  • 先和NameNode沟通,在元数据里面创建一个新文件,不关联块。
  • 检查文件:是否存在、操作权限。创建一个块。
  • FSDataOutputStream,和client建立连接开始写入文件。
  • 读取

HDFS常用命令

文件命令
列出HDFS下的文件

$ hdfs dfs -ls

# 显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息
$ hdfs dfs -ls -h payment.txt

# 查看目录中的文件
$ hdfs dfs -ls /home

上传文件
将hadoop目录下的payment文件上传到HDFS:

$ hdfs dfs -put payment.txt /home

文件被复制到本地系统中
将HDFS中的in文件复制到本地系统并命名为getin:

$ hdfs dfs -get in getin

删除文档
删除HDFS下名为home的目录:

$ hdfs dfs -rm -r /home

查看文件
查看HDFS下payment.txt文件中的内容:

$ hdfs dfs -cat /home/payment.txt

**建立目录 **

$ hdfs dfs -mkdir /user/hadoop/examples

复制文件

$ hdfs dfs -copyFromLocal 源路径 路径

管理命令
缓存
当我们需要频繁访问HDFS中的热点公共资源文件和短期临时的热点数据文件时,可以使用Hadoop缓存。比如:需要频繁访问的报表数据、公共资源(如:jar依赖、计算包等)。
①建立缓存池:

# 建立缓存池
$ hdfs cacheadmin -addPool cache

# 查看缓存是状态
$ hdfs cacheadmin -listPools -stats cache

②把文件或者目录添加到缓存池中

# 把文件添加到缓存池中
$ hdfs cacheadmin -addDirective -path /home/payment.txt -pool cache

# 查看缓存
$ hdfs cacheadmin -listDirectives

存储策略
①存储类型

  • DISK:普通磁盘
  • SSD:SSD盘
  • RAM_DISK:内存盘
  • ARCHIVE:归档/压缩,不是实际的磁盘类型,而是数据被压缩存储。
    ②存储策略
  • HOT:存储和计算都热。如果是热块,那么复制的目标也是DISK(普通的磁盘)。
  • COLD:用于有限计算的存储。 数据不再使用,或者需要归档的数据被移动到冷存储。如果数据块是冷的,则复制使用ARCHIVE.
  • WARM:半冷半热。warm块的复制内容,部分放置在DISK,其它的在ARCHIVE.
  • All_SSD: 所有数据存储在SSD.
  • One_SSD: 一个复制在SSD,其它的在DISK.
  • LAZY_PERSIST:只针对只有一个复制的数据块,它们被放在RAM_DISK,之后会被写入DISK。
# 设置一个文件为HOT存储策略
$ hdfs storagepolicies -setStoragePolicy -path /home/twilight.txt -policy HOT

# 查看某个文件的存储策略
$ hdfs storagepolicies -getStoragePolicy -path /home/twilight.txt

WebHDFS和HttpFS

WebHDFS
HortonWorks,捐赠给Apache Hadoop。建议使用这个。
http://ip:50070/webhdfs/v1/<path>?op=OPERATIONS_KEY

curl -i -L "http://192.168.56.105:50070/webhdfs/v1/home/payment.txt?op=OPEN"

HttpFS
Cloudera,捐赠给Apache Hadoop
http://ip:14000/webhdfs/v1/<path>?op=OPERATIONS_KEY

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

推荐阅读更多精彩内容