Hadoop核心学习之MapReduce编程入门

2020-10-19 14:24:40 浏览数 (1)

在IT技术领域,大数据是热点,大数据技术也是热点,以Hadoop为例,作为主流的第一代大数据技术框架,可以说是入门必学。而学习Hadoop,通常从核心框架HDFS和MapReduce学起,今天我们就主要来讲讲Hadoop MapReduce编程入门。

MapReduce入门简介

MapReduce是Hadoop的核心框架之一,主要负责分布式并行计算。MapReduce 既是计算框架,也是编程模型,主要基于Java语言来编程,这也是为什么Hadoop学习要求要有一定的Java基础。

当然,在这几年的发展当中,MapReduce的计算性能受到诟病,取而代之受到重用的是Spark。但是作为初代计算框架,MapReduce的学习仍然是有必要的,也对于同样基于MapReduce计算模型的Spark学习,有很好的引入。

MapReduce编程入门

MapReduce运行过程,通常涉及到input、split、map、shuffle、reduce、output几个阶段,其中shuffle过程包括sort、copy、combine操作,reduce之前有时涉及二次排序。

MapReduce编程,主要有三种方式:

  • Hadoop streaming执行mapreduce
  • Hive执行mapreduce
  • Java MR编程

①Hadoop streaming执行MapReduce

优点:

可以用大多数语言开发;

代码量少,开发速度快;

方便本地调试。

不足:

只能通过参数控制MR框架,控制性较弱,比如定制partitioner、combiner;

支持的数据类型和数据结构有限,不适合做复杂处理,处理字符型较多;

②Hive执行MapReduce

将类SQL转换成MapReduce,定位于数据仓库。

优点:

开发速度快,易调试,易理解;

易于构建数据仓库模型;

内置函数功能齐全,比如rownumber等窗口函数;

可扩展性好,比如自定义存储格式、自定义函数UDF;

多接口,比如JDBC、Thrift、Rest等。

缺点:

不能用于复杂计算,比如涉及时序处理的数据;

可控制性较弱,比如partition、关联等操作。

③Java MR编程

用Java编写MR,可以说是最“原始”的一种方式,Java面向对象编程,设计模式成熟,通用性好,并且Java方面第三方类库非常丰富。

优点:

定制性强,比如定制partitioner、定制combiner等;

数据类型和数据结构丰富,队列、堆栈、自定义类等使用方便;

控制性非常高,包括MR运行过程的一些控制,Map端join等;

可以方便使用Hadoop组件类库中的类或工具,比如HDFS文件操作类等。

缺点:

相比Hive、Hadoop streaming或Pyspark,开发代码量较大,对开发环境要求高且不易调试;

通常每个操作都要写一个MR类;

不如Spark执行效率高。

关于Hadoop核心学习,MapReduce编程入门,以上就是今天的内容分享了。在大数据当中,Hadoop在基础架构上还是占据着重要的地位,而Hadoop MapReduce的学习,也仍有其意义所在,还是应该有相应的学习和掌握。

0 人点赞