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.hdfs = { 9 namenode.enabled = mkOption { 10 type = types.bool; 11 default = false; 12 description = '' 13 Whether to run the Hadoop YARN NameNode 14 ''; 15 }; 16 datanode.enabled = mkOption { 17 type = types.bool; 18 default = false; 19 description = '' 20 Whether to run the Hadoop YARN DataNode 21 ''; 22 }; 23 }; 24 25 config = mkMerge [ 26 (mkIf cfg.hdfs.namenode.enabled { 27 systemd.services."hdfs-namenode" = { 28 description = "Hadoop HDFS NameNode"; 29 wantedBy = [ "multi-user.target" ]; 30 31 environment = { 32 HADOOP_HOME = "${cfg.package}"; 33 }; 34 35 preStart = '' 36 ${cfg.package}/bin/hdfs --config ${hadoopConf} namenode -format -nonInteractive || true 37 ''; 38 39 serviceConfig = { 40 User = "hdfs"; 41 SyslogIdentifier = "hdfs-namenode"; 42 ExecStart = "${cfg.package}/bin/hdfs --config ${hadoopConf} namenode"; 43 }; 44 }; 45 }) 46 (mkIf cfg.hdfs.datanode.enabled { 47 systemd.services."hdfs-datanode" = { 48 description = "Hadoop HDFS DataNode"; 49 wantedBy = [ "multi-user.target" ]; 50 51 environment = { 52 HADOOP_HOME = "${cfg.package}"; 53 }; 54 55 serviceConfig = { 56 User = "hdfs"; 57 SyslogIdentifier = "hdfs-datanode"; 58 ExecStart = "${cfg.package}/bin/hdfs --config ${hadoopConf} datanode"; 59 }; 60 }; 61 }) 62 (mkIf ( 63 cfg.hdfs.namenode.enabled || cfg.hdfs.datanode.enabled 64 ) { 65 users.users.hdfs = { 66 description = "Hadoop HDFS user"; 67 group = "hadoop"; 68 uid = config.ids.uids.hdfs; 69 }; 70 }) 71 72 ]; 73}