在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的学习,也仍有其意义所在,还是应该有相应的学习和掌握。