at 23.05-pre 2.3 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 }; 57 58 testScript = '' 59 start_all() 60 61 # wait for HDFS cluster 62 namenode.wait_for_unit("hdfs-namenode") 63 namenode.wait_for_unit("network.target") 64 namenode.wait_for_open_port(8020) 65 namenode.wait_for_open_port(9870) 66 datanode.wait_for_unit("hdfs-datanode") 67 datanode.wait_for_unit("network.target") 68 datanode.wait_for_open_port(9864) 69 datanode.wait_for_open_port(9866) 70 datanode.wait_for_open_port(9867) 71 72 # wait for ZK 73 zookeeper.wait_for_unit("zookeeper") 74 zookeeper.wait_for_open_port(2181) 75 76 # wait for HBase to start up 77 master.wait_for_unit("hbase-master") 78 regionserver.wait_for_unit("hbase-regionserver") 79 80 assert "1 active master, 0 backup masters, 1 servers" in master.succeed("echo status | HADOOP_USER_NAME=hbase hbase shell -n") 81 regionserver.wait_until_succeeds("echo \"create 't1','f1'\" | HADOOP_USER_NAME=hbase hbase shell -n") 82 assert "NAME => 'f1'" in regionserver.succeed("echo \"describe 't1'\" | HADOOP_USER_NAME=hbase hbase shell -n") 83 ''; 84})