【问题标题】:What Hadoop Mapreduce can achieve?Hadoop Mapreduce 可以实现什么?
【发布时间】:2015-11-12 22:20:04
【问题描述】:

我正在阅读 Hadoop mapreduce 教程,并得出以下浅薄的理解。谁能帮忙确认一下我的理解是否正确?

Mapreduce 是一种聚合数据的方式

  • 在分布式环境中
  • 在非常大的文件中包含非结构化数据
  • 使用 Java、Python 等

产生类似的结果,就像在 RDBMS 中使用 SQL 聚合函数可以完成的那样

select count, sum, max, min, avg, k2 
  from input_file
 group by k2
  • map() 方法基本上以水平数据 v1 为中心,即从 将输入文件分成垂直行,每一行都有一个字符串键 和一个数值。
  • 分组将发生在洗牌和分区阶段 数据流。
  • reduce() 方法将负责计算/聚合数据。

Mapreduce 作业可以组合/嵌套,就像 SQL 语句可以嵌套以产生复杂的聚合输出一样。

对吗?

在 Hadoop 之上使用 Hive,MR 代码将由 HiveQL 流程引擎生成。 因此从编码的角度来看,使用 Java 的 MR 编码将逐渐被高级 HiveQL 所取代。 这是真的吗?

【问题讨论】:

    标签: hadoop hive hbase


    【解决方案1】:

    查看这篇文章以比较 RDBMS 和 Hadoop

    1.与 RDBMS 不同,Hadoop 可以处理 Peta 字节的数据,这些数据使用商用硬件分布在数千个节点上。 Map reduce算法的效率取决于数据处理过程中的数据局部性。

    2.RDBMS 只能处理结构化数据,而 Hadoop 可以处理结构化、非结构化和半结构化数据。

    您对聚合、分组和分区的理解是正确的。

    您提供的示例仅用于处理结构化数据。

    HiveQL 正在转换为一系列 Map reduce 作业。在性能方面,与原始 Map reduce 作业相比,HiveQL 作业会更慢。 HiveQL 无法处理上述所有类型的数据,因此它无法用 java 代码替换 Map reduce 作业。

    HiveQL 将与其他语言的 Map Reduce 作业共存。 如果您将性能作为 map reduce 作业的关键标准,您必须考虑 Java Map Reduce 作业作为替代方案。如果您正在为半结构化和非结构化数据寻找 Map reduce 作业,则必须考虑 Hive QL map reduce 作业的替代方案。

    【讨论】:

    • 拉文德拉,谢谢你的回答。关于性能的好点。
    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多