summary refs log tree commit diff
diff options
context:
space:
mode:
authorillustris <rharikrishnan95@gmail.com>2022-02-28 20:41:43 +0530
committerillustris <rharikrishnan95@gmail.com>2022-03-11 14:18:44 +0530
commitbef71d7c530aeecdcfb66290e6c0b4948d1fb223 (patch)
treee695e5fe5b2deb63613a2a9868714cfa30cefa5f
parent716b0dfaaf12afe83ff54b793dc52c022ab62155 (diff)
downloadnixpkgs-bef71d7c530aeecdcfb66290e6c0b4948d1fb223.tar
nixpkgs-bef71d7c530aeecdcfb66290e6c0b4948d1fb223.tar.gz
nixpkgs-bef71d7c530aeecdcfb66290e6c0b4948d1fb223.tar.bz2
nixpkgs-bef71d7c530aeecdcfb66290e6c0b4948d1fb223.tar.lz
nixpkgs-bef71d7c530aeecdcfb66290e6c0b4948d1fb223.tar.xz
nixpkgs-bef71d7c530aeecdcfb66290e6c0b4948d1fb223.tar.zst
nixpkgs-bef71d7c530aeecdcfb66290e6c0b4948d1fb223.zip
nixos/hadoop: use CGroups to enforce container limits by default
-rw-r--r--nixos/modules/services/cluster/hadoop/default.nix5
-rw-r--r--nixos/modules/services/cluster/hadoop/yarn.nix3
-rw-r--r--nixos/tests/hadoop/yarn.nix4
3 files changed, 9 insertions, 3 deletions
diff --git a/nixos/modules/services/cluster/hadoop/default.nix b/nixos/modules/services/cluster/hadoop/default.nix
index 5c7ea79c301..57b1d7a90d7 100644
--- a/nixos/modules/services/cluster/hadoop/default.nix
+++ b/nixos/modules/services/cluster/hadoop/default.nix
@@ -79,6 +79,10 @@ with lib;
         "yarn.nodemanager.log-dirs" = "/var/log/hadoop/yarn/nodemanager";
         "yarn.resourcemanager.bind-host" = "0.0.0.0";
         "yarn.resourcemanager.scheduler.class" = "org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler";
+        "yarn.nodemanager.linux-container-executor.cgroups.hierarchy" = "/hadoop-yarn";
+        "yarn.nodemanager.linux-container-executor.resources-handler.class" = "org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler";
+        "yarn.nodemanager.linux-container-executor.cgroups.mount" = "true";
+        "yarn.nodemanager.linux-container-executor.cgroups.mount-path" = "/run/wrappers/yarn-nodemanager/cgroup";
       };
       type = types.attrsOf types.anything;
       example = literalExpression ''
@@ -124,6 +128,7 @@ with lib;
         "yarn.nodemanager.linux-container-executor.group"="hadoop";
         "min.user.id"=1000;
         "feature.terminal.enabled"=1;
+        "feature.mount-cgroup.enabled" = 1;
       };
       type = types.attrsOf types.anything;
       example = literalExpression ''
diff --git a/nixos/modules/services/cluster/hadoop/yarn.nix b/nixos/modules/services/cluster/hadoop/yarn.nix
index 9f0d3f85db7..373d8a70a12 100644
--- a/nixos/modules/services/cluster/hadoop/yarn.nix
+++ b/nixos/modules/services/cluster/hadoop/yarn.nix
@@ -101,8 +101,9 @@ in
           chown yarn:hadoop /var/log/hadoop/yarn/nodemanager
 
           # set up setuid container executor binary
+          umount /run/wrappers/yarn-nodemanager/cgroup/cpu || true
           rm -rf /run/wrappers/yarn-nodemanager/ || true
-          mkdir -p /run/wrappers/yarn-nodemanager/{bin,etc/hadoop}
+          mkdir -p /run/wrappers/yarn-nodemanager/{bin,etc/hadoop,cgroup/cpu}
           cp ${cfg.package}/lib/${cfg.package.untarDir}/bin/container-executor /run/wrappers/yarn-nodemanager/bin/
           chgrp hadoop /run/wrappers/yarn-nodemanager/bin/container-executor
           chmod 6050 /run/wrappers/yarn-nodemanager/bin/container-executor
diff --git a/nixos/tests/hadoop/yarn.nix b/nixos/tests/hadoop/yarn.nix
index ba39e257dc8..1bf8e3831f6 100644
--- a/nixos/tests/hadoop/yarn.nix
+++ b/nixos/tests/hadoop/yarn.nix
@@ -12,14 +12,14 @@ import ../make-test-python.nix ({ package, ... }: {
         };
       };
     };
-    nodemanager = { ... }: {
+    nodemanager = { options, lib, ... }: {
       services.hadoop = {
         inherit package;
         yarn.nodemanager = {
           enable = true;
           openFirewall = true;
         };
-        yarnSite = {
+        yarnSite = options.services.hadoop.yarnSite.default // {
           "yarn.resourcemanager.hostname" = "resourcemanager";
           "yarn.nodemanager.log-dirs" = "/tmp/userlogs";
         };