public virtual void StopJNs() { if (mjc != null) { mjc.Shutdown(); mjc = null; } }
/// <summary>Starts a cluster using QJM with the defined configuration.</summary> /// <exception cref="System.IO.IOException">if there is an I/O error</exception> private void StartCluster() { mjc = new MiniJournalCluster.Builder(conf).Build(); conf.Set(DFSConfigKeys.DfsNamenodeEditsDirKey, mjc.GetQuorumJournalURI("myjournal" ).ToString()); cluster = new MiniDFSCluster.Builder(conf).Build(); cluster.WaitActive(); fs = cluster.GetFileSystem(); }
public static void AssertExistsInQuorum(MiniJournalCluster cluster, string fname) { int count = 0; for (int i = 0; i < 3; i++) { FilePath dir = cluster.GetCurrentDir(i, Jid); if (new FilePath(dir, fname).Exists()) { count++; } } NUnit.Framework.Assert.IsTrue("File " + fname + " should exist in a quorum of dirs" , count >= cluster.GetQuorumSize()); }
/// <exception cref="System.IO.IOException"/> public static EditLogOutputStream WriteSegment(MiniJournalCluster cluster, QuorumJournalManager qjm, long startTxId, int numTxns, bool finalize) { EditLogOutputStream stm = qjm.StartLogSegment(startTxId, NameNodeLayoutVersion.CurrentLayoutVersion ); // Should create in-progress AssertExistsInQuorum(cluster, NNStorage.GetInProgressEditsFileName(startTxId)); WriteTxns(stm, startTxId, numTxns); if (finalize) { stm.Close(); qjm.FinalizeLogSegment(startTxId, startTxId + numTxns - 1); return(null); } else { return(stm); } }
/// <exception cref="System.IO.IOException"/> private MiniQJMHACluster(MiniQJMHACluster.Builder builder) { this.conf = builder.conf; int retryCount = 0; while (true) { try { basePort = 10000 + Random.Next(1000) * 4; // start 3 journal nodes journalCluster = new MiniJournalCluster.Builder(conf).Format(true).Build(); URI journalURI = journalCluster.GetQuorumJournalURI(Nameservice); // start cluster with 2 NameNodes MiniDFSNNTopology topology = CreateDefaultTopology(basePort); InitHAConf(journalURI, builder.conf); // First start up the NNs just to format the namespace. The MinIDFSCluster // has no way to just format the NameNodes without also starting them. cluster = builder.dfsBuilder.NnTopology(topology).ManageNameDfsSharedDirs(false). Build(); cluster.WaitActive(); cluster.ShutdownNameNodes(); // initialize the journal nodes Configuration confNN0 = cluster.GetConfiguration(0); NameNode.InitializeSharedEdits(confNN0, true); cluster.GetNameNodeInfos()[0].SetStartOpt(builder.startOpt); cluster.GetNameNodeInfos()[1].SetStartOpt(builder.startOpt); // restart the cluster cluster.RestartNameNodes(); ++retryCount; break; } catch (BindException) { Log.Info("MiniQJMHACluster port conflicts, retried " + retryCount + " times"); } } }
public virtual void StartJNs() { mjc = new MiniJournalCluster.Builder(conf).Build(); }