Hadoop Mapreduce可以实现什么?

时间:2015-11-12 22:20:05

标签: hadoop hive hbase

我正在阅读Hadoop mapreduce教程并提出以下浅层理解。任何人都可以帮助确认我的理解是否正确吗?

Mapreduce是一种聚合数据的方法

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

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

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

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

这是对的吗?

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

1 个答案:

答案 0 :(得分:1)

看一下这篇文章,以便比较RDBMS& Hadoop

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

2. RDBMS只能处理结构化数据 ,这与Hadoop不同,Hadoop可以处理结构化,非结构化和半结构化数据。

您对汇总,分组和分区的理解是正确的。

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

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

HiveQL将与其他语言的Map Reduce作业共存。 如果您正在寻找性能作为地图缩减作业的关键标准 ,则必须考虑使用Java Map Reduce作业。如果您正在为半结构化的& amp;在非结构化数据中,您必须考虑Hive QL map减少作业的替代方案。