Mapr与Mapreduce配合工作(六)——调整您的MAPR安装
2013-12-31 00:35
375 查看
MAPR自动调谐集群对于大多数的目的。一个服务叫监狱长决定了配置为运行TaskTracker必须服务节点机资源,并设置相应的MapReduce参数。
在具有多个CPU节点,MAPR使用taskset的预留的CPU MAPR服务:
在五到八个CPU的节点,CPU的0是保留给MAPR服务
在九或更多CPU的节点,CPU 0和CPU1的是保留给MAPR服务
在某些情况下,你可能需要手动调MAPR提供更高的性能。例如,运行组成的异常大的任务的工作时,这是有用的,以减少时隙的每个TaskTracker分别数量和调整Java堆大小。以下部分提供了MapReduce的优化技巧。如果您更改任何设置mapred-site.xml中,重新启动TaskTracker必须。
内核可调参数值
不同的Linux发行版之间的NFS写性能会有所不同。这种建议的变更可能没有或特定群集上的负面影响。
当内嵌设置被启用,每个作业的设置任务运行时直接作为一个线程,而不是分叉出来作为一个单独的任务由一个TaskTracker必须的JobTracker的内部。当内嵌设置被启用,需要一个安装任务的工作可以显示更高的性能,因为这些工作不等待的TaskTracker来获得计划,然后执行安装任务。
从而能够执行用户定义的代码作为特权JT用户的JobTracker的是有风险的。如果群集的原始MAPR安装了1.2.7或更早版本,内嵌设置是默认启用的。由的值设置禁用内嵌安装在生产集群
分配给每个MAPR服务的内存中指定
内存使用的服务的百分比无需添加多达100个,事实上,你可以通过设置使用小于全堆
分配的MapReduce任务的内存通常等于系统总内存减去分配给MAPR服务的总内存。如果有必要,你可以使用参数mapreduce.tasktracker.reserved.physicalmemory.mb设置由MapReduce的任务保留的最大物理内存,也可以将其设置为
如果节点内存用完,MapReduce的任务是由杀死OOM杀手来释放内存。您可以使用
地图任务使用的内存主要有两种方式:
MapReduce框架使用一个中间缓冲区来存放序列化(键,值)对。
该应用程序使用的内存来运行map函数。
MapReduce框架的内存是由控制
要打开LZO或任何其他压缩,设置
有关选择压缩算法的详细信息,请参阅压缩。
如果因为任务的堆空间不足错误而失败,增加堆空间(
(见mapred.map.child.java.opts在mapred-site.xml中)
理想情况下,地图的数量和减少时隙应当基于应用的需要决定。地图槽应根据多少地图任务可以适合在存储器中,并减少时隙应该基于CPU的数量。如果在一个MapReduce作业的每个任务需要3 GB,并且每个节点有9GB预留的MapReduce任务,然后地图插槽的总数应为3。数据每个map任务必须处理量也影响多少地图插槽应配置。如果每个map任务处理256 MB(在MAPR默认块大小),然后每个map任务应该有800 MB的内存。如果有4个GB的保留在地图的任务,然后地图时隙的数目应该是4000MB/800MB,或5个时隙。
有三种方法来调整计算在地图的数量,减少每个TaskTracker必须节点上的插槽:
指定映射的最大数量,并降低每个TaskTracker必须节点上的插槽。
定义一个公式来计算图的最大数目,并减少时隙。
使用默认值。
您可以直接设置这些参数在一个整数
图标
当你改变一个TaskTracker必须节点上的插槽数,它可能需要长达十分钟的集群范围内的槽总容量准确反映变化。这种延迟是由控制mapred.tasktracker.expiry.interval参数,它决定了一个TaskTracker必须多久可以失败,被宣告丢失前心跳。
你可以定义一个公式
此公式使用的语法
这些一般的语法是
离开这些变量(
默认显示该地图的最大数量,降低槽是由这些公式计算:
减少的时隙的数目是第一计算的,因为剩余的内存可能是不够的另一地图槽。
可用于MapReduce的RAM总量的60%分配给reduce任务,
例如:内存4994MB可用于MapReduce的,其中200MB分配给小型作业。这使得4794MB的map和reduce插槽。
60%(4794MB)= 2876MB。
划分的内存总量为1500MB由reduce任务(每个reduce任务的默认内存大小)。
举例:2876MB/1500MB = 1插槽,1376MB遗留下来的。
图标
您可以为reduce任务的默认通过改变的值赋给一个不同的内存大小
减去的内存用于减少从插槽可在地图总,减少插槽的数量。然后由800MB(每map任务的默认内存大小)划分的结果。
举例:(4794MB-1500MB)/ 800MB = 3294MB/800MB = 4插槽,94MB遗留下来的。
图标
您可以为map任务默认通过改变的值赋给一个不同的内存大小
MAPR允许JobTracker的过度时间表提前插槽的可用性TaskTracker必须节点上的任务,创造了管道。这种优化可以让TaskTracker必须尽快先前运行的map任务完成后启动每个map任务。任务的过度时间表的数量应约25-50%的地图插槽总数。你可以调整这个数字与参数
在具有多个CPU节点,MAPR使用taskset的预留的CPU MAPR服务:
在五到八个CPU的节点,CPU的0是保留给MAPR服务
在九或更多CPU的节点,CPU 0和CPU1的是保留给MAPR服务
在某些情况下,你可能需要手动调MAPR提供更高的性能。例如,运行组成的异常大的任务的工作时,这是有用的,以减少时隙的每个TaskTracker分别数量和调整Java堆大小。以下部分提供了MapReduce的优化技巧。如果您更改任何设置mapred-site.xml中,重新启动TaskTracker必须。
NFS的写入性能
内核可调参数值sunrpc.tcp_slot_table_entries代表同时远程过程调用(RPC)请求数。该可调参数的默认值是16。增加该值到128可以提高写入速度。使用命令
的sysctl-W sunrpc.tcp_slot_table_entries = 128设置的值。一个条目添加到您的
sysctl.conf的文件,以在重新启动设置仍然存在。
不同的Linux发行版之间的NFS写性能会有所不同。这种建议的变更可能没有或特定群集上的负面影响。
内嵌设置
当内嵌设置被启用,每个作业的设置任务运行时直接作为一个线程,而不是分叉出来作为一个单独的任务由一个TaskTracker必须的JobTracker的内部。当内嵌设置被启用,需要一个安装任务的工作可以显示更高的性能,因为这些工作不等待的TaskTracker来获得计划,然后执行安装任务。从而能够执行用户定义的代码作为特权JT用户的JobTracker的是有风险的。如果群集的原始MAPR安装了1.2.7或更早版本,内嵌设置是默认启用的。由的值设置禁用内嵌安装在生产集群
mapreduce.jobtracker.inline.setup.cleanup为false
mapred-site.xml中。添加以下部分的
mapred-site.xml的文件:
内存设置
内存为MAPR服务
分配给每个MAPR服务的内存中指定的/ opt / MAPR / conf /中warden.conf文件,该文件MAPR自动配置的基础上,节点上可用的物理内存。例如,您可以调整用于TaskTracker必须的最小和最大内存,以及堆的TaskTracker必须尝试使用百分比,通过设置适当的
百分比,
最大和
最小参数的
warden.conf文件:
heapsize.percent参数对于所有的服务加起来堆的大小小于100%。一般情况下,你不应该需要调整个别服务的内存设置,除非你看到特定的内存相关的问题发生。
MapReduce的记忆
分配的MapReduce任务的内存通常等于系统总内存减去分配给MAPR服务的总内存。如果有必要,你可以使用参数mapreduce.tasktracker.reserved.physicalmemory.mb设置由MapReduce的任务保留的最大物理内存,也可以将其设置为-1来禁用物理内存的会计和任务管理。
如果节点内存用完,MapReduce的任务是由杀死OOM杀手来释放内存。您可以使用
mapred.child.oom_adj(从复制
mapred-default.xml中调整
oom_adj为MapReduce的任务参数。可能的值
oom_adj范围从-17到+15的分数越高,越有可能相关联的过程是由OOM杀手杀死。
招聘配置
地图任务
地图任务使用的内存主要有两种方式:MapReduce框架使用一个中间缓冲区来存放序列化(键,值)对。
该应用程序使用的内存来运行map函数。
MapReduce框架的内存是由控制
io.sort.mb。如果
io.sort.mb小于从映射器发射的数据,该任务结束了溢出数据到磁盘上。如果
io.sort.mb过大,任务可运行内存不足或浪费分配的内存。默认情况下,
io.sort.mb设置为380MB。的值设置
io.sort.mb到来自映射器发射的数据字节约1.5倍的数量。如果您无法通过调整价值解决内存问题
io.sort.mb,然后尝试重新编写应用程序在其地图功能使用较少的内存。
压缩
要关闭MAPR压缩在地图输出,设置mapreduce.maprfs.use.compression =假
要打开LZO或任何其他压缩,设置
mapreduce.maprfs.use.compression =虚假和
mapred.compress.map.output =真
有关选择压缩算法的详细信息,请参阅压缩。
reduce任务
如果因为任务的堆空间不足错误而失败,增加堆空间(-Xmx的选件
mapred.reduce.child.java.opts)向工作给予更多的内存。如果map任务失败了,你也可以尝试减少的价值
io.sort.mb。
(见mapred.map.child.java.opts在mapred-site.xml中)
TaskTracker必须配置
理想情况下,地图的数量和减少时隙应当基于应用的需要决定。地图槽应根据多少地图任务可以适合在存储器中,并减少时隙应该基于CPU的数量。如果在一个MapReduce作业的每个任务需要3 GB,并且每个节点有9GB预留的MapReduce任务,然后地图插槽的总数应为3。数据每个map任务必须处理量也影响多少地图插槽应配置。如果每个map任务处理256 MB(在MAPR默认块大小),然后每个map任务应该有800 MB的内存。如果有4个GB的保留在地图的任务,然后地图时隙的数目应该是4000MB/800MB,或5个时隙。有三种方法来调整计算在地图的数量,减少每个TaskTracker必须节点上的插槽:
指定映射的最大数量,并降低每个TaskTracker必须节点上的插槽。
定义一个公式来计算图的最大数目,并减少时隙。
使用默认值。
指定时隙的最大数目
您可以直接设置这些参数在一个整数mapred-site.xml的文件:
mapred.tasktracker.map.tasks.maximum
mapred.tasktracker.reduce.tasks.maximum。
图标
当你改变一个TaskTracker必须节点上的插槽数,它可能需要长达十分钟的集群范围内的槽总容量准确反映变化。这种延迟是由控制mapred.tasktracker.expiry.interval参数,它决定了一个TaskTracker必须多久可以失败,被宣告丢失前心跳。
定义一个公式
你可以定义一个公式mapred.tasktracker.map.tasks.maximum或
mapred.tasktracker.reduce.tasks.maximum参数。
此公式使用的语法
评估和演示,并采取下列变量:
CPUS-节点上CPU的数量存在
DISKS-磁盘数量目前的节点上
MEM-内存预留的MapReduce任务
这些一般的语法是
有条件?TRUE:FALSE。对于一个假设的4芯,12盘节点,有条件的形式
(2 * CPUS <磁盘)?2 *的CPU:DISKS计算结果为8,生成8地图或减少插槽。上一个6芯,12磁盘的节点,这个条件的计算结果为12,产生12 map或reduce插槽。
使用默认值
离开这些变量(mapred.tasktracker.map.tasks.maximum和
mapred.tasktracker.reduce.tasks.maximum)设置为默认值-1。
默认显示该地图的最大数量,降低槽是由这些公式计算:
减少时隙计算
减少的时隙的数目是第一计算的,因为剩余的内存可能是不够的另一地图槽。可用于MapReduce的RAM总量的60%分配给reduce任务,
例如:内存4994MB可用于MapReduce的,其中200MB分配给小型作业。这使得4794MB的map和reduce插槽。
60%(4794MB)= 2876MB。
划分的内存总量为1500MB由reduce任务(每个reduce任务的默认内存大小)。
举例:2876MB/1500MB = 1插槽,1376MB遗留下来的。
图标
您可以为reduce任务的默认通过改变的值赋给一个不同的内存大小
mapred.reducetask.memory.default参数。
地图时隙计算
一旦减少的时隙数被计算,地图槽可以从剩余的内存分配。减去的内存用于减少从插槽可在地图总,减少插槽的数量。然后由800MB(每map任务的默认内存大小)划分的结果。
举例:(4794MB-1500MB)/ 800MB = 3294MB/800MB = 4插槽,94MB遗留下来的。
图标
您可以为map任务默认通过改变的值赋给一个不同的内存大小
mapred.maptask.memory.default参数。
MAPR允许JobTracker的过度时间表提前插槽的可用性TaskTracker必须节点上的任务,创造了管道。这种优化可以让TaskTracker必须尽快先前运行的map任务完成后启动每个map任务。任务的过度时间表的数量应约25-50%的地图插槽总数。你可以调整这个数字与参数
mapreduce.tasktracker.prefetch.maptasks。
相关文章推荐
- Mapr与Mapreduce配合工作(三)——容量调度
- Mapr与Mapreduce配合工作(四)——公平调度
- Mapr与Mapreduce配合工作(五)——独立操作
- Mapr与Mapreduce配合工作(七)——MAPR提供快速通道(称为ExpressLane)
- Mapr与Mapreduce配合工作(八)——编译程序管道
- Mapr与Mapreduce的工作(一)
- Mapr与Mapreduce的工作(二)——配置Mapreduce
- Mapr与Mapreduce的工作(三)——配置Mapreduce
- Mapr与HCatalog工作
- 使用Python配合Evernote完成每周工作安排
- Mapreduce工作流程及部分类探究
- MapReduce程序的工作过程
- 【Hadoop权威指南】MapReduce的工作机制
- 知识学习——Hadoop MapReduce工作机制
- MapReduce工作的基本流程
- MapReduce 原理及其工作流程
- MapReduce的工作流程
- 第一次对客户人员进行培训来配合自己的工作感悟
- yarn/mapreduce工作机制及mapreduce客户端代码编写
- (转)多个mapreduce工作相互依赖处理方法完整实例(JobControl)