基于《hadoop权威指南》第四版
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。
HDFS是Apache Hadoop Core项目的一部分。
hdfs本身为高吞吐而优化!
思考: 为何基于hdfs实现的hbase可以满足低延迟的访问需求?
每个文件、目录、数据块的存储信息大约150字节。
所以一百万个文件,至少需要300MB的内存。当小文件过多时会直接压垮namdnode。
不能多用户写入,任意修改文件。hdfs文件只支持单用户写入,仅append!这个和hdfs存储原理相关,后续的笔记会详细介绍。
hdfs最适合一次写入多次读取是最高效的访问模式
当然二者的关系不仅仅如此,会有一些复杂的设计在里面。
hdfs默认块是128MB,但是当你数据是是10MB时,hdfs不会占用128MBMB(与普通文件系统不一样)。
为了最小化寻址开销。当然这个值也不能太大,map任务通常一次只能处理一个块中的数据。
# 查看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
最佳分片大小与块大小相同,如果分片跨越两个数据块。hdfs基本不会同时存储着两个数据块,因此分片中的部分数据需要通过网络传输到map任务运行的节点。
中间数据存储在hdfs小题大做了(没必要多副本)。存储在本地磁盘还可以加速运算,减少网络传输。
reduce任务并不具备本地化的优势。
都是6小步,在下一笔记详细介绍
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。