前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《hadoop权威指南》笔记一:走进hdfs

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

原创
作者头像
皮皮熊
发布2019-07-30 01:32:25
9600
发布2019-07-30 01:32:25
举报

基于《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.基本命令

代码语言:txt
复制
# 查看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小步,在下一笔记详细介绍

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是hdfs
  • 二、hdfs不适合的几个场景
    • 1. hdfs不适合低时延的应用(几十毫秒)
      • 2.小文件不能过多
        • 3.不能多用户写入,任意修改文件
        • 三、hdfs基本信息
          • 1. namenode与datanode
            • 2.hdfs的块信息
              • hdfs的块为什么这么大?
            • 3.基本命令
            • 四、其他
              • 1.最佳分片大小?
                • 2.map任务将其输出写入本地磁盘而不是hdfs?
                  • 3.hdfs读取与写入流程?
                  相关产品与服务
                  对象存储
                  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档