mapreduce的运行模式有两种:
1.mr程序的分布式运行:必须在yarn平台上
核心特点:
整个运行流程由MapAppMaster控制
每一个task(maptask,reducetask)以及MapAppMaster都以独立的进程运行在nodemanager所提供的容器中执行。
2.mr程序的本地运行:本地以单线程多线程的方式进行
核心特点:
整个运行流程有localJobRunner控制,每一个task都以线程的方式执行。
决定mr程序是以分布式还是以本地模式运行的关键点:
JobClient客户端程序的参数:
name: mapreduce.framework.name
value: local/yarn
其参数可以在jobclient代码中设置,也可以在jobclient所运行的机器的hadoop配置文件(mapred-site.xml)中配置。
注意:如果以分布式模式运行mr,则你所访问的文件系统一定要是HDFS!!!(参数: fs.defaultFS = hdfs://....)
如果以本地模式运行mr,则你所访问的文件系统可以是HDFS,也可以是本地文件系统;
本地模式运行可以在windows系统上(需要将windows本地库的bin目录配置到环境变量PATH中),也可以在linux系统上;