diff options
author | Allan Espinosa <allan.espinosa@outlook.com> | 2018-05-20 21:09:31 -0400 |
---|---|---|
committer | Allan Espinosa <allan.espinosa@outlook.com> | 2018-06-29 23:14:02 -0400 |
commit | 0c10b2baa6bf61c8ddaed7cdb6c2f2dbaab42662 (patch) | |
tree | ef0f30b3a0b9e1f6a6f29c5f3913f904f8f58a66 /nixos/modules/services/cluster/hadoop/hdfs.nix | |
parent | 978397d358ba94791bef736f19d3171a13bc03dc (diff) | |
download | nixpkgs-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.nix | 73 |
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; + }; + }) + + ]; +} |