《hadoop权威指南》笔记一:走进hdfs

基于​《hadoop权威指南》第四版

一、什么是hdfs

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。

  • HDFS是一个高度容错性的系统,适合部署在廉价的机器上。
  • HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
  • HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。

HDFS是Apache Hadoop Core项目的一部分。

二、hdfs不适合的几个场景

1. hdfs不适合低时延的应用(几十毫秒)

hdfs本身为高吞吐而优化!
思考: 为何基于hdfs实现的hbase可以满足低延迟的访问需求?

2.小文件不能过多

每个文件、目录、数据块的存储信息大约150字节。
所以一百万个文件,至少需要300MB的内存。当小文件过多时会直接压垮namdnode。

3.不能多用户写入,任意修改文件

不能多用户写入,任意修改文件。hdfs文件只支持单用户写入,仅append!这个和hdfs存储原理相关,后续的笔记会详细介绍。

hdfs最适合一次写入多次读取是最高效的访问模式

三、hdfs基本信息

1. namenode与datanode

  • namenode 可以理解为存储hdfs元数据信息的结点
  • datanode 可以理解为实际存储数据的结点

当然二者的关系不仅仅如此,会有一些复杂的设计在里面。

2.hdfs的块信息

hdfs默认块是128MB,但是当你数据是是10MB时,hdfs不会占用128MBMB(与普通文件系统不一样)。

hdfs的块为什么这么大?

为了最小化寻址开销。当然这个值也不能太大,map任务通常一次只能处理一个块中的数据。

3.基本命令

# 查看help
hadoop fs -help

# 上传文件
hadoop fs -copyFromLocal xxx hdfs://localhost/

# 下载文件
hadoop fs  -copyToLocal

# 建目录
hadoop fs -mkdir dir

# ls
hadoop fs  -ls .
# ls结果的第二列是副本数。其中目录的元数据存储在namenode无副本一说,所以值是 “-”

当客户端使用core-site.xml配置后,我们的命令就不需要使用冗长的URI

四、其他

1.最佳分片大小?

最佳分片大小与块大小相同,如果分片跨越两个数据块。hdfs基本不会同时存储着两个数据块,因此分片中的部分数据需要通过网络传输到map任务运行的节点。

2.map任务将其输出写入本地磁盘而不是hdfs?

中间数据存储在hdfs小题大做了(没必要多副本)。存储在本地磁盘还可以加速运算,减少网络传输。
reduce任务并不具备本地化的优势。

3.hdfs读取与写入流程?

都是6小步,在下一笔记详细介绍

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值