【问题标题】:How to choose Hadoop tools for faster performance如何选择 Hadoop 工具以获得更快的性能
【发布时间】:2016-10-26 18:01:45
【问题描述】:

我对决定解决我的问题的技术和方法感到困惑。

我有 5000 个测试文件,其中包含从 RDBMS 生成的大约 4TB 数据,准备所有 5k 文本文件需要大约 4 天的时间。为了解决这个时间问题,我正在考虑移动我所有的 5k将文本文件数据导入 Hadoop 系统,以便从那里更快地读取数据并更快地生成文本文件。

我必须在数据增加后第一次执行此活动,但每个月我必须生成 5k 个文本文件。

通常我必须进行全表扫描,并且可能必须执行一些连接才能准备 5 K 文件。

任何人都可以建议我应该为这种情况考虑哪种工具。 MapReduce 和 HBase 或 HIVE 表或其他东西。

【问题讨论】:

  • 全表扫描,使用HIVE。

标签: hadoop mapreduce hive hbase


【解决方案1】:

有点不清楚您要做什么,因为您想将文本文件移动到 Hadoop,然后生成文本文件?我将尝试回答一些需要考虑的问题。

您采用的方法和使用的技术取决于几个因素,例如您希望如何使用数据: 将所有数据导出到另一个系统?做分析?对一小部分数据进行随机访问读取吗?或者只是出于法律要求将其存档?

导入数据的一些选项:

  1. 如果输入数据已经是文本文件并且它们具有明确定义的结构(例如分隔),那么您可以将它们直接移动到 HDFS 并创建一个 Hive 外部表以在需要时读取它们。这应该比其他方法更快实施。
  2. 如果输入是文本文件,但结构难以使用 Hive QL 处理,请考虑使用 Spark 导入、重新格式化和导出数据。然后,如果您想使用来自 Hive 的数据,则可以将数据作为分隔文件存储在 HDFS 上,或者您可以将其加载到 HBase 中。
  3. 如果输入数据来自 RDMS 并且您可以访问 RDMS:可以使用 Hive 或 Spark - 查看 Spark JDBC。如果您想转换数据,Hive 会更简单,但灵活性较低。可以在 Hive 中使用连接添加简单的维度信息。如果您的数据不容易加入,但编写起来更复杂,Spark 代码会提供更高的灵活性。 Spark 还可以处理实时流式传输,这在您的源生成流式数据时非常有用。
  4. 要对 Hive 中可能难以完成的数据进行复杂的转换,或者需要多次传递数据(慢),请考虑使用 Spark,它会进行内存处理。 Spark 可以快速处理数据——添加维度和格式化数据既快速又灵活。缺点是您需要开发和维护自定义代码来执行此操作,例如在 Java、Python 或 Scala 中。转换后,如果您想从 Hive 访问数据,可以将数据作为分隔文件写入 HDFS。或者,如果您想快速、随机地访问数据,请加载到 HBase。
  5. 如果您想从 RDMS 中提取并且提取逻辑相当简单(例如基于 Updated_date 列的提取),则可以选择 Sqoop。 Sqoop 不是很可定制,所以比这更复杂的事情,您应该考虑其他选项

使用数据的一些选项:

  1. Hive 为您提供了一种类似 SQL 的语言,如果您的团队或最终用户熟悉 SQL,它可能更易于使用。 Hive 可以进行连接、汇总等。您可以使用 Oozie 安排这些每天/每周/每月运行。请注意,Hive 在集群上执行 MapReduce 作业,这就像在每个节点的磁盘上运行的“批处理”。不适合快速交互式查询,但适合一次处理大量数据。在我看来,您可能想要进行类似批处理的处理。您还可以授予分析师用户访问 Hive 的权限,以便对您定义的表进行分析。最后,您可以使用 ODBC 从 Excel 连接到 Hive,这取决于您的用例,非常有用。
  2. HBase 是快速、随机访问海量数据的好选择。例如,从数百万客户中查找一个客户的信息。但是,跨 HBase 表进行分析不太理想,因为 HBase 不会像 Hive 那样有效地进行全表扫描。
  3. 混合选项:如果您想偶尔进行批量查询并通过 HBase 进行随机访问,您可以将数据存储在 HBase 中并创建一个 Hive 外部表。由于使用 HBase 扫描,Hive 查询通常比使用分隔文件而不是 HBase 时要慢。
  4. 如果您不想将查找信息添加到每条记录,并且不希望使用 Hive,因为您需要随机访问,请考虑使用 Storm DRPC 在数据时动态添加维度被要求。这适用于对数据的随机访问,因为在 HDFS 中为每条记录存储所有维度信息的效率较低。比使用 Hive 更复杂、更灵活。

【讨论】:

  • 感谢您的详细解释。我已正确分隔 5K 文本文件。此类文件的大小为 4TB。我决定去 HBase 批量上传。HBase 是因为稍后我必须进行更新和删除也批量是一次性工作。然后将 HBase 与 HIVE 集成,这样我就可以执行连接和全表扫描。
  • 如果文件被分隔,您可以将它们移动到 HDFS 并在它们之上创建 Hive 外部视图。这将比 HBase 批量加载更快、更简单 - 执行扫描和连接也更快、更简单。
  • 我有分隔数据,但我也有增量数据,这些数据将以 xml 文件的形式出现。HIVE 也能够处理增量数据?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多