如果我正确理解Hadoop生态系统,我可以从HDFS或HBase运行我的HBase作业源数据。假设前面的假设是正确的,我为什么要选择一个而另一个呢?使用HBase作为MR源是否有性能、可靠性、成本或易用性的好处?
我能找到的最好的一句话是:"HBase是在需要实时读写随机访问非常大的数据集时使用的Hadoop应用程序。“- this (2009) Hadoop:权威指南,第1版。
发布于 2010-09-23 13:29:06
使用HDFS上的直通式Hadoop /Reduce,您的输入和输出通常存储为平面文本文件或Hadoop SequenceFiles,它们只是串行化的对象流到磁盘。这些数据存储或多或少是不变的。这使得Hadoop适合于批处理任务。
HBase是一个成熟的数据库(尽管不是关系数据库),它使用HDFS作为存储。这意味着您可以在数据集中运行交互式查询和更新。
HBase的好处在于它能很好地处理Hadoop生态系统,因此如果您需要对大型数据集执行批处理以及交互、粒度、记录级别的操作,那么HBase将两者都做得很好。
发布于 2016-12-04 11:25:17
纸中发现了HDFS的一些相关限制(这是Google的一个开源的孪生体)。
关于目标用例,我们读到:
第三,大多数文件是通过附加新数据而不是覆盖现有数据而发生变异的。文件中的随机写入实际上是不存在的。..。鉴于对大型文件的这种访问模式,附加成为性能优化和原子性保证的重点。
因此:
..。我们放宽了GFS的一致性模型,大大简化了文件系统,而不给应用程序带来沉重的负担。我们还引入了原子追加操作,以便多个客户端可以并发地附加到文件中,而不需要在它们之间进行额外的同步。 记录附加会导致数据(“记录”)至少原子地附加一次,即使存在并发突变,.
如果我正确地阅读了文件,那么每个文件的几个副本(在HDFS意义上)并不一定完全相同。如果客户端只使用原子操作,则可以将每个文件视为记录的连接(每个记录来自其中的一个操作),但在某些副本中可能会出现重复,并且它们的顺序可能与副本不同。(虽然很明显,也有一些填充插入,所以它甚至没有那么干净-读报纸。)这取决于用户管理记录边界、唯一标识符、校验和等。
因此,这与我们在桌面机器上习惯的文件系统完全不一样。
请注意,HDFS对许多小文件没有好处,因为:
https://stackoverflow.com/questions/3774259
复制相似问题