我正在阅读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映射减少作业的替代方案。