aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/cluster/hadoop/hdfs.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/cluster/hadoop/hdfs.nix')
-rw-r--r--nixpkgs/nixos/modules/services/cluster/hadoop/hdfs.nix73
1 files changed, 73 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/services/cluster/hadoop/hdfs.nix b/nixpkgs/nixos/modules/services/cluster/hadoop/hdfs.nix
new file mode 100644
index 00000000000..4f4b0a92108
--- /dev/null
+++ b/nixpkgs/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.users.hdfs = {
+ description = "Hadoop HDFS user";
+ group = "hadoop";
+ uid = config.ids.uids.hdfs;
+ };
+ })
+
+ ];
+}