1) 低延迟
HDFS 不适用于实时查询这种对延迟要求高的场景,例如:股票实盘。往往应对低延迟数据访问场景需要通过数据库访问索引的方案来解决,Hadoop 生态圈中的Hbase 具有这种随机读、低延迟等特点。
2) 大量小文件
对于 Hadoop 系统,小文件通常定义为远小于 HDFS 的 block size(默认 64MB)的文件,由于每个文件都会产生各自的 MetaData 元数据,Hadoop 通过 Namenode来存储这些信息,若小文件过多,容易导致 Namenode 存储出现瓶颈。
3) 多用户更新
为了保证并发性,HDFS 需要一次写入多次读取,目前不支持多用户写入,若要修改,也是通过追加的方式添加到文件的末尾处,出现太多文件需要更新的情况,Hadoop是不支持的。针对有多人写入数据的场景,可以考虑采用 Hbase 的方案。
4) 结构化数据
HDFS 适合存储半结构化和非结构化数据,若有严格的结构化数据存储场景,也可以考虑采用 Hbase 的方案。
5) 数据量并不大
通常 Hadoop 适用于 TB、PB 数据,若待处理的数据只有几十 GB 的话,不建议使用 Hadoop,因为没有任何好处。