Esempio n. 1
0
        /// <exception cref="System.IO.IOException"/>
        internal EditLogBackupOutputStream(NamenodeRegistration bnReg, JournalInfo journalInfo
                                           )
            : base()
        {
            // RPC proxy to backup node
            // backup node registration
            // active node registration
            // serialized output sent to backup node
            // backup node
            // active name-node
            this.bnRegistration = bnReg;
            this.journalInfo    = journalInfo;
            IPEndPoint bnAddress = NetUtils.CreateSocketAddr(bnRegistration.GetAddress());

            try
            {
                this.backupNode = NameNodeProxies.CreateNonHAProxy <JournalProtocol>(new HdfsConfiguration
                                                                                         (), bnAddress, UserGroupInformation.GetCurrentUser(), true).GetProxy();
            }
            catch (IOException e)
            {
                Storage.Log.Error("Error connecting to: " + bnAddress, e);
                throw;
            }
            this.doubleBuf = new EditsDoubleBuffer(DefaultBufferSize);
            this.@out      = new DataOutputBuffer(DefaultBufferSize);
        }
Esempio n. 2
0
 internal BackupJournalManager(NamenodeRegistration bnReg, NamenodeRegistration nnReg
                               )
 {
     journalInfo = new JournalInfo(nnReg.GetLayoutVersion(), nnReg.GetClusterID(), nnReg
                                   .GetNamespaceID());
     this.bnReg = bnReg;
 }
 /// <exception cref="System.IO.IOException"/>
 public virtual void EndCheckpoint(NamenodeRegistration registration, CheckpointSignature
                                   sig)
 {
     NamenodeProtocolProtos.EndCheckpointRequestProto req = ((NamenodeProtocolProtos.EndCheckpointRequestProto
                                                              )NamenodeProtocolProtos.EndCheckpointRequestProto.NewBuilder().SetRegistration(PBHelper
                                                                                                                                             .Convert(registration)).SetSignature(PBHelper.Convert(sig)).Build());
     try
     {
         rpcProxy.EndCheckpoint(NullController, req);
     }
     catch (ServiceException e)
     {
         throw ProtobufHelper.GetRemoteException(e);
     }
 }
 /// <exception cref="System.IO.IOException"/>
 public virtual void ErrorReport(NamenodeRegistration registration, int errorCode,
                                 string msg)
 {
     NamenodeProtocolProtos.ErrorReportRequestProto req = ((NamenodeProtocolProtos.ErrorReportRequestProto
                                                            )NamenodeProtocolProtos.ErrorReportRequestProto.NewBuilder().SetErrorCode(errorCode
                                                                                                                                      ).SetMsg(msg).SetRegistration(PBHelper.Convert(registration)).Build());
     try
     {
         rpcProxy.ErrorReport(NullController, req);
     }
     catch (ServiceException e)
     {
         throw ProtobufHelper.GetRemoteException(e);
     }
 }
 /// <exception cref="System.IO.IOException"/>
 public virtual NamenodeCommand StartCheckpoint(NamenodeRegistration registration)
 {
     NamenodeProtocolProtos.StartCheckpointRequestProto req = ((NamenodeProtocolProtos.StartCheckpointRequestProto
                                                                )NamenodeProtocolProtos.StartCheckpointRequestProto.NewBuilder().SetRegistration
                                                                   (PBHelper.Convert(registration)).Build());
     HdfsProtos.NamenodeCommandProto cmd;
     try
     {
         cmd = rpcProxy.StartCheckpoint(NullController, req).GetCommand();
     }
     catch (ServiceException e)
     {
         throw ProtobufHelper.GetRemoteException(e);
     }
     return(PBHelper.Convert(cmd));
 }
 /// <exception cref="System.IO.IOException"/>
 public virtual NamenodeRegistration RegisterSubordinateNamenode(NamenodeRegistration
                                                                 registration)
 {
     NamenodeProtocolProtos.RegisterRequestProto req = ((NamenodeProtocolProtos.RegisterRequestProto
                                                         )NamenodeProtocolProtos.RegisterRequestProto.NewBuilder().SetRegistration(PBHelper
                                                                                                                                   .Convert(registration)).Build());
     try
     {
         return(PBHelper.Convert(rpcProxy.RegisterSubordinateNamenode(NullController, req)
                                 .GetRegistration()));
     }
     catch (ServiceException e)
     {
         throw ProtobufHelper.GetRemoteException(e);
     }
 }
Esempio n. 7
0
        public virtual void TestConvertNamenodeRegistration()
        {
            StorageInfo          info = GetStorageInfo(HdfsServerConstants.NodeType.NameNode);
            NamenodeRegistration reg  = new NamenodeRegistration("address:999", "http:1000", info
                                                                 , HdfsServerConstants.NamenodeRole.Namenode);

            HdfsProtos.NamenodeRegistrationProto regProto = PBHelper.Convert(reg);
            NamenodeRegistration reg2 = PBHelper.Convert(regProto);

            NUnit.Framework.Assert.AreEqual(reg.GetAddress(), reg2.GetAddress());
            NUnit.Framework.Assert.AreEqual(reg.GetClusterID(), reg2.GetClusterID());
            NUnit.Framework.Assert.AreEqual(reg.GetCTime(), reg2.GetCTime());
            NUnit.Framework.Assert.AreEqual(reg.GetHttpAddress(), reg2.GetHttpAddress());
            NUnit.Framework.Assert.AreEqual(reg.GetLayoutVersion(), reg2.GetLayoutVersion());
            NUnit.Framework.Assert.AreEqual(reg.GetNamespaceID(), reg2.GetNamespaceID());
            NUnit.Framework.Assert.AreEqual(reg.GetRegistrationID(), reg2.GetRegistrationID()
                                            );
            NUnit.Framework.Assert.AreEqual(reg.GetRole(), reg2.GetRole());
            NUnit.Framework.Assert.AreEqual(reg.GetVersion(), reg2.GetVersion());
        }
Esempio n. 8
0
 public virtual bool MatchesRegistration(NamenodeRegistration bnReg)
 {
     return(bnReg.GetAddress().Equals(this.bnReg.GetAddress()));
 }
Esempio n. 9
0
 /// <exception cref="System.IO.IOException"/>
 public static NamenodeCommand StartCheckpoint(NameNode nn, NamenodeRegistration backupNode
                                               , NamenodeRegistration activeNamenode)
 {
     return(nn.GetNamesystem().StartCheckpoint(backupNode, activeNamenode));
 }
Esempio n. 10
0
        /// <summary>Register this backup node with the active name-node.</summary>
        /// <param name="nsInfo">namespace information</param>
        /// <exception cref="System.IO.IOException"/>
        private void RegisterWith(NamespaceInfo nsInfo)
        {
            BackupImage bnImage = (BackupImage)GetFSImage();
            NNStorage   storage = bnImage.GetStorage();

            // verify namespaceID
            if (storage.GetNamespaceID() == 0)
            {
                // new backup storage
                storage.SetStorageInfo(nsInfo);
                storage.SetBlockPoolID(nsInfo.GetBlockPoolID());
                storage.SetClusterID(nsInfo.GetClusterID());
            }
            else
            {
                nsInfo.ValidateStorage(storage);
            }
            bnImage.InitEditLog(HdfsServerConstants.StartupOption.Regular);
            SetRegistration();
            NamenodeRegistration nnReg = null;

            while (!IsStopRequested())
            {
                try
                {
                    nnReg = namenode.RegisterSubordinateNamenode(GetRegistration());
                    break;
                }
                catch (SocketTimeoutException e)
                {
                    // name-node is busy
                    Log.Info("Problem connecting to name-node: " + nnRpcAddress);
                    try
                    {
                        Sharpen.Thread.Sleep(1000);
                    }
                    catch (Exception)
                    {
                        Log.Warn("Encountered exception ", e);
                    }
                }
            }
            string msg = null;

            if (nnReg == null)
            {
                // consider as a rejection
                msg = "Registration rejected by " + nnRpcAddress;
            }
            else
            {
                if (!nnReg.IsRole(HdfsServerConstants.NamenodeRole.Namenode))
                {
                    msg = "Name-node " + nnRpcAddress + " is not active";
                }
            }
            if (msg != null)
            {
                msg += ". Shutting down.";
                Log.Error(msg);
                throw new IOException(msg);
            }
            // stop the node
            nnRpcAddress = nnReg.GetAddress();
        }