2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 深入解析MapReduce架构设计与实现原理–读书笔记(2)作业配置及In

深入解析MapReduce架构设计与实现原理–读书笔记(2)作业配置及In

时间:2019-03-06 07:45:02

相关推荐

深入解析MapReduce架构设计与实现原理–读书笔记(2)作业配置及In

数据库|mysql教程

深入,解析,MapReduce,架构,设计,实现,原理,读书

数据库-mysql教程

源码之家免费下载,ubuntu掩码配置失败,甲虫对战玩具爬虫,php 抽象类可以有构造函数么,推广seo技巧lzw

作业配置与提交 1.hadoop配置原理 包括系统默认配置和管理员自定义配置。 系统默认为:core-default.xml,hdfs-default.xml,mapred-default.xml,它们包含了所有可配置属性的默认值。 管理员自定义:core-site.xml,hdfs-site.xml,mapred-site.xml,主要用于定义

仿卡盟源码,vscode报错头文件,ubuntu保存jdk,tomcat启动了,sqlite3同步事务优化,学爬虫必须学c语言吗,php 插入视频,seo有效的长尾词,字体下载网站 源码,火车头网页采集器,html5 支付成功页面模板lzw

网页版超级玛丽源码,Ubuntu安装630显卡,tomcat 9下载安装,爬虫 发展趋势,php 下载大文件不稳定,seo外连接lzw

作业配置与提交

1.hadoop配置原理

包括系统默认配置和管理员自定义配置。

系统默认为: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函数可获取属性。

例如

hadoop.tmp.dir

/tmp/hadoop-${user.name}

2.MR配置与提交

每个作业由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);

InputFormat接口的设计与实现

主要用于描述输入数据的格式。提供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;

InputSplit特点:

1).逻辑分片

只是在逻辑上对输入数据进行分片,并不会在磁盘上将其切分成分片进行存储。InputSplit只记录分片的元数据:起始位置,长度以及所在的节点列表等。

核心算法:

文件切分算法和host选择算法。

1.1)文件切分算法

splitsize=max{minSize,min{globalSize,blockSize}}

globalSize根据用户期望的InputSplit数目计算 = totalSize/splitnum

minSize为InputSplit的最小值,由配置参数mapred.min.split.size确定

blockSize为文件在HDFS中存储的block大小

1.2)host选择算法

完成切分方案后,要确定每个InputSplit的元数据信息。文件,其实位置,长度及所在host列表。

hadoop按照本地性按照代价划分为三个等级node locality,rack locality,data center locality.

优先让空闲资源处理本节点上的数据,如果节点上没有可处理的数据,则处理同一个机架上的数据,最差情况是处理其他机架上的数据,但必须位于同一个数据中心。

虽然InputSplit对应的block可能位于多个节点上,但考虑到任务调度的效率,通常不会把所有节点加到InputSplit的host列表中,而是选择包含数据总量最大的前几个节点,以作为任务调度时判断任务是否具本地性的主要凭证。

首先,按照rack包含的数据狼对rack进行排序;在rack内部按照每个node包含的数量对node排序;最后取前N个node的host作为InputSplit的host列表。这里的N为block副本数。

注意:当使用基于FileInputFormat实现的InputFormat时,为了提高MapTask的数据本地性,应尽量使InputSplit大小与block大小相同。

2).可序列化

主要是为了进程间通信。作业被提交到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()

InputFormat

包括DBInputFormat,FileInputFormat,EmptyInputFormat

FileInputFormat

包括CombinFileInputFormat,NLineInputFormat,SquenceFileInputFormat,KeyValueTextInputFormat,TextInputFormat

SquenceFileInputFormat

包括SquenceFileAsBinaryInputFormat,SquenceFileAsTextInputFormat,SquenceFileInputFormat

原文地址:深入解析MapReduce架构设计与实现原理–读书笔记(2)作业配置及InputFormat, 感谢原作者分享。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。