什么是" HDFS缺乏随机读写访问"?

时间:2014-07-11 21:31:42

标签: hadoop hbase hdfs

任何文件系统都应提供API来访问其文件和目录等。

那么,“HDFS缺少随机读写访问权”是什么意思?

所以,我们应该使用HBase。

2 个答案:

答案 0 :(得分:22)

默认HDFS块大小为64 MB。所以你不能在这里读一行,一行。您总是读写64 MB块。当您想要处理整个文件时,这很好。但它使HDFS不适合某些应用程序,例如你想使用索引来查找小记录。

另一方面,HBase非常适合这种情况。如果你想阅读一个小记录,你只会阅读那个小记录。

HBase使用HDFS作为其后备存储。那么它如何提供有效的基于记录的访问?

HBase将表从HDFS加载到内存或本地磁盘,因此大多数读取都不会转到HDFS。突变首先存储在仅附加日志中。当期刊变得庞大时,它会被纳入"附录"表。如果有太多的附录表,它们都会被压缩成一个全新的主表。对于读取,首先咨询期刊,然后是附录表,最后是主表。这个系统意味着当我们有一个完整的HDFS块改变时,我们只写一个完整的HDFS块。

这种方法的更全面的描述在Bigtable whitepaper

答案 1 :(得分:2)

在典型的数据库中,数据以RDBMS格式存储在表中,您可以读取或写入任何表中的任何记录,而无需知道其他记录中的内容。这称为随机书写/阅读。

但是在HDFS中数据以文件格式(通常)而不是表格格式存储。因此,如果您正在阅读/编写它并不像RDBMS那样简单。