热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hadoop专栏(一)———分布式文件系统HDFS

分布式文件系统HDFS简介两大核心技术:分布式存储分布式处理文件系统结构HDFS自身的局限性1:不适合低延迟数据访问2.无法高效存储大量小文件3.不

分布式文件系统HDFS简介

两大核心技术:
分布式存储
分布式处理
在这里插入图片描述

文件系统结构
在这里插入图片描述
HDFS自身的局限性
1:不适合低延迟数据访问
2.无法高效存储大量小文件
3.不支持多用户写入及任意修改文件

在这里插入图片描述
HDFS实现目标
在这里插入图片描述

HDFS相关概念

HDFS采用这种抽象的块的概念设计好处
在这里插入图片描述
元数据
在这里插入图片描述
为什么要这样设计
在这里插入图片描述
名称节点
在这里插入图片描述

在这里插入图片描述
FsImage
在这里插入图片描述

HDFS存储原理

由于采用的是低廉成本机器进行存储,所以会不断的出故障。
基于这种情况,就必须要冗余数据,保存

冗余存储这种设计的好处:
01.加快数据传输速度
02.很容易检查数据错误
03保存数据可靠性
块拿到手后如何进行分布式存储:
第一副本:优先放在磁盘不太满,CPU不太忙的节点
第二副本:放在和第一个副本不同的节点
第三副本:放在第一副本相同的节点的机架上
在这里插入图片描述
数据读取
HDFS提供一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID
当客户端读取数据时,从名称节点获取数据块不同副本的存储位置列表,列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端对应的机架ID相对应的优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据。
数据的错误和恢复
1.名称节点出错
FsImage
EditLog
在这里插入图片描述

2.数据节点出错
(1)如何判断出错
数据节点会定期向名称节点发送信息
在这里插入图片描述

3.数据出现错误
(1)如何判断出错
校验码校验,客户端每写一个文件,就会为这个文件写一个校验码,保存在同一个文件下
校验不一致,则说明数据错误和恢复,进行冗余的复制
在这里插入图片描述

HDFS读取过程

pubic static void main(String[] args){try{Configuration conf=new Configuration();FileSystem fs=FileSystem.get(conf);Path filename=new Path("hdfs://localhost:9000/user/hadoop/test.txt");FSDataInputStream is=fs.open(filename);BufferdReader d =new BufferedReader(new InputStreamReader(is));String context=d.readLine();//读取文件一行System.out.println(content);d.close();//关闭文件fs.clpse();//关闭hdfs}catch(Exception e){e.printStackTrace();}
}

FileSystem

在这里插入图片描述

在这里插入图片描述
第一步:打开文件

FileSystem fs=FileSystem.get(conf);

第二步:获取数据块信息

FileSystem fs=FileSystem.get(conf);

第三步:读取信息

Path filename=new Path("hdfs://localhost:9000/user/hadoop/test.txt");

第四步:读取数据

FSDataInputStream is=fs.open(filename);

第五步:获取数据块信息
通过ClientProtocal.getBlockLocations()查找下一个数据块

BufferdReader d =new BufferedReader(new InputStreamReader(is));

第六步:读取数据

String context=d.readLine();//读取文件一行

第七步:关闭文件

d.close();//关闭文件
fs.clpse();//关闭hdfs

HDFS写数据过程

在这里插入图片描述
第一步:创建文件请求
第二步:创建文件元数据
第三步:写入数据
第四步:写入数据包
第五步:接受确认包
第六步:关闭文件
第七步:写操作完成

HDFS编程实践

HDFS的基本编程方法
在这里插入图片描述
Hadoop中常用的三种命令
在这里插入图片描述
hadoop fs的三个常用指令
在这里插入图片描述
注意本地文件与分布式文件是不同的
在这里插入图片描述
除了使用命令来控制,还可以使用网页来管理文件
在这里插入图片描述
利用JavaApi和HDFS交互
在这里插入图片描述
编写代码
在这里插入图片描述


推荐阅读
author-avatar
shao4224
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有