75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, lib, pkgs, ...}:
 | 
						|
let
 | 
						|
  cfg = config.services.hadoop;
 | 
						|
  hadoopConf = import ./conf.nix { hadoop = cfg; pkgs = pkgs; };
 | 
						|
in
 | 
						|
with lib;
 | 
						|
{
 | 
						|
  options.services.hadoop.yarn = {
 | 
						|
    resourcemanager.enabled = mkOption {
 | 
						|
      type = types.bool;
 | 
						|
      default = false;
 | 
						|
      description = ''
 | 
						|
        Whether to run the Hadoop YARN ResourceManager
 | 
						|
      '';
 | 
						|
    };
 | 
						|
    nodemanager.enabled = mkOption {
 | 
						|
      type = types.bool;
 | 
						|
      default = false;
 | 
						|
      description = ''
 | 
						|
        Whether to run the Hadoop YARN NodeManager
 | 
						|
      '';
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  config = mkMerge [
 | 
						|
    (mkIf (
 | 
						|
        cfg.yarn.resourcemanager.enabled || cfg.yarn.nodemanager.enabled
 | 
						|
    ) {
 | 
						|
 | 
						|
      users.users.yarn = {
 | 
						|
        description = "Hadoop YARN user";
 | 
						|
        group = "hadoop";
 | 
						|
        uid = config.ids.uids.yarn;
 | 
						|
      };
 | 
						|
    })
 | 
						|
 | 
						|
    (mkIf cfg.yarn.resourcemanager.enabled {
 | 
						|
      systemd.services.yarn-resourcemanager = {
 | 
						|
        description = "Hadoop YARN ResourceManager";
 | 
						|
        wantedBy = [ "multi-user.target" ];
 | 
						|
 | 
						|
        environment = {
 | 
						|
          HADOOP_HOME = "${cfg.package}";
 | 
						|
        };
 | 
						|
 | 
						|
        serviceConfig = {
 | 
						|
          User = "yarn";
 | 
						|
          SyslogIdentifier = "yarn-resourcemanager";
 | 
						|
          ExecStart = "${cfg.package}/bin/yarn --config ${hadoopConf} " +
 | 
						|
                      " resourcemanager";
 | 
						|
        };
 | 
						|
      };
 | 
						|
    })
 | 
						|
 | 
						|
    (mkIf cfg.yarn.nodemanager.enabled {
 | 
						|
      systemd.services.yarn-nodemanager = {
 | 
						|
        description = "Hadoop YARN NodeManager";
 | 
						|
        wantedBy = [ "multi-user.target" ];
 | 
						|
 | 
						|
        environment = {
 | 
						|
          HADOOP_HOME = "${cfg.package}";
 | 
						|
        };
 | 
						|
 | 
						|
        serviceConfig = {
 | 
						|
          User = "yarn";
 | 
						|
          SyslogIdentifier = "yarn-nodemanager";
 | 
						|
          ExecStart = "${cfg.package}/bin/yarn --config ${hadoopConf} " +
 | 
						|
                      " nodemanager";
 | 
						|
        };
 | 
						|
      };
 | 
						|
    })
 | 
						|
 | 
						|
  ];
 | 
						|
}
 |