任何文件系统都应提供API来访问其文件和目录等。
那么,“HDFS缺少随机读写访问权”是什么意思?
所以,我们应该使用HBase。
答案 0 :(得分:22)
默认HDFS块大小为64 MB。所以你不能在这里读一行,一行。您总是读写64 MB块。当您想要处理整个文件时,这很好。但它使HDFS不适合某些应用程序,例如你想使用索引来查找小记录。
另一方面,HBase非常适合这种情况。如果你想阅读一个小记录,你只会阅读那个小记录。HBase使用HDFS作为其后备存储。那么它如何提供有效的基于记录的访问?
HBase将表从HDFS加载到内存或本地磁盘,因此大多数读取都不会转到HDFS。突变首先存储在仅附加日志中。当期刊变得庞大时,它会被纳入"附录"表。如果有太多的附录表,它们都会被压缩成一个全新的主表。对于读取,首先咨询期刊,然后是附录表,最后是主表。这个系统意味着当我们有一个完整的HDFS块改变时,我们只写一个完整的HDFS块。
这种方法的更全面的描述在Bigtable whitepaper。
答案 1 :(得分:2)
在典型的数据库中,数据以RDBMS格式存储在表中,您可以读取或写入任何表中的任何记录,而无需知道其他记录中的内容。这称为随机书写/阅读。
但是在HDFS中数据以文件格式(通常)而不是表格格式存储。因此,如果您正在阅读/编写它并不像RDBMS那样简单。