at 23.11-pre 2.9 kB view raw
1# Test a minimal hbase cluster 2{ pkgs, ... }: 3import ../make-test-python.nix ({ hadoop ? pkgs.hadoop, hbase ? pkgs.hbase, ... }: 4with pkgs.lib; 5{ 6 name = "hadoop-hbase"; 7 8 nodes = let 9 coreSite = { 10 "fs.defaultFS" = "hdfs://namenode:8020"; 11 }; 12 defOpts = { 13 enable = true; 14 openFirewall = true; 15 }; 16 zookeeperQuorum = "zookeeper"; 17 in { 18 zookeeper = { ... }: { 19 services.zookeeper.enable = true; 20 networking.firewall.allowedTCPPorts = [ 2181 ]; 21 }; 22 namenode = { ... }: { 23 services.hadoop = { 24 hdfs = { 25 namenode = defOpts // { formatOnInit = true; }; 26 }; 27 inherit coreSite; 28 }; 29 }; 30 datanode = { ... }: { 31 virtualisation.diskSize = 8192; 32 services.hadoop = { 33 hdfs.datanode = defOpts; 34 inherit coreSite; 35 }; 36 }; 37 38 master = { ... }:{ 39 services.hadoop = { 40 inherit coreSite; 41 hbase = { 42 inherit zookeeperQuorum; 43 master = defOpts // { initHDFS = true; }; 44 }; 45 }; 46 }; 47 regionserver = { ... }:{ 48 services.hadoop = { 49 inherit coreSite; 50 hbase = { 51 inherit zookeeperQuorum; 52 regionServer = defOpts; 53 }; 54 }; 55 }; 56 thrift = { ... }:{ 57 services.hadoop = { 58 inherit coreSite; 59 hbase = { 60 inherit zookeeperQuorum; 61 thrift = defOpts; 62 }; 63 }; 64 }; 65 rest = { ... }:{ 66 services.hadoop = { 67 inherit coreSite; 68 hbase = { 69 inherit zookeeperQuorum; 70 rest = defOpts; 71 }; 72 }; 73 }; 74 }; 75 76 testScript = '' 77 start_all() 78 79 # wait for HDFS cluster 80 namenode.wait_for_unit("hdfs-namenode") 81 namenode.wait_for_unit("network.target") 82 namenode.wait_for_open_port(8020) 83 namenode.wait_for_open_port(9870) 84 datanode.wait_for_unit("hdfs-datanode") 85 datanode.wait_for_unit("network.target") 86 datanode.wait_for_open_port(9864) 87 datanode.wait_for_open_port(9866) 88 datanode.wait_for_open_port(9867) 89 90 # wait for ZK 91 zookeeper.wait_for_unit("zookeeper") 92 zookeeper.wait_for_open_port(2181) 93 94 # wait for HBase to start up 95 master.wait_for_unit("hbase-master") 96 regionserver.wait_for_unit("hbase-regionserver") 97 98 assert "1 active master, 0 backup masters, 1 servers" in master.succeed("echo status | HADOOP_USER_NAME=hbase hbase shell -n") 99 regionserver.wait_until_succeeds("echo \"create 't1','f1'\" | HADOOP_USER_NAME=hbase hbase shell -n") 100 assert "NAME => 'f1'" in regionserver.succeed("echo \"describe 't1'\" | HADOOP_USER_NAME=hbase hbase shell -n") 101 102 rest.wait_for_open_port(8080) 103 assert "${hbase.version}" in regionserver.succeed("curl http://rest:8080/version/cluster") 104 105 thrift.wait_for_open_port(9090) 106 ''; 107 108 meta.maintainers = with maintainers; [ illustris ]; 109})