【问题标题】:hbase or text files as input to Map Reducehbase 或文本文件作为 Map Reduce 的输入
【发布时间】:2013-06-05 23:20:24
【问题描述】:

我想知道哪种配置会更快。好吧,我可以选择将几个文本文件作为 Map Reduce 的输入来处理,也可以选择从 HBase 获取输入。

出于我的目的,我需要阅读所有可用数据。

谢谢, 亚当

【问题讨论】:

    标签: mapreduce hbase


    【解决方案1】:

    如果您的文本文件存储在 HDFS 中,那么从那里读取数据将比 HBase 更快。这背后的原因是,当您从 HBase 读取数据时,它比 HDFS 做的更多,例如读取 KeyValues、返回最新行或指定的时间戳等。另一方面,当您从 HDFS 读取数据时,这只是一个问题打开该文件的阅读器并开始按顺序阅读。没有从一个地方跳转到另一个地方会导致读取延迟(这种跳转是允许 HBase 为您提供随机读/写访问的东西)。这就是 HBase 在这种处理环境中比 HDFS 慢几倍的原因。

    但这在批处理上下文中很有效(例如,作为 MapReduce 源或接收器)。当您需要对大型数据集中的少量数据进行低延迟访问时,HBase 是首选。

    希望这能回答问题。

    【讨论】:

    • 我对 hadoop 的了解是,文件存储在块 (HDFS) 中,这些块被分成一组行,这些行提供给 n 个映射器来完成这项工作!所以我认为使用文本文件而不是查询 HBase 来检索所有可用数据必须更快。我同意你的回答。它应该更快。
    • 似乎有点混乱。您提到的 HDFS 卡盘(称为块)与进入映射器的块(称为 InputSplits)不同。虽然块是数据的物理分割,但 InpUtSplits 只是根据您使用的 InputFormat 创建的逻辑分割。
    • 是的,我完全同意塔里克的观点,我可能还不够清楚。我不是经验丰富的 hadoop 用户。 InputSplit 默认逐行返回逻辑拆分的内容不是吗?
    • 没问题:)..正确。但这是 TextInputFormat 的行为。如果您使用其他一些 InputFormat,则拆分创建背后的标准可能会有所不同。例如 DBInputFormat。
    • 不客气 :)..如果您认为它回答了您的问题,您可能想要接受/投票。
    猜你喜欢
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多