系统环境变量引发的问题
提出的观点
- 能写在配置文件中的,绝对不配置环境变量
为了方便命令的使用,可以在用户根目下建一个文件夹如(~/run),然后把各执行命令写进该文件夹中
如 vi ~/run/java 内容如下
#!/bin/bash export JAVA_HOME=/opt/modules/environment/jdk/jdk1.8.0_65 export PATH=$JAVA_HOME/bin:$PATH
同样可以满足在任意中径中执行 java 相关命令 如在/home/hadoop/temp/a 路径下,同样可以执行~/run/java 也同样很方便,但是不会引影别的应用,因为文件中的环境变量
环境变量的好外
- 系统环境变量设置,确实简化和方便了很多操作,比如配置好JDK的环境变中,就可以在任意路径下,只有输入java,javac相关命令都可以访问,不需要输入命令全路径就可以执行该操作。
环境变量引发的问题
- 由于现在硬件成本不断降低,企来生产环境配置很高,光内存就起步就是几十个G的内存,动则一,二百G的内存,硬盘也是T级别的起步
- 丰富的硬件配置导致,单台机器也不可能只跑单个应用程序,如果只是单一应用程序,不用时就闲置,浪费资源,就是说一台机器可能会给一项目组或几个项目组用的,会跑很多应用程序,包括历史应用程序,而历史程序大都应用的版本比较低,如Java就普通是1.6,但是很多现在的新功能,都是1.7以上的才支持,所以会冲突,导致不可用
*特别是 java 框架太多,版本又很多,特别是各种多版本的集成问题,往往会不兼容,导致很难维护,很容易出错,并且相互影响
- 看看 hadoop,spark,那些框架依赖的变量,都是直接写在配置文件中,这样完全不会影响别的操作,因为文件中变量的作用域,就是这一次任务执行开始到结束就没了