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

2020-01-29  本文已影响0人  javap

知识要点:

基本概念

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文件系统的所有目录和文件的信息。

-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中。日志文件保护两种,一种是历史日志文件,另外一种是正在操作的日志文件。
②文件格式

-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启动的过程中。

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
寻道时间
写入

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

存储策略
①存储类型

# 设置一个文件为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

上一篇下一篇

猜你喜欢

热点阅读