这个问题,以下几篇文章回答的很好了!
https://blog.youkuaiyun.com/qq_17043155/article/details/55107515
http://www.raincent.com/content-85-6647-1.html
https://wenda.so.com/q/1499212544211405?src=140
https://blog.youkuaiyun.com/chang_ge/article/details/52298064
https://blog.youkuaiyun.com/woshiwanxin102213/article/details/19990487
以下是我个人的一点总结:一、优点
(一)高可靠性。 元数据记录节点与数据块信息
(二)高扩展性。 存储与计算节点可以动态增添;部分框架可以按需替换
(三)高效性。 移动计算而非数据,适用于批处理
(四)高容错性。 数据自动备份,副本丢失后自动回复
(五)可以构建在廉价机器上;适合大规模数据存储与计算二、缺点
(一)不适合低延迟数据访问(实时性低)。
a) 比如毫秒级 MR计算框架大多中间数据走磁盘
b) 低延迟与高吞吐量 注重吞吐量,牺牲了实时性
(二)无法高效存储大量小文件。
a) 占用NameNode大量内存
b) 寻道时间超过读取时间
(三)不支持多用户写入及任意修改文件。
a) 一个文件只能有一个写者
b) 仅支持append
数据不支持随机读,只能从头到尾扫描