summary refs log tree commit diff
path: root/nixos/modules/services/cluster/hadoop/hdfs.nix
diff options
context:
space:
mode:
authorAllan Espinosa <allan.espinosa@outlook.com>2018-05-20 21:09:31 -0400
committerAllan Espinosa <allan.espinosa@outlook.com>2018-06-29 23:14:02 -0400
commit0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662 (patch)
treeef0f30b3a0b9e1f6a6f29c5f3913f904f8f58a66 /nixos/modules/services/cluster/hadoop/hdfs.nix
parent978397d358ba94791bef736f19d3171a13bc03dc (diff)
downloadnixpkgs-0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662.tar
nixpkgs-0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662.tar.gz
nixpkgs-0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662.tar.bz2
nixpkgs-0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662.tar.lz
nixpkgs-0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662.tar.xz
nixpkgs-0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662.tar.zst
nixpkgs-0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662.zip
nixos/hadoop: add hadoop module (hdfs, yarn)
Diffstat (limited to 'nixos/modules/services/cluster/hadoop/hdfs.nix')
-rw-r--r--nixos/modules/services/cluster/hadoop/hdfs.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/nixos/modules/services/cluster/hadoop/hdfs.nix b/nixos/modules/services/cluster/hadoop/hdfs.nix
new file mode 100644
index 00000000000..48020e6139c
--- /dev/null
+++ b/nixos/modules/services/cluster/hadoop/hdfs.nix
@@ -0,0 +1,73 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.services.hadoop;
+  hadoopConf = import ./conf.nix { hadoop = cfg; pkgs = pkgs; };
+in
+with lib;
+{
+  options.services.hadoop.hdfs = {
+    namenode.enabled = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Whether to run the Hadoop YARN NameNode
+      '';
+    };
+    datanode.enabled = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Whether to run the Hadoop YARN DataNode
+      '';
+    };
+  };
+
+  config = mkMerge [
+    (mkIf cfg.hdfs.namenode.enabled {
+      systemd.services."hdfs-namenode" = {
+        description = "Hadoop HDFS NameNode";
+        wantedBy = [ "multi-user.target" ];
+
+        environment = {
+          HADOOP_HOME = "${cfg.package}";
+        };
+
+        preStart = ''
+          ${cfg.package}/bin/hdfs --config ${hadoopConf} namenode -format -nonInteractive || true
+        '';
+
+        serviceConfig = {
+          User = "hdfs";
+          SyslogIdentifier = "hdfs-namenode";
+          ExecStart = "${cfg.package}/bin/hdfs --config ${hadoopConf} namenode";
+        };
+      };
+    })
+    (mkIf cfg.hdfs.datanode.enabled {
+      systemd.services."hdfs-datanode" = {
+        description = "Hadoop HDFS DataNode";
+        wantedBy = [ "multi-user.target" ];
+
+        environment = {
+          HADOOP_HOME = "${cfg.package}";
+        };
+
+        serviceConfig = {
+          User = "hdfs";
+          SyslogIdentifier = "hdfs-datanode";
+          ExecStart = "${cfg.package}/bin/hdfs --config ${hadoopConf} datanode";
+        };
+      };
+    })
+    (mkIf (
+        cfg.hdfs.namenode.enabled || cfg.hdfs.datanode.enabled
+    ) {
+      users.extraUsers.hdfs = {
+        description = "Hadoop HDFS user";
+        group = "hadoop";
+        uid = config.ids.uids.hdfs;
+      };
+    })
+
+  ];
+}