场景:根据不同项目或不同用户,对yarn资源队列进行划分,达到资源管控,任务管控的目的
CDH版本:5.x
配置:
1 yarn资源队列参数设置:
(1)yarn.scheduler.fair.user-as-default-queue false
解释:当设置为 true 时,如果未指定池名称,Fair Scheduler 将会使用用户名作为默认的池名称。当设置为 false 时,所有应用程序都在一个名为 default 的共享池中运行。设置成false是为了不根据用户名而自动分配资源池。
Fair Scheduler:yarn的公平调度器,对全局资源和对所有的应用作业都均匀分配的资源分配方法。默认情况下,它是基于内存来安排公平调度策略,也可以配置成为同时基于内存和CPU来进行调度。总的来说,它是一种基于内存,给集群中所提交的应用程序分配资源的调度器。
(2)yarn.scheduler.fair.allow-undeclared-pools false
解释:设置为 true 时,将使用默认设置创建在应用程序中指定但未明确配置的池。设置为 false 时,将在名为 default 的池中运行应用程序指定的未明确配置的池。此设置适用于应用程序明确指定某个池时以及应用程序运行所在的池的名称为与该应用程序关联的用户名的情况。
默认是true,允许创建未定义的资源池。当用户提交了一个作业,指定的队列不存在的时候,会自动创建出这个不存在的队列。设置成false,如果任务中指定了一个未定义的资源池,那么这个资源池将不会被创建,该任务会被分配到默认的资源池中,default。
修改完配置重启服务
2 CDH 动态资源队列配置
如图,第一步我们划分了2个资源池:、
(1)root.default:默认池,没有划分资源池的用户会提交到default资源池
权重定义了资源池之间分配资源的比例,目前集群中的default资源池和users资源池的权重各为1,那么集群中的资源会将50%分配给default,50%分配给users,但是这里的资源分配不是一个静态的概念,假如users中没有任务在运行,那么default资源池是允许使用超过50%的资源的,且资源池配置允许在线修改,修改后不需要重启yarn,因为RM会周期性的读取资源池的配置信息
设置default资源池的调度算法:使用DRF,即根据内存和CPU进行资源调度
yarn.scheduler.fair.preemption解释:启用后,如果在某些时间段未达到池的最小共享,Fair Scheduler 可以优先选取其他池中的应用程序。优先权可保证生产应用程序不缺乏资源,同时还可使群集用于实验和研究应用程序。为尽量减少计算资源浪费,Fair Scheduler 会优先选取最近启动的应用程序。
该项不建议开启。
Yarn的资源抢占本身就具有一定的资源开销,并且如果开启了资源抢占,对于长时间运行的任务容易出现延迟的情况。所以在此也建议配置队列时,要将长时间运行任务和执行时间较短的任务放在不同的队列中。同时对于队列的maxResource,可以适当的配置大些,这样即使不打开抢占,RM也是可以将一个队列的已经运行完成的资源回收分配给别的队列。从而达到提高资源的利用率。
解释:
yarn.acl.enable:指定是否应检查管理 ACL 中指定的用户和组执行管理 *** 作的授权。
yarn.admin.acl:确定哪些用户和组可在任何池中提交和中止应用程序以及可以对 ResourceManager 角色发出命令的 ACL。
重启服务
添加was用户资源池
资源池的提交控制访问和管理控制访问的配置会自动继承到子队列中,比如在root资源池下的提交控制访问中配置了用户was,那么即使root.test的提交用户访问中配置是空,用户was也可以向队列test中提交yarn应用程序。
计划模式:可以根据不同时间段使用不同的资源池配置,合理使用集群的纵向资源
创建新的计划规则:
配置完计划模式,资源池会有多套配置,如下
配置完不同时间段使用的配置集后,修改各配置集的资源分配。例如streaming资源池在默认的配置集下,权重是2,使用的集群的资源占50%,但是在night配置集下配置的权重是1,使用的集群的资源占33%。而nigth配置集是在每天晚上8点到第二天早上六点时间段生效的。
放置规则:控制任务使用资源池的规则,即任务会根据以下的规则放到对应的资源池中执行,不需要自定义配置,在提交任务的时候显示的指定队列即可
用户限制:控制用户可以提交的最大应用程序数量,可以统一配置,也可以单独给某个用户配置
一准备1. 登录到系统,是否使用root用户都可以(推荐使用root用户安装,以减少安装复杂度)。检查umask设置:对root用户,推荐使用0022;对非root用户,推荐使用0002
2. 安装FireFox浏览器(一般缺省都会安装),用来在安装时运行Launchpad程序,以及在安装后,使用Gnome或者KDE中的为Linux WAS创建的快捷菜单
3. 如果以前在系统中安装过Linux WAS,要停止所有相关的Java进程,以及IBM HTTP Server进程
4. 确保足够的硬盘空间。基本的安装(不包括HTTP Server)大概需要以下大小的硬盘空间:
/opt/IBM/WebSphere ~ 930M
/tmp ~ 100M
包含例子的WAS profile ~ 200M,一般也在/opt/IBM/WebSphere目录下
5. 增加ulimit值,以免在addNode和importWasprofile的时候出问题:在用户的bash登录脚本(~/.bashrc)的最后加入一行:ulimit -n 8192
6. 如果安装了带有cp命令的软件,要确保把这些软件的路径从PATH环境变量中去掉,以保证使用shell的cp命令。在安装完Linux WAS以后,再恢复PATH设置即可。
二 安装Linux WAS
1. 以root用户运行安装包根目录下的launchpad.sh命令启动Launchpad
2. 在打开的页面中,点击"Launch the installation wizard for Websphere Application Server",d出Linux WAS安装向导欢迎界面
3. 在System Prerequisite Check页会有警告说 没有检测到支持的 *** 作系统,点击Next忽略即可
4. 在WebSphere Application Server Environments页面,选择"Application Server"
5. 在Enable Administrative Security页面,取消选中(如果需要的话,可以在安装以后启用)
6. 安装结束后,点击Finish按钮,接着d出First Steps Console
7. 可选步骤:点击Installation verification,验证安装,然后可以点击Administrative console,打开管理控制台页面(http://servername:9060/ibm/console)查看Linux WAS的相关配置信息。最后点击Stop the server,停止Linux WAS。
8. 可选: 安装补丁包将补丁包安装程序(UpdateInstaller)7.0.0.0-WS-UPDI-LinuxIA32.zip,解压缩,然后cd到解开的目录下面,以root运行java -jar setup.jar,缺省安装到/opt/IBM/WebSphere/UpdateaInstaller安装结束后,UpdateInstaller会自动运行,(手动将下载的补丁包,如7.0.0-WS-WAS-LinuxX32-FP0000005.pak放到/opt/IBM/WebSphere/UpdateaInstaller/maintenance下面),一路Next即可。
9. 如果启用了SELinux,需要更改Linux WAS相关的java命令程序以及相关链接库和jar包的security context, 不然在用startServer.sh启动Linux WAS的时候会碰到类似如下的错误信息 /opt/IBM/WebSphere/AppServer/bin/startServer.sh: line 145: /opt/IBM/WebSphere/AppServer/java/bin/java: Permission denied Linux WAS本身提供了现成的脚本(/opt/IBM/WebSphere/AppServer/properties/version/nif/config/script/relabel_was.sh)来自动完成这些修改。不过这个脚本是为RHEL 5量身定做的,会检查系统是不是RHEL5. 所以我们要做一下简单的修改,注释掉脚本最后的检查语句,如下所示:
view plaincopy to clipboardprint?
#if [ -r /etc/redhat-release ]then
#release=`cat /etc/redhat-release | awk '{print $7}'`
#version=${release%%\.*}
#if [ $version -ge 5 ]then
if [ -x /usr/sbin/selinuxenabled ] &&/usr/sbin/selinuxenabledthen
INSTALL_PATH=$1
JAVA_PATH=$INSTALL_PATH/java/jre
set_java_contexts
set_lib_contexts
fi
# fi
#fi
exit $rc
#if [ -r /etc/redhat-release ]then
# release=`cat /etc/redhat-release | awk '{print $7}'`
# version=${release%%\.*}
#if [ $version -ge 5 ]then
if [ -x /usr/sbin/selinuxenabled ] &&/usr/sbin/selinuxenabledthen
INSTALL_PATH=$1
JAVA_PATH=$INSTALL_PATH/java/jre
set_java_contexts
set_lib_contexts
fi
#fi
#fi
exit $rc
把修改后的脚本存为relabel_was_fedora.sh,然后执行:
sudo setenforce 0
sudo ./relabel_was_fedora.sh /opt/IBM/WebSphere/AppServer/
sudo setenforce 1
10. 如果启用了防火墙,要打开Linux WAS相关的端口,比如9080,9060等
11. 运行sudo /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh server1 启动Linux WAS,检查一切是否正常。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)