at 18.09-beta 1.8 kB view raw
1{ config, lib, pkgs, ...}: 2let 3 cfg = config.services.hadoop; 4 hadoopConf = import ./conf.nix { hadoop = cfg; pkgs = pkgs; }; 5in 6with lib; 7{ 8 options.services.hadoop.yarn = { 9 resourcemanager.enabled = mkOption { 10 type = types.bool; 11 default = false; 12 description = '' 13 Whether to run the Hadoop YARN ResourceManager 14 ''; 15 }; 16 nodemanager.enabled = mkOption { 17 type = types.bool; 18 default = false; 19 description = '' 20 Whether to run the Hadoop YARN NodeManager 21 ''; 22 }; 23 }; 24 25 config = mkMerge [ 26 (mkIf ( 27 cfg.yarn.resourcemanager.enabled || cfg.yarn.nodemanager.enabled 28 ) { 29 30 users.users.yarn = { 31 description = "Hadoop YARN user"; 32 group = "hadoop"; 33 uid = config.ids.uids.yarn; 34 }; 35 }) 36 37 (mkIf cfg.yarn.resourcemanager.enabled { 38 systemd.services."yarn-resourcemanager" = { 39 description = "Hadoop YARN ResourceManager"; 40 wantedBy = [ "multi-user.target" ]; 41 42 environment = { 43 HADOOP_HOME = "${cfg.package}"; 44 }; 45 46 serviceConfig = { 47 User = "yarn"; 48 SyslogIdentifier = "yarn-resourcemanager"; 49 ExecStart = "${cfg.package}/bin/yarn --config ${hadoopConf} " + 50 " resourcemanager"; 51 }; 52 }; 53 }) 54 55 (mkIf cfg.yarn.nodemanager.enabled { 56 systemd.services."yarn-nodemanager" = { 57 description = "Hadoop YARN NodeManager"; 58 wantedBy = [ "multi-user.target" ]; 59 60 environment = { 61 HADOOP_HOME = "${cfg.package}"; 62 }; 63 64 serviceConfig = { 65 User = "yarn"; 66 SyslogIdentifier = "yarn-nodemanager"; 67 ExecStart = "${cfg.package}/bin/yarn --config ${hadoopConf} " + 68 " nodemanager"; 69 }; 70 }; 71 }) 72 73 ]; 74}