问题
笔者学习Hadoop MapReduce开发过程中
借助IDEA开发工具, 实现MapReduce API调用, 对于hdfs端输入输出文件应该输入至program arguments
,但是笔者将其输入至Environment variable
, 导致程序无法找到位置
具体问题
解决方案
对于hdfs端输入输出文件应该输入至program arguments
原因
笔者不清楚idea为java程序添加启动参数(program arguments,vm arguments,Environment variable)的方式以及作用导致该错误,
在此,笔者将idea为java程序添加启动参数(program arguments,vm arguments,Environment variable)的方式以及作用进行总结
program arguments
作用
program arguments
中的值作为 args[] 的参数传入应用程序,
书写格式
参数1
参数2
……参数n
注意: 参数之间要以空格分隔,如果参数值中间有空格,则用引号括起来
调用格式
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
System.out.println("第一个参数" + otherArgs[0])
System.out.println("第二个参数" + otherArgs[1])
VM Arguments
作用
VM Arguments
是Java启动参数, 通过VM Arguments
设置的JAVA虚拟机的属性
Java启动参数分类
类别1: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
类别2: 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;
类别3: 其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;
书写格式
系统参数的标准格式为:-Dargname=argvalue,
标准格式参数1
标准格式参数2
……标准格式参数n
注意: 参数之间要以空格分隔,如果参数值中间有空格,则用引号括起来
调用格式
program arguments
具体可选内容
-D set a system property(设置系统属性) 可通过语句System.getProperties().list(System.out);查看有哪些参数可以设置。 可设置的参数:
– listing properties –
java.runtime.name=Java(TM) 2 Runtime Environment, Stand…
sun.boot.library.path=C:\Program\Files\Java\jre1.5.0_08\bin
java.vm.version=1.5.0_08-b03
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=CN
sun.os.patch.level=Service Pack 2
java.vm.specification.name=Java Virtual Machine Specification
user.dir=D:\wapSearchLogService
java.runtime.version=1.5.0_08-b03
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\jre1.5.0_08\lib…
os.arch=x86
java.io.tmpdir=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\
line.separator=
java.vm.specification.vendor=Sun Microsystems Inc.
os.name=Windows XP
sun.jnu.encoding=GBK
java.library.path=C:\Program Files\Java\jre1.5.0_08\bin…
java.specification.name=Java Platform API Specification
sun.management.compiler=HotSpot Client
Compiler os.version=5.1
user.home=C:\Documents and
Settings\Administrator
user.timezone=Asia/Shanghai
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=GBK
java.specification.version=1.5
user.name=Administrator
java.class.path=D:\wapSearchLogService\bin;D:\wapSear…
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:\Program Files\Java\jre1.5.0_08
java.specification.vendor=Sun Microsystems Inc.
user.language=zh
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode, sharing
java.version=1.5.0_08
java.ext.dirs=C:\Program
Files\Java\jre1.5.0_08\lib…
sun.boot.class.path=C:\Program
Files\Java\jre1.5.0_08\lib…
java.vendor=Sun Microsystems Inc.
file.separator=\
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport…
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=amd64
常见配置汇总
1.堆设置
-Xms :初始堆大小
-Xmx :最大堆大小
-XX:NewSize=n :设置年轻代大小
-XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n :设置持久代大小
2.收集器设置
-XX:+UseSerialGC :设置串行收集器
-XX:+UseParallelGC :设置并行收集器
-XX:+UseParalledlOldGC :设置并行年老代收集器
-XX:+UseConcMarkSweepGC :设置并发收集器
3.垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
4.并行收集器设置
-XX:ParallelGCThreads=n :设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n :设置并行收集最大暂停时间
-XX:GCTimeRatio=n :设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
5.并发收集器设置
-XX:+CMSIncrementalMode :设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n :设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
6.一般环境下的默认参数:
1:jre中的Default VM Arguments: -Xms256M -Xmx640M -XX:PermSize=256m
-XX:MaxPermSize=768m 2:Tomcat的Optional Java VM Arguments: -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m 3:eclipse.ini中: -vmargs-Xms256m-Xmx512m
Environment variable
作用
通过Environment variable
设置系统环境变量
书写格式
方式1
要点击最右侧的图标,进入设置:
方式2
参数1
;参数2
;……参数n
注意: 参数之间要以分号分隔
调用格式
获取指定key的系统环境变量
final String myEnv = System.getenv("myEnv");
获取所设置的所有系统环境变量
final String myEnv = System#getenv();
参考文献
Idea中为java程序添加启动参数(含:VM options、Program arguments、Environment variable)
idea为java程序添加启动参数(program arguments,vm arguments,Environment variable),并在程序中获取使用
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈