作业配置与提交 1.hadoop配置原理 包括系统默认配置和管理员自定义配置。 系统默认为:core-default.xml,hdfs-default.xml,mapred-default.xml,它们包含了所有可配置属性的默认值。 管理员自定义:core-site.xml,hdfs-site.xml,mapred-site.xml,主要用于定义
包括系统默认配置和管理员自定义配置。
系统默认为:core-default.xml,hdfs-default.xml,mapred-default.xml,它们包含了所有可配置属性的默认值。
管理员自定义:core-site.xml,hdfs-site.xml,mapred-site.xml,主要用于定义一些新的配置属性或者覆盖系统默认配置文件中的属性。
每个配置属性包括4个配置参数:name,value,description,final及变量扩展功能。
final参数:如果管理员不想让用户程序修改某些属性的属性值,可将该属性的final参数设置为true
变量扩展:当读取配置文件时,如果某个属性存在对其他属性的引用,则hadoop首先查找引用的属性是否为以下2种:
1)其他已经定义的属性
2)java中system.getProperties函数可获取属性。
例如
每个作业由2部分组成:应用程序和作业配置。
作业配置包括2部分:环境配置和用户自定义配置。
环境配置为:mapred-site.xml,mapred-default.xml
用户自定义配置:用户自己根据作业特点个性化定制而成,比如用户可设置作业名称,以及MR Task数量等。
示例:
Configuration conf = new Configuration();
Job job = new Job(conf,”SWTest”);
job.setJarByClass(MyJob.class);
job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);
job.waitForCompletion(true);
主要用于描述输入数据的格式。提供2种功能
按照某个策略将输入数据切分成若干个split,以便确定Map Task个数及对应的split
为Mapper提供输入数据:给定某个split,能将其解析成一个个key/value对
InputSplit[] getSplits(JobConf job, int numSplits) throws IOException;RecordReader getRecordReader(InputSplit split,???????????????????????????????????? JobConf job, ???????????????????????????????????? Reporter reporter) throws IOException;
主要是为了进程间通信。作业被提交到JobTracker之前,Client会调用作业InputFormat中的getSplits函数,并将得到的InputSplit序列化到文件。
当作业提交到JobTracker端对作业初始化时,可直接读取该文件,解析出所有的InputSplit,并创建地应的MapTask。
getRecord方法返回一个RecordReader对象,该对象可将输入的InputSplit解析成若干个key/value对,MapReduce框架在Map Task执行过程中,会不断调用RecordReader
对象中的方法,迭代获取key/value对并交给mapper进行处理。
K key = input.createKey();V value = input.createValue();while(input.next(key,value)){//调用mapper()}input.close()
原文地址:深入解析MapReduce架构设计与实现原理–读书笔记(2)作业配置及InputFormat, 感谢原作者分享。