/// <summary>Initialize SecondaryNameNode.</summary> /// <exception cref="System.IO.IOException"/> private void Initialize(Configuration conf, SecondaryNameNode.CommandLineOpts commandLineOpts ) { IPEndPoint infoSocAddr = GetHttpAddress(conf); string infoBindAddress = infoSocAddr.GetHostName(); UserGroupInformation.SetConfiguration(conf); if (UserGroupInformation.IsSecurityEnabled()) { SecurityUtil.Login(conf, DFSConfigKeys.DfsSecondaryNamenodeKeytabFileKey, DFSConfigKeys .DfsSecondaryNamenodeKerberosPrincipalKey, infoBindAddress); } // initiate Java VM metrics DefaultMetricsSystem.Initialize("SecondaryNameNode"); JvmMetrics.Create("SecondaryNameNode", conf.Get(DFSConfigKeys.DfsMetricsSessionIdKey ), DefaultMetricsSystem.Instance()); // Create connection to the namenode. shouldRun = true; nameNodeAddr = NameNode.GetServiceAddress(conf, true); this.conf = conf; this.namenode = NameNodeProxies.CreateNonHAProxy <NamenodeProtocol>(conf, nameNodeAddr , UserGroupInformation.GetCurrentUser(), true).GetProxy(); // initialize checkpoint directories fsName = GetInfoServer(); checkpointDirs = FSImage.GetCheckpointDirs(conf, "/tmp/hadoop/dfs/namesecondary"); checkpointEditsDirs = FSImage.GetCheckpointEditsDirs(conf, "/tmp/hadoop/dfs/namesecondary" ); checkpointImage = new SecondaryNameNode.CheckpointStorage(conf, checkpointDirs, checkpointEditsDirs ); checkpointImage.RecoverCreate(commandLineOpts.ShouldFormat()); checkpointImage.DeleteTempEdits(); namesystem = new FSNamesystem(conf, checkpointImage, true); // Disable quota checks namesystem.dir.DisableQuotaChecks(); // Initialize other scheduling parameters from the configuration checkpointConf = new CheckpointConf(conf); IPEndPoint httpAddr = infoSocAddr; string httpsAddrString = conf.GetTrimmed(DFSConfigKeys.DfsNamenodeSecondaryHttpsAddressKey , DFSConfigKeys.DfsNamenodeSecondaryHttpsAddressDefault); IPEndPoint httpsAddr = NetUtils.CreateSocketAddr(httpsAddrString); HttpServer2.Builder builder = DFSUtil.HttpServerTemplateForNNAndJN(conf, httpAddr , httpsAddr, "secondary", DFSConfigKeys.DfsSecondaryNamenodeKerberosInternalSpnegoPrincipalKey , DFSConfigKeys.DfsSecondaryNamenodeKeytabFileKey); nameNodeStatusBeanName = MBeans.Register("SecondaryNameNode", "SecondaryNameNodeInfo" , this); infoServer = builder.Build(); infoServer.SetAttribute("secondary.name.node", this); infoServer.SetAttribute("name.system.image", checkpointImage); infoServer.SetAttribute(JspHelper.CurrentConf, conf); infoServer.AddInternalServlet("imagetransfer", ImageServlet.PathSpec, typeof(ImageServlet ), true); infoServer.Start(); Log.Info("Web server init done"); HttpConfig.Policy policy = DFSUtil.GetHttpPolicy(conf); int connIdx = 0; if (policy.IsHttpEnabled()) { IPEndPoint httpAddress = infoServer.GetConnectorAddress(connIdx++); conf.Set(DFSConfigKeys.DfsNamenodeSecondaryHttpAddressKey, NetUtils.GetHostPortString (httpAddress)); } if (policy.IsHttpsEnabled()) { IPEndPoint httpsAddress = infoServer.GetConnectorAddress(connIdx); conf.Set(DFSConfigKeys.DfsNamenodeSecondaryHttpsAddressKey, NetUtils.GetHostPortString (httpsAddress)); } legacyOivImageDir = conf.Get(DFSConfigKeys.DfsNamenodeLegacyOivImageDirKey); Log.Info("Checkpoint Period :" + checkpointConf.GetPeriod() + " secs " + "(" + checkpointConf.GetPeriod() / 60 + " min)"); Log.Info("Log Size Trigger :" + checkpointConf.GetTxnCount() + " txns"); }