private void mySetup(int stripeLength) throws Exception { if (System.getProperty("hadoop.log.dir") == null) { String base = new File(".").getAbsolutePath(); System.setProperty("hadoop.log.dir", new Path(base).toString() + "/logs"); } new File(TEST_DIR).mkdirs(); // Make sure data directory exists conf = new Configuration(); conf.set("raid.config.file", CONFIG_FILE); conf.setBoolean("raid.config.reload", true); conf.setLong("raid.config.reload.interval", RELOAD_INTERVAL); // scan all policies once every 5 second conf.setLong("raid.policy.rescan.interval", 5000); // do not use map-reduce cluster for Raiding conf.set("raid.classname", "org.apache.hadoop.raid.LocalRaidNode"); conf.set("raid.server.address", "localhost:" + MiniDFSCluster.getFreePort()); conf.set("mapred.raid.http.address", "localhost:0"); Utils.loadTestCodecs( conf, stripeLength, stripeLength, 1, 3, "/destraid", "/destraidrs", false, true); conf.setBoolean("dfs.permissions", false); // Make sure initial repl is smaller than NUM_DATANODES conf.setInt(RaidNode.RAID_PARITY_INITIAL_REPL_KEY, 1); dfsCluster = new MiniDFSCluster(conf, NUM_DATANODES, true, null); dfsCluster.waitActive(); fileSys = dfsCluster.getFileSystem(); namenode = fileSys.getUri().toString(); FileSystem.setDefaultUri(conf, namenode); mr = new MiniMRCluster(4, namenode, 3); jobTrackerName = "localhost:" + mr.getJobTrackerPort(); hftp = "hftp://localhost.localdomain:" + dfsCluster.getNameNodePort(); FileSystem.setDefaultUri(conf, namenode); conf.set("mapred.job.tracker", jobTrackerName); conf.set(RaidNode.RAID_CHECKSUM_STORE_CLASS_KEY, "org.apache.hadoop.raid.LocalChecksumStore"); conf.setBoolean(RaidNode.RAID_CHECKSUM_STORE_REQUIRED_KEY, true); conf.set(LocalChecksumStore.LOCAL_CHECK_STORE_DIR_KEY, CHECKSUM_STORE_DIR); conf.set(RaidNode.RAID_STRIPE_STORE_CLASS_KEY, "org.apache.hadoop.raid.LocalStripeStore"); conf.set(LocalStripeStore.LOCAL_STRIPE_STORE_DIR_KEY, STRIPE_STORE_DIR); ConfigBuilder cb = new ConfigBuilder(CONFIG_FILE); cb.addPolicy("RaidTest1", "/user/dhruba/raidtest", 1, 1); cb.addPolicy("RaidTest2", "/user/dhruba/raidtestrs", 1, 1, "rs"); cb.persist(); }
/** Check that we can reach a NameNode or a JobTracker using a specific socket factory */ public void testSocketFactory() throws IOException { // Create a standard mini-cluster Configuration sconf = new Configuration(); MiniDFSCluster cluster = new MiniDFSCluster(sconf, 1, true, null); final int nameNodePort = cluster.getNameNodePort(); // Get a reference to its DFS directly FileSystem fs = cluster.getFileSystem(); assertTrue(fs instanceof DistributedFileSystem); DistributedFileSystem directDfs = (DistributedFileSystem) fs; // Get another reference via network using a specific socket factory Configuration cconf = new Configuration(); FileSystem.setDefaultUri(cconf, String.format("hdfs://localhost:%s/", nameNodePort + 10)); cconf.set( "hadoop.rpc.socket.factory.class.default", "org.apache.hadoop.ipc.DummySocketFactory"); cconf.set( "hadoop.rpc.socket.factory.class.ClientProtocol", "org.apache.hadoop.ipc.DummySocketFactory"); cconf.set( "hadoop.rpc.socket.factory.class.JobSubmissionProtocol", "org.apache.hadoop.ipc.DummySocketFactory"); fs = FileSystem.get(cconf); assertTrue(fs instanceof DistributedFileSystem); DistributedFileSystem dfs = (DistributedFileSystem) fs; JobClient client = null; MiniMRCluster mr = null; try { // This will test RPC to the NameNode only. // could we test Client-DataNode connections? Path filePath = new Path("/dir"); assertFalse(directDfs.exists(filePath)); assertFalse(dfs.exists(filePath)); directDfs.mkdirs(filePath); assertTrue(directDfs.exists(filePath)); assertTrue(dfs.exists(filePath)); // This will test TPC to a JobTracker mr = new MiniMRCluster(1, fs.getUri().toString(), 1); final int jobTrackerPort = mr.getJobTrackerPort(); JobConf jconf = new JobConf(cconf); jconf.set("mapred.job.tracker", String.format("localhost:%d", jobTrackerPort + 10)); client = new JobClient(jconf); JobStatus[] jobs = client.jobsToComplete(); assertTrue(jobs.length == 0); } finally { try { if (client != null) client.close(); } catch (Exception ignored) { // nothing we can do ignored.printStackTrace(); } try { if (dfs != null) dfs.close(); } catch (Exception ignored) { // nothing we can do ignored.printStackTrace(); } try { if (directDfs != null) directDfs.close(); } catch (Exception ignored) { // nothing we can do ignored.printStackTrace(); } try { if (cluster != null) cluster.shutdown(); } catch (Exception ignored) { // nothing we can do ignored.printStackTrace(); } if (mr != null) { try { mr.shutdown(); } catch (Exception ignored) { ignored.printStackTrace(); } } } }
public void testSymLink() { try { boolean mayExit = false; MiniMRCluster mr = null; MiniDFSCluster dfs = null; try { Configuration conf = new Configuration(); dfs = new MiniDFSCluster(conf, 1, true, null); FileSystem fileSys = dfs.getFileSystem(); String namenode = fileSys.getUri().toString(); mr = new MiniMRCluster(1, namenode, 3); // During tests, the default Configuration will use a local mapred // So don't specify -config or -cluster String strJobtracker = "mapred.job.tracker=" + "localhost:" + mr.getJobTrackerPort(); String strNamenode = "fs.default.name=" + namenode; String argv[] = new String[] { "-input", INPUT_FILE, "-output", OUTPUT_DIR, "-mapper", map, "-reducer", reduce, // "-verbose", // "-jobconf", "stream.debug=set" "-jobconf", strNamenode, "-jobconf", strJobtracker, "-jobconf", "stream.tmpdir=" + System.getProperty("test.build.data", "/tmp"), "-jobconf", "mapred.child.java.opts=-Dcontrib.name=" + System.getProperty("contrib.name") + " " + "-Dbuild.test=" + System.getProperty("build.test") + " " + conf.get("mapred.child.java.opts", ""), "-cacheFile", fileSys.getUri() + CACHE_FILE + "#testlink" }; fileSys.delete(new Path(OUTPUT_DIR), true); DataOutputStream file = fileSys.create(new Path(INPUT_FILE)); file.writeBytes(mapString); file.close(); file = fileSys.create(new Path(CACHE_FILE)); file.writeBytes(cacheString); file.close(); job = new StreamJob(argv, mayExit); job.go(); fileSys = dfs.getFileSystem(); String line = null; Path[] fileList = FileUtil.stat2Paths(fileSys.listStatus(new Path(OUTPUT_DIR), new OutputLogFilter())); for (int i = 0; i < fileList.length; i++) { System.out.println(fileList[i].toString()); BufferedReader bread = new BufferedReader(new InputStreamReader(fileSys.open(fileList[i]))); line = bread.readLine(); System.out.println(line); } assertEquals(cacheString + "\t", line); } finally { if (dfs != null) { dfs.shutdown(); } if (mr != null) { mr.shutdown(); } } } catch (Exception e) { failTrace(e); } }