hadoop的MR如何安装hadoop实现动态替换算法包

博客分类:
环境:
win7+eclipse+ ubuntu+hadoop
开始运行时报没有权限,只要把 hdfs的权限加大:
hadoop dfs -chmod -R 777 /usr/local/hadoop/hadoop-dir/hadoop-dev/tmp/
接着运行MR报 内存一出:
运行时加入参数:因为 mapred.child.java.opts默认大小是200m,具体的配置位置在 mapred-site.xml.
-Dmapred.child.java.opts=-Xmx512m
你这是hadoop的哪个版本啊?hadoop1.0
浏览: 1226859 次
来自: 北京
请问这里的库从哪下载啊
貌似这里没用到StreamingAMFChannel哦,只是用 ...
感谢你的博文,看了受益匪浅
现在还有什么应用需要用flex来开发的?
简洁明快,好贴好贴!楼主V5!
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Posts - 29,
Articles - 4,
Comments - 0
15:42 by Justinyangbigdata, ... 阅读,
1.集群默认是FIFO容量调度器,有的时候不同的业务部门都需要使用hadoop集群,那么这时候就需要来设置容量调度器了,如何平衡各个部门的容量.合理利用资源?
首先配置调度器需要在修改两个配置文件,分别是mapred-site.xml.里面主要有两个参数,其中第二个mapred.queue.names就是用来添加业务部门,比如有hive &hbase等 就添加进去,用逗号隔开
&property&&
&name&mapred.jobtracker.taskScheduler&/name&
&value&org.apache.hadoop.mapred.CapacityTaskScheduler&/value&
&/property&
&property&
&name&mapred.queue.names&/name&
&value&default&/value&
&/property&其次capacity-scheduler.xml文件中添加对应的配置和权限
属性mapred.capacity-scheduler.queue.hive.capacity的value决定了队列的容量比值
&property&
&name&mapred.capacity-scheduler.queue.hive.capacity&/name&
&value&40&/value&
&description&Percentage of the number of slots in the cluster that are
to be available for jobs in this queue.
&/description&
&/property&
&property&
&name&mapred.capacity-scheduler.queue.hive.maximum-capacity&/name&
&value&-1&/value&
&description&
&/description&
&/property&
&property&
&name&mapred.capacity-scheduler.queue.hive.supports-priority&/name&
&value&true&/value&
&description&&/description&
&/property&
&property&
&name&mapred.capacity-scheduler.queue.hive.minimum-user-limit-percent&/name&
&value&100&/value&
&description& &/description&
&/property&
&property&
&name&mapred.capacity-scheduler.queue.hive.user-limit-factor&/name&
&value&3&/value&
&description&&/description&
&/property&
&property&
&name&mapred.capacity-scheduler.queue.hive.maximum-initialized-active-tasks&/name&
&value&200000&/value&
&description&&/description&
&/property&
&property&
&name&mapred.capacity-scheduler.queue.hive.maximum-initialized-active-tasks-per-user&/name&
&value&100000&/value&
&description&&/description&
&/property&
&property&
&name&mapred.capacity-scheduler.queue.hive.init-accept-jobs-factor&/name&
&value&10&/value&
&description&&/description&
&/property&
那么如何动态的更新集群的动态和容量呢?
1.主节点修改好mapred-site.xml和capacity-scheduler.xml
2.把配置同步到所有节点上
3.使用hadoop用户执行命令:hadoop mradmin -refreshQueues
这样就可以不重启并且动态修改集群的队列及其容量配置.刷新mapreduce的web管理控制台可以看到结果。
注意:如果配置没有同步到所有的节点,一些队列会无法启用。模型架构:
执行计算任务有两个角色一个是JobTracker,一个是TaskTracker,前者用于管理和调度工作,后者用于执行工作。 &
一般来说一个Hadoop集群由一个JobTracker和N个TaskTracker构成。
可以理解为shuffle描述着Map task到Reduce task的整个过程
执行流程:
每次的计算任务都分为两个阶段,一个Map阶段一个Reduce阶段。(shuffle阶段位于Map和Reduce的中间)
Map阶段接收一组键值对形式的值&key,Value&,然后对这个输入进行处理并输出一组键值对形式的值 & &(map接收的数据是由InputFormat处理过的先spilt然后再生成键值对)
Reduce接收Map输出的结果进行计算并输出(map过程产生的数据默认写入内存缓冲区,因为在内存里可以提高combine和sort的速度,默认的缓冲区的大小为100MB可以进行配置,但是当缓冲区的内存使用大于一定的值得时候会发生溢写,默认是使用率80%,一个后台的线程就会启动把缓冲区的数据写入到磁盘中,往内存中写入的线程会继续的执行)
当(Spill)写入线程启动后,会对这80MB空间内的key/value对进行sort。排序是MapReduce模型的默认行为,首先进行key排序,对于key相同的按照value进行排序。
Combine(规约)发生在Spill的阶段本质上Combine就是Reduce,通过Combine可以减少输入reduce的数据量,优化MR的中间数据量
每次的Spill都会在本地声称一个Spill文件,如果map的数据量很大进行了多次的spill磁盘上对应的会有多个的spill文件存在、当map task 真正的完成的时候,内存缓冲区中的数据也会spill到本地磁盘上形成一个spill文件,所以磁盘上最少会有一个spill文件的存在,因为最终的文件只能有一个,所以需要把这些spill文件归并到一起,这个归并的过程叫做Merge
Merger是把多个不同的spill文件合并到一个文件,所以可能会发生有相同的key的事情,如果这时候设置过Combiner就会直接用Combiner来合并相同的key
reduce分为四个子阶段 ①从各个map task上读取相应的数据 ②sort ③执行reduce函数 ④把结果写到HDFS中
阅读(...) 评论()Hadoop教程(三): MR重要运行参数 - ImportNew
| 分类: , ,
| 标签: , ,
书接上回,继续为大家讲解
Job Configuration
是MR任务的配置对象,也是描述MR任务在Mapreduce框架中如何执行的主要途径,框架将如实的以该对象包含的信息来执行MR任务,但要注意以下特殊情况:
一些配置参数被管理员在hadoop相关配置文件中(比如core-site.xml,mapred-site.xml)设置为,则不能被任务参数值改变。
有一些参数通过方法可以直接设定,如通过等设定。但是一些其他参数和框架内部、任务配置有更复杂的关系,所以设定更为复杂,比如要通过来进行设定。
最典型的,JobConf一般应用在确定Mapper、Combiner(如果使用的话)、Partitioner、Reducer、InputFormat、OutputFormat以及OutputCommitter的实现类上。JobConf也可以用来通过setInputPaths(JobConf, Path…)/,或者setInputPaths(JobConf, String)/指定输入路径集合,通过setOutputPath(Path)设置任务结果输出路径。
JobConf也会用来指定一些可选的配置(一般使用在优化或者特殊分析用途)。比如指定作业使用的Comparator(比较器,用于排序或者分组);使用 DistributedCache缓存一些必须的文件;指定作业过程中数据和/或者作业结果是否被压缩和怎样压缩。也可以通过setMapDebugScript(String)/setReduceDebugScript(String)(还没用过:()对作业进行通过/指定任务执行中是否开启推测执行;通过setMaxMapAttempts(int)/setMaxReduceAttempts(int)设置每个任务的最大尝试次数;通过/设置MR任务(map/reduce)可容忍的失败比率。
而且,用户可以用/ 设置应用需要的参数,但是对于大量数据(只读)请使用 DistributedCache。
MR运行参数
TaskTracer以独立的JVM子进程方式运行Mapper、Reducer。子任务继承TaskTracker的所有环境参数。用户可以通过在JobConf里 mapred.child.java.opts指定子jvm运行参数,例如通过-Djava.library.path=&&指定一些搜索共享库必须的非标准运行时链接库等等,这是可选的。如果 mapred.child.java.opts属性含有$taskid变量,这个变量值会在运行中被框架插入正在运行的任务id。
下面这个配置例子使用多参数和变量插入特性配置了JVM GC日志,可,通过jconsole工具无密码连接的JMX服务,用来观察子进程的内存、线程,也可以获取线程dump信息。另外配置里设置了子JVM的最大堆尺寸为512MB,通过java.library.path设置了共享库路径。
&property&
&name&mapred.child.java.opts&/name&
-Xmx512M -Djava.library.path=/home/mycompany/lib -verbose:gc -Xloggc:/tmp/@taskid@.gc
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
&/property&
可以通过mapred.child.ulimit参数配置子进程可使用的最大虚拟内存。注意:该属性对单个进程设置最大限制,单位为KB,值必须大于等于最大堆内存(通过-Xmx设置)。
注意:mapred.child.java.opts只对从tasktracker分配和管理的子JVM进程有效。其他hadoop守护进程内存参数配置详见。
MR框架的其他组件可用内存也是可配置的。map和reduce任务的性能可以通过从影响操作并发和数据磁盘IO次数的角度来调试。监控针对单个任务而设置的文件系统计数器,尤其是具体到map输出到reduce的数据字节量,对调试影响任务运行性能都是非常有用的。
如果内存管理特性启用的话,用户可以选择性的覆盖一些默认配置,比如虚拟内存,RAM。下面是一些对任务有效的参数:
mapred.task.maxvmem
以字节为单位指定单个map或reduce任务的最大虚拟内存。如果任务超过该值就被kill
mapred.task.maxpmem
以字节为单位指定单个map或reduce任务的最大RAM。这个值被调度器(Jobtracer)参考作为分配map\reduce任务的依据,避免让一个节点超RAM负载使用。
map读出的一条记录将被序列化到一个buffer,元数据存储在元数据buffer中。如上面所说,当序列化buffer或者元数据buffer超出了设置的阙值,buffer中内容将被排序并在后台写入到磁盘,这个过程同时map持续输出记录行。如果buffer被写满就会发生一个spill过程,spill中map线程被阻塞。当map完成后,buffer中剩余记录写入磁盘并和在磁盘的按段存储的记录合并到一个文件中。减少spill次数可以缩短map时间,但是较大的buffer也会降低可用内存。
io.sort.mb
默认100。以MB为单位设置序列化和元数据buffer的大小。
io.sort.record.percent
默认0.05。map记录序列化后数据元数据buffer所占总buffer百分比值。为了加速排序,除了序列化后本身尺寸外每条序列化后的记录需要16字节的元数据。io.sort.mb值被占用的百分比值超过设定值机会发生spill。对输出记录较少的map,值越高越可降低spill发生的次数。
io.sort.spill.percent
默认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
默认值10。指定同时可合并的文件片段数目。参数限制了打开文件的数目,压缩解码器。如果文件数超过了该值,合并将分成多次。这个参数一般适用于map任务,大多数作业应该配置该项。
mapred.inmem.merge.threshold
在内存中合并到磁盘前读取已排序map输出文件的数目。类似前面说的spill阙值,该值不是一个用来分区的单元而是一个触发器。通常该值较高(1000),或者不启用(0),毕竟内存内合并比磁盘上合并成本更低。这个阙值只影响shuffle过程的内存合并。
mapred.job.shuffle.merge.percent
0.66。内存合并前供map输出享有的内存百分比值,超过该值就会合并数据到磁盘。过大的值会降低获取和合并的并行效率。相反如果输入恰好整个放到内存,则可以设置为1.0。该参数只影响shuffle过程的内存合并频率。
mapred.job.shuffle.input.buffer.percent
默认值0.7。shuffle过程中缓存map输出数据的内存占整个子jvm进程堆最大尺寸(通过mapred.child.java.opts设置)的百分比。该值可以视情况设置较高的值来存储大的较多的map输出。
mapred.job.reduce.input.buffer.percent
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输出。
可以通过指定mapred.job.reuse.jvm.num.tasks作业配置参数来启用jvm重用。默认是1,jvm不会被重用(每个jvm只处理1个任务)。如果设置为-1,那么一个jvm可以运行同一个作业的任意任务数目。用户可以通过JobConf.setNumTasksToExecutePerJvm(int)指定一个大于1的值。
下面是作业执行时的配置参数:
mapred.job.id
mapred.jar
job.jar在job路径下的位置
job.local.dir
作业共享路径
mapred.tip.id
mapred.task.id
task尝试任务id
mapred.task.is.map
是否是map任务
mapred.task.partition
task在job中的id
map.input.file
map输入文件路径
map.input.start
map输入split开始偏移量
map.input.length
map输入分片的字节数
mapred.work.output.dir
任务临时输出路径
任务的标准输出和错误流日志由TaskTracker读入并写入${HADOOPLOGDIR}/userlogs路径。
可以被用来发布map或者reduce用到的jar包、本地共享库。子JVM进程通常可使用java.library.path和LDLIBRARYPATH指定其自身的工作路径。缓存库可以通过或者加载。关于使用distributed cache 加载共享库详细信息可以查看 。
原文链接:
- 译文链接: [ 转载请保留原文出处、译者和译文链接。]
关于作者:
微博:http://weibo.com/wfeng1982
开篇在介绍继承树 的图片里面 linkedHashMap
少个h,虽然是个小问题,还是希望作者能换...
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
新浪微博:
推荐微信号
反馈建议:ImportNew.
广告与商务合作QQ:
– 好的话题、有启发的回复、值得信赖的圈子
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– UI,网页,交互和用户体验
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
& 2018 ImportNew2、参考资料
提高hadoop的mapreduce job效率笔记之二(尽量的用Combiner)&:http://sishuo(k).com/forum/blogPost/list/5829.html
Hadoop学习笔记&8.Combiner与自定义Combiner:http://www.tuicool.com/articles/qAzUjav
Hadoop深入学习:Combiner:http://blog.csdn.net/cnbird2008/article/details/
(平均值场景)0Hadoop 使用Combiner提高Map/Reduce程序效率:http://blog.csdn.net/jokes000/article/details/7072963
阅读(...) 评论()

我要回帖

更多关于 学习hadoop需要什么基础 的文章

 

随机推荐