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

分布式文件系统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交互
在这里插入图片描述
编写代码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值