北风网cloudera5hadoop高阶管理及调优课程cdh5hadoop20安全16思路课件_第1页
北风网cloudera5hadoop高阶管理及调优课程cdh5hadoop20安全16思路课件_第2页
北风网cloudera5hadoop高阶管理及调优课程cdh5hadoop20安全16思路课件_第3页
北风网cloudera5hadoop高阶管理及调优课程cdh5hadoop20安全16思路课件_第4页
北风网cloudera5hadoop高阶管理及调优课程cdh5hadoop20安全16思路课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Hadoop2.0高阶实战课程CDHHadoop5.3讲师:迪伦(北风网版权所有)Hadoop调优调优思路应用程序优化

优化MapReduce程序系统实现优化

从Linux系统以及Hadoop实现机制的角度优化Hadoop参数调优

应用程序优化避免不必要的reduce任务外部文件引入为job添加一个Combiner根据处理数据特征使用最适合和简洁的Writable类型重用Writable类型使用StringBuffer而不是String重用Writable类型低效的写法高效的写法publicvoidmap(...){…for(Stringword:words){output.collect(newText(word),newIntWritable(1));}}classMyMapper…{TextwordText=newText();IntWritableone=newIntWritable(1);publicvoidmap(...){for(Stringword:words){wordText.set(word);output.collect(wordText,one);}}}系统实现优化Linux调优分区规划net.core.somaxconn参数

对应hadoop的core-site.xml中的ipc.server.listen.queue.size参数关闭swapHadoop实现机制调优机架感知策略作业调度策略修改源代码机架感知策略实现集群根据主机的位置分布块管理员提供一个脚本,里面记录了每个节点在哪个机架机架ID的格式:/datacenter/rack比如:/datactrl/rack40脚本可以使用普通文件、数据库等等脚本名通过core-site.xml中的参数来指定

如果为空(默认),Hadoop为所有节点返回/default-rack推荐主机命名方式:r1m12Hadoop参数调优HDFS调优NamenodeDatanode集中化缓存管理YARN调优Mapreduce调优Namenode调优属性名称默认值描述node.handler.count(hdfs-site.xml)10工作线程池大小,设置该值的一般原则是将其设置为集群大小的自然对数乘以20,即20ln(N)dfs.hosts(mapred-site.xml)

通过一个含有DataNode主机名列表的文件,来确认允许连接并加入集群的DataNodeDatanode调优属性名称默认值描述dfs.datanode.failed.volumes.tolerated(hdfs-site.xml)0定义整个DataNode声明失败前允许多少个硬盘出现故障dfs.datanode.du.reserved(hdfs-site.xml)0定义了每个dfs.data.dir所定义的硬盘空间需要保留的大小。建议每个硬盘都为map任务保留最少10GB的空间dfs.datanode.max.locked.memory(hdfs-site.xml)0决定了一个DataNode将要用来被做HDFS缓存的内存的最大值io.file.buffer.size(core-site.xml)4KBSequencefile在读写时可以使用缓存的大小,一般设为64K集中化缓存管理用户指定要缓存的HDFS路径NN会和保存着所需块数据的所有DN通信指导DN把块数据缓存在off-heap缓存中优势可以阻止频繁使用的数据被从内存中清除把任务和缓存块副本放在一个位置上可以提高读操作的性能当块已经被DataNode缓存时,客户端就可以使用一个新的更高效的零拷贝读操作API提高整个集群的内存使用率使用场景对于重复访问的文件很有用对于混合负载进行优先级管理架构架构NameNode负责协调集群中所有DataNode的off-heap堆外缓存NameNode查询自身的缓存指令集来确定应该缓存哪个路径NameNode周期性地重复扫描命名空间和活跃的缓存指令以确定需要缓存或不缓存哪个块,并向DataNode分配缓存任务缓存管理及缓存池命令hdfscacheadmin命令接口缓存池命令addPoolmodifyPoolremovePoollistPools缓存管理命令addDirectiveremoveDirectiveremoveDirectiveslistDirectives缓存参数配置属性名称默认值描述dfs.datanode.max.locked.memory0DataNode的内存中缓存块副本要用的内存量。DataNode的最大锁定内存软限制ulimit(RLIMIT_MEMLOCK)必须至少设为该值。

否则,DataNode在启动时会终止。默认值为0,表示禁止内存缓存。node.list.cache.directives.num.responses100该参数控制NameNode在响应listDirectivesRPC命令时通过wire发送的缓存指令数。node.list.cache.pools.num.responses100该参数控制NameNode在响应listDirectivesRPC命令时通过wire发送的缓存池数。erval.ms30000两次子路径缓存重复扫描的时间间隔,单位毫秒。erval.ms30000该参数控制NameNode重复发送DNA_CACHE或者DNA_UNCACHE命令的频率。缓存参数配置属性名称默认值描述dfs.datanode.fsdatasetcache.max.threads.per.volume4DataNode上缓存新数据时每个卷要用的最大线程数。

这些线程要消耗I/O和CPU。ervalMsec10000决定两次缓存上报动作的时间间隔,单位毫秒。超过这个时间后,DataNode会向NameNode发送其缓存状态的完整报告。dfs.datanode.cache.revocation.timeout.ms900000该参数控制DataNode等待一个正在执行无校验读操作的客户端发送一个副本要花多少时间。dfs.datanode.cache.revocation.polling.ms500DataNode需要多长时间轮询一次客户端是否停止使用DataNode不想缓存的副本。YARN调优资源分配:Slave节点配置资源分配:Container的内存需求ContainerHeapSize配置资源分配和进程大小属性内存监控使YARN跟操作系统资源分配一致资源分配:Slave节点配置属性名称默认值描述yarn.nodemanager.resource.memory-mb(yarn-site.xml)8192MB表示该节点上YARN的NodeManager可使用的物理内存总量。推荐:内存总量-非YARN任务内存所需量(如DataNode进程)。注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。yarn.nodemanager.resource.cpu-vcores(yarn-site.xml)8表示该节点上YARN可使用的虚拟CPU个数。推荐:物理CPU核数-1。注意,如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。资源分配:Container的内存需求属性名称默认值描述yarn.scheduler.minimum-allocation-mb(yarn-site.xml)1024MB单个任务可申请的最少物理内存量。推荐:根据开发人员的需求增大到4096。ResourceManager使用该值。mapreduce.map.memory.mb

mapreduce.reduce.memory.mb

(mapred-site.xml)1024MB为Map或Reduce任务分配的内存总量。推荐:根据开发人员的需求增大到4096。客户端和NodeManagers使用该值。yarn.app.mapreduce.am.resource.mb

(mapred-site.xml)1536MB为ApplicationMaster分配的内存总量。推荐:1024。客户端和NodeManagers使用该值。ContainerHeapSize属性名称默认值描述mand-opts(mapred-site.xml)"-Xmx1024MB"传递给ApplicationMaster的Java选项。推荐:-Xmx768m,除非运行巨大的jobs。当ApplicationMasters发起的时候使用。mapreduce.map.java.opts

mapreduce.reduce.java.opts

(mapred-site.xml)"-Xmx200MB"传递给Mappers和Reducer的Java选项。推荐:根据开发者的需求增大到1G-4G。当Mappers和Reducers发起的时候使用。配置资源分配和进程大小属性资源分配属性不能确定ApplicationMaster、Mappers和Reducers的堆大小必须要同时调整Java堆大小属性和资源分配属性比如,如果你指定:

yarn.nodemanager.resource.memory-mb=8192 mapreduce.map.memory.mb=4096

并且允许mapreduce.map.java.opts为defaultMappers最大的堆大小是200M

因为mapreduce.map.java.opts默认为-Xmx=200m推荐:为Mappers和Reducers设置java堆大小为mapreduce.map.memory.mb和mapreduce.reduce.memory.mb的75%内存监控NodeManagers可以监控container内存的使用,如果任务超过了分配内存量将终止任务属性名称默认值描述yarn.nodemanager.pmem-check-enabled(yarn-site.xml)TRUE如果为true,监控container的物理内存的使用。推荐:trueyarn.nodemanager.vmem-check-enabled(yarn-site.xml)FALSE如果为true,监控container的虚拟内存的使用。推荐:false使YARN跟操作系统资源分配一致通过Linuxcgroups来限制YARN在集群中的共享资源:CPU,内存和磁盘IO属性名称默认值描述yarn.nodemanager.container-executor.class(yarn-site.xml)org.apache.hadoop.yarn.server

.nodemanager.DefaultContainerExecutor值:org.apache.hadoop.yarn.server.

nodemanager.LinuxContainerExecutoryarn.nodemanager.linux-container-executor.resources-handler.class(yarn-site.xml)org.apache.hadoop.yarn.server

.nodemanager.util.DefaultLCEResourcesHandle

r值:org.apache.hadoop.yarn.server

.nodemanager.util.CgroupsLCEResourcesHandlerMAPREDUCE调优Reducer调度和输入获取推测式执行Shuffle和Sort优化MapReduce的任务数Reducer调度和输入获取属性名称默认值描述pletedmaps(mapred-site.xml)0.05当maptask完成的比例达到该值后才会为reducetask申请资源。推荐:0.8。ResourceManager使用mapreduce.reduce.shuffle.parallelcopies(mapred-site.xml)5同时创建的fetch线程个数来取得Mapper的输出。推荐:ln(集群节点个数)*4。shuffleHandler使用推测式执行属性名称默认值描述mapred.map.speculative(mapred-site.xml)T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论