赞
踩
一般都是像这样 yarn jar hadoop-examples.jar pi 6 2000 写一些跑完就没事了,可是我发现这样每个粒例子的container都是1GB1vcore的,相对于我所使用的“pi 6 2000”太多了,那么如何在测试的时候设置我container的大小呢?
在webui中
我的memory total是8GB,发现放满八个container后,主机的物理内存还只用了一点点,如下图物理内存还剩很多:
可知虽然memory total=8GB全被用了,每个container1GB,contianer跑这个pi实例根本用不了这么多,说明contianer大小设大了。
实际上安好hadoop默认的配置就是一个contianer占1GB1vcore。下面我们改一下。
yarn.app.mapreduce.am.resource.mb value=512 这个是设置appmaster的container所用内存
mapreduce.map.memory.mb value=512 这个是设置作为map的container所用内存
mapreduce.reduce.memory.mb value=512 这个是设置作为reduce的container所用内存
这个是container所能占用的最大内存,一定要比你在mapred-site.xml 中设置的要大,否则会出现如下情况:
cause:java.io.IOException: org.apache.hadoop.yarn.exceptions.InvalidResourceRequestException: Invalid resource request, requested memory < 0, or requested memory > max configured, requestedMemory=350, maxMemory=256
这是说我appmaster请求的内存是350m,而我最大container内存是256,不够。
错误如下:
appmaster这个我设置的过大了改成了256m,这个好像设置为appmaster container的0.85倍就可以了,我设置的appmastercontainer大小是320.
在mapred-site.xml设置
yarn.app.mapreduce.am.command-opts
value: -Djava.net.preferIPv4Stack=true -Xmx268435456
268435456/1024/1024=256m
修改了配置后即可成功运行,但是要注意,要确定自己设定的container足够运行实例中的AppMaster和tasks。
我的配置,我是在CDH中设置的
如果像上面那样改,那么运行其他任务的时候不还得改回来吗。然而hadoop自带实例是可以直接指定你想要的配置的。
如果有一次的话可以这样
hadoop jar hadoop-examples.jar pi -Dyarn.app.mapreduce.am.resource.mb=320 -Dmapreduce.map.memory.mb=256 -Dmapreduce.reduce.memory.mb=256 5 1000
就有了方法一的效果了。
$>hadoop jar hadoop-examples.jar [你想运行的例子]
就会出现如下:
- -conf <configuration file> specify an application configuration file
- -D <property=value> use value for given property
- -fs <local|namenode:port> specify a namenode
- -jt <local|resourcemanager:port> specify a ResourceManager
- -files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster
- -libjars <comma separated list of jars> specify comma separated jar files to include in the classpath.
- -archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines.
genericOptions包括如下:
-conf 指定一个配置文件,你可以把你想要的配置写进去,他优先按这个文件执行
-D 给某个属性设定一个值,例如这样:yarn.app.mapreduce.am.resource.mb=320
-fs 指定local还是namenode
-jt 指定local还是resourcemanager
-files 是指定多个文件用逗号分隔拷贝到集群中
-libjars 指定要包含在类路径中的JAR文件,逗号分隔
-archives 指定要在计算机上不归档的存档,逗号分隔
bin/hadoop command [genericOptions] [commandOptions]
bin/hadoop command [genericOptions] [commandOptions]
- 1. -D
- hadoop jar hadoop-examples.jar pi -Dyarn.app.mapreduce.am.resource.mb=320 -Dmapreduce.map.memory.mb=256 -Dmapreduce.reduce.memory.mb=256 5 1000
-
- 2. -files
- -files hdfs://host:fs_port/user/testfile1.txt,hdfs://host:fs_port/user/testfile2.txt
-
- 3.-archives
- -archives hdfs://host:fs_port/user/testfile.jar
其他有关基准程序测试的例子在这里:https://blog.csdn.net/Ahuuua/article/details/90669606
还可以参考这个使用:http://hadoop.apache.org/docs/stable/hadoop-streaming/HadoopStreaming.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。