问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何配置Hadoop守护进程的运行环境和运行参数

发布网友 发布时间:2022-04-24 05:15

我来回答

3个回答

懂视网 时间:2022-05-06 12:53

MR框架的其他组件可用内存也是可配置的。map和reduce任务的性能可以通过从影响操作并发和数据磁盘IO次数的角度来调试。监控针对单个任务而设置的文件系统计数器,尤其是具体到map输出到reduce的数据字节量,对调试影响任务运行性能都是非常有用的。

如果内存管理特性启用的话,用户可以选择性的覆盖一些默认配置,比如虚拟内存,RAM。下面是一些对任务有效的参数:

名称 类型 特点
mapred.task.maxvmem int 以字节为单位指定单个map或reduce任务的最大虚拟内存。如果任务超过该值就被kill
mapred.task.maxpmem int 以字节为单位指定单个map或reduce任务的最大RAM。这个值被调度器(Jobtracer)参考作为分配map educe任务的依据,避免让一个节点超RAM负载使用。

Map参数

map读出的一条记录将被序列化到一个buffer,元数据存储在元数据buffer中。如上面所说,当序列化buffer或者元数据buffer超出了设置的阙值,buffer中内容将被排序并在后台写入到磁盘,这个过程同时map持续输出记录行。如果buffer被写满就会发生一个spill过程,spill中map线程被阻塞。当map完成后,buffer中剩余记录写入磁盘并和在磁盘的按段存储的记录合并到一个文件中。减少spill次数可以缩短map时间,但是较大的buffer也会降低可用内存。

名称 类型 特点
io.sort.mb int 默认100。以MB为单位设置序列化和元数据buffer的大小。
io.sort.record.percent float 默认0.05。map记录序列化后数据元数据buffer所占总buffer百分比值。为了加速排序,除了序列化后本身尺寸外每条序列化后的记录需要16字节的元数据。io.sort.mb值被占用的百分比值超过设定值机会发生spill。对输出记录较少的map,值越高越可降低spill发生的次数。
io.sort.spill.percent float 默认0.80。元数据和序列化数据buffer空间阀值。当两者任何一个buffer空间达到该阀值,数据将被spill到磁盘。假设io.sort.record.percent=r, io.sort.mb=x,io.sort.spill.percent=q,那么在map线程spill之前最大处理的记录量为r*x*q*2^16。注意:较大的值可能降低spill的次数甚至避免合并,但是也会增加map被阻塞的几率。通过精确估计map的输出尺寸和减少spill次数可有效缩短map处理时间。

其他注意事项:

  • 如果spill阙值达到了,就会发生spill,记录收集将继续直到spill完成。例如io.sort.buffer.spill.percent设置为0.33,buffer剩余的部分被填满,spill发生,下一个spill将会包含所有收集的记录,或者是这个buffer的0.66部分,并且不会产生额外的spill过程。换句话说阙值像是定义的触发器,不会阻塞。
  • 大于序列化数据buffer的一条记录将首先触发一个spill,然后被spill到一个独立的文件中。没有配置参数来定义记录是否首先通过combiner。
  • Shuffle/Reduce参数

    如前面所说,每个reduce通过HTTP获取map输出后读入内存,并周期性合并这些输出到磁盘。如果map输出压缩打开的话,每个输出将会解压后读入内存。下面的配置参数影响reduce处理中的合并和内存分配过程。

    名称 类型 特点
    io.sort.factor int 默认值10。指定同时可合并的文件片段数目。参数限制了打开文件的数目,压缩解码器。如果文件数超过了该值,合并将分成多次。这个参数一般适用于map任务,大多数作业应该配置该项。
    mapred.inmem.merge.threshold int 在内存中合并到磁盘前读取已排序map输出文件的数目。类似前面说的spill阙值,该值不是一个用来分区的单元而是一个触发器。通常该值较高(1000),或者不启用(0),毕竟内存内合并比磁盘上合并成本更低。这个阙值只影响shuffle过程的内存合并。
    mapred.job.shuffle.merge.percent float 0.66。内存合并前供map输出享有的内存百分比值,超过该值就会合并数据到磁盘。过大的值会降低获取和合并的并行效率。相反如果输入恰好整个放到内存,则可以设置为1.0。该参数只影响shuffle过程的内存合并频率。
    mapred.job.shuffle.input.buffer.percent float 默认值0.7。shuffle过程中缓存map输出数据的内存占整个子jvm进程堆最大尺寸(通过mapred.child.java.opts设置)的百分比。该值可以视情况设置较高的值来存储大的较多的map输出。
    mapred.job.reduce.input.buffer.percent float 0.0 内存合并中从内存刷到磁盘,直到剩余的map输出占用的内存少于jvm最大堆的该百分比值。默认情况下,在reduce开始之前需要保证最大的内存可用,所有的内存中map输出都会被合并到磁盘。对内存不敏感的reduce任务,该值可以适当提高,来避免磁盘IO(一般不会有)。

    其他注意事项:

  • 如果map输出占用超过25%的内存去拷贝,这会直接被刷到磁盘而不会经过内存合并阶段。
  • 当combiner运行,前面所说的较高的合阙值和大的buffer不适用。因为在所有map输出都被取到之前合并就开始了,当spill发生时combiner处于运行状态。在一些实践中,用户可以通过合并输出使得磁盘spill足够小并可保证并行的spill和数据拉取来缩短reduce处理时间,而不是去不断的提高buffer尺寸。
  • 内存合并map输出并刷到磁盘时reduce过程开始,如果有多个输出片段spill到磁盘,或者至少有io.sort.factor个片段已经在磁盘上,那么中间合并过程是必须的,并且包含内存中处理map输出。
  • 子JVM重用

    可以通过指定mapred.job.reuse.jvm.num.tasks作业配置参数来启用jvm重用。默认是1,jvm不会被重用(每个jvm只处理1个任务)。如果设置为-1,那么一个jvm可以运行同一个作业的任意任务数目。用户可以通过JobConf.setNumTasksToExecutePerJvm(int)指定一个大于1的值。

    下面是作业执行时的配置参数:

    名称 类型 描述
    mapred.job.id string 表示jobid
    mapred.jar string job.jar在job路径下的位置
    job.local.dir string 作业共享路径
    mapred.tip.id string taskid
    mapred.task.id string task尝试任务id
    mapred.task.is.map boolean 是否是map任务
    mapred.task.partition int task在job中的id
    map.input.file string map输入文件路径
    map.input.start long map输入split开始偏移量
    map.input.length long map输入分片的字节数
    mapred.work.output.dir string 任务临时输出路径

    任务的标准输出和错误流日志由TaskTracker读入并写入${HADOOP LOGDIR}/userlogs路径。

    DistributedCache可以被用来发布map或者reduce用到的jar包、本地共享库。子JVM进程通常可使用java.library.path和LD LIBRARYPATH指定其自身的工作路径。缓存库可以通过 System.loadLibrary或者 System.load加载。关于使用distributed cache 加载共享库详细信息可以查看 Loading native libraries through DistributedCache。

    ?

    相关文章

  • Hadoop教程(二)
  • Hadoop教程(一)
  • 使用Hadoop和BIRT对海量数据进行可视化处理
  • 专为Mac本跟踪Hadoop任务的应用
  • Log4j 2.x架构
  • 为什么这段代码输出的是”Hello World”
  • 为Hbase建立高可用性多主节点
  • Log4j 2 介绍
  • 经典论文翻译导读之《Dremel: Interactive Analysis of WebScale Datasets》
  • MapReduce启蒙文献
  • 热心网友 时间:2022-05-06 10:01

    操作系统centos5.5 一个namenode 两个datanode Hadoop版本:hadoop-0.20.203.0 Eclipse版本:eclipse-java-helios-SR2-linux-gtk.tar.gz(使用3.7的版本总是崩溃,让人郁闷) 第一步:先启动hadoop守护进程

    热心网友 时间:2022-05-06 11:19

    优酷加速器 在优酷网看视频时候就会自动启动 当然如果设置开机启动 开机就会有
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    【推文】快穿无cp女主文 沈阳门市电费多少钱一度 沈阳 商场一度电多少钱 工业用电多少钱一度沈阳 沈阳商用一度电多少钱 沈阳商业用电电费多少钱一度 沈阳商电多少钱一度 大学专业【软件工程】后面括号中的【嵌入式培养】是什么意 软件工程实训培养目标 高级软件工程师培养目标 求解hadoop的文件夹被移动之后需要改哪些参数? hadoop的mapreduce常见算法案例有几种 hadoop运维的工作内容是什么? 如何构建最优化的Hadoop集群 比Spark快10倍的Hadoop3.0有哪些实用新特性 hadoop 作业为什么使用虚拟内存 如何提升Hadoop MapReduce性能 hadoop MapReduce 读取配置参数 如何对hadoop平台进行优化和维护 什么样的相机可以把腿拉长 oppo下载轻颜相机怎么没有长腿特效? 华为P30拍照和录像有自动拉长腿的功能吗? 什么相机软件拍照可以把腿拍的又细又长 撒子相机可以瘦腿 长腿 应用 vivo手机自带美颜软件可以长腿瘦身吗 ⅤiⅤ0s10相机在哪里有拉长腿功效 美图t9瘦身功能怎么用 有什么相机软件?可以把腿拉长显得比较瘦 网站都被移动屏蔽了怎么办 如何解决网吧屏蔽网站? Hadoop 请教学习顺序 提交作业给Hadoop集群怎么解决 hadoop某节点运行较慢,通过什么机制解决 如何让Hadoop结合R语言做大数据分析 LINCOLN是什么牌子的? Lin M是什么品牌 如何对XGBoost模型进行参数调优 描述一下hadoop中,有那些地方使用了缓存机制,分别有什么作用 Lincoln是什么车?介绍一下… 林肯是什么车 林肯牌的车的标志是什么样的 《逃家少奶奶》最新txt全集下载 请问林肯车是怎么样的 《逃家少奶奶》txt下载在线阅读全文,求百度网盘云资源 《逃家少奶奶》最新章节全文阅读免费下载百度网盘资源,谁有? 求《逃家少奶奶》全本txt完结小说,谢谢~ 求陈小错的《逃家少奶奶》全文 逃家少奶奶33,讲的是什么 谁有陈小错的《逃家少奶奶》全文啊. 逃家少奶奶已经完结了吗?