Hadoop Mapreduce可以实现的目标



我正在阅读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所取代。这是真的吗?

看看这篇文章,比较RDBMS和;Hadoop

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

2.RDBMS只能处理结构化数据不像Hadoop那样可以处理结构化、非结构化和半结构化数据。

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

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

HiveQL正在转换为一系列Map reduce作业 。在性能方面,HiveQL作业将比原始Map reduce作业慢。HiveQL不能像上面解释的那样处理所有类型的数据,因此它不能用java代码取代Map-reduce作业。

HiveQL将与其他语言的Map Reduce作业共存如果您希望将性能作为地图缩减作业的关键标准,则必须考虑将Java地图缩减作业作为备选方案。如果你正在为半结构化&非结构化数据,您必须考虑Hive QL映射减少作业的替代方案。

最新更新