2021-12-06 16:07:01 +00:00
|
|
|
# Test a minimal HDFS cluster with no HA
|
2020-04-24 23:36:52 +00:00
|
|
|
import ../make-test-python.nix ({...}: {
|
|
|
|
nodes = {
|
|
|
|
namenode = {pkgs, ...}: {
|
|
|
|
services.hadoop = {
|
2021-10-28 06:52:43 +00:00
|
|
|
package = pkgs.hadoop;
|
2021-12-06 16:07:01 +00:00
|
|
|
hdfs = {
|
|
|
|
namenode = {
|
|
|
|
enable = true;
|
|
|
|
formatOnInit = true;
|
|
|
|
};
|
|
|
|
httpfs.enable = true;
|
|
|
|
};
|
2020-04-24 23:36:52 +00:00
|
|
|
coreSite = {
|
|
|
|
"fs.defaultFS" = "hdfs://namenode:8020";
|
2021-12-06 16:07:01 +00:00
|
|
|
"hadoop.proxyuser.httpfs.groups" = "*";
|
|
|
|
"hadoop.proxyuser.httpfs.hosts" = "*";
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
datanode = {pkgs, ...}: {
|
|
|
|
services.hadoop = {
|
2021-10-28 06:52:43 +00:00
|
|
|
package = pkgs.hadoop;
|
2021-12-06 16:07:01 +00:00
|
|
|
hdfs.datanode.enable = true;
|
2020-04-24 23:36:52 +00:00
|
|
|
coreSite = {
|
|
|
|
"fs.defaultFS" = "hdfs://namenode:8020";
|
2021-12-06 16:07:01 +00:00
|
|
|
"hadoop.proxyuser.httpfs.groups" = "*";
|
|
|
|
"hadoop.proxyuser.httpfs.hosts" = "*";
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
testScript = ''
|
|
|
|
start_all()
|
|
|
|
|
|
|
|
namenode.wait_for_unit("hdfs-namenode")
|
|
|
|
namenode.wait_for_unit("network.target")
|
|
|
|
namenode.wait_for_open_port(8020)
|
|
|
|
namenode.wait_for_open_port(9870)
|
|
|
|
|
|
|
|
datanode.wait_for_unit("hdfs-datanode")
|
|
|
|
datanode.wait_for_unit("network.target")
|
|
|
|
datanode.wait_for_open_port(9864)
|
|
|
|
datanode.wait_for_open_port(9866)
|
|
|
|
datanode.wait_for_open_port(9867)
|
|
|
|
|
2020-10-27 00:29:36 +00:00
|
|
|
namenode.succeed("curl -f http://namenode:9870")
|
|
|
|
datanode.succeed("curl -f http://datanode:9864")
|
2021-12-06 16:07:01 +00:00
|
|
|
|
|
|
|
datanode.succeed("sudo -u hdfs hdfs dfsadmin -safemode wait")
|
|
|
|
datanode.succeed("echo testfilecontents | sudo -u hdfs hdfs dfs -put - /testfile")
|
|
|
|
assert "testfilecontents" in datanode.succeed("sudo -u hdfs hdfs dfs -cat /testfile")
|
|
|
|
|
|
|
|
namenode.wait_for_unit("hdfs-httpfs")
|
|
|
|
namenode.wait_for_open_port(14000)
|
|
|
|
assert "testfilecontents" in datanode.succeed("curl -f \"http://namenode:14000/webhdfs/v1/testfile?user.name=hdfs&op=OPEN\" 2>&1")
|
2020-04-24 23:36:52 +00:00
|
|
|
'';
|
|
|
|
})
|