MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
不擅长实时计算
不能在毫秒或秒级内返回结果
不擅长流式计算
流式计算的输入数据是动态的。MapReducer的输入数据是静态的,不能动态变化。
不擅长DAG(有向无环图)计算
多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。
一个完整的MapReducer程序在分布式运行时有三类实例进程:
Hadoop常用数据序列化类型

序列化 就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。
反序列化 就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。
Hadoop是一个集群。在集群上运行MapReduce任务时,Map阶段和Reduce阶段不一定在同一台机器上,可能需要跨网络传输。因此需要序列化。
Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输。所以,Hadoop自己开发了一套序列化机制(Writable)。
相当于YARN集群的客户端,用于提交整个程序到YARN集群,提交的是封装了MapReduce程序相关运行参数的job对象
上一篇:PyOpenGL安装
下一篇:1:uniapp路由跳转