2014-12-09 2 views
5

मैं HDInsight क्लस्टर में MapReduce नौकरी सबमिट करने का प्रयास कर रहा हूं। मेरे काम में मैंने भाग कम नहीं किया क्योंकि मैं कुछ भी कम नहीं करना चाहता हूं। मैं बस इतना करना चाहता हूं कि प्रत्येक फ़ाइल नाम को पार्स करें और मान को फ़ाइल में प्रत्येक पंक्ति में जोड़ दें। ताकि मेरे पास फ़ाइल के अंदर आवश्यक सभी डेटा होंगे।सी # MapReduce नौकरी विंडोज Azure HDInsight सबमिट करें - प्रतिक्रिया स्थिति कोड सफलता का संकेत नहीं देता है: 500 (सर्वर त्रुटि)

मेरे कोड

using Microsoft.Hadoop.MapReduce; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace GetMetaDataFromFileName 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var hadoop = connectAzure(); 

      //Temp Workaround to Env Variables 
      Environment.SetEnvironmentVariable("HADOOP_HOME", @"c:\hadoop"); 
      Environment.SetEnvironmentVariable("Java_HOME", @"c:\hadoop\jvm"); 

      var result = hadoop.MapReduceJob.ExecuteJob<MetaDataGetterJob>(); 
     } 

     static IHadoop connectAzure() 
     { 
      //TODO: Update credentials and other information 
      return Hadoop.Connect(
       new Uri("https://sampleclustername.azurehdinsight.net//"), 
       "admin", 
       "Hadoop", 
       "password", 
       "blobstoragename.blob.core.windows.net", //Storage Account that Log files exists 
       "AccessKeySample", //Storage Account Access Key 
       "logs", //Container Name 
       true 
       ); 
     } 

     //Hadoop Mapper 
     public class MetaDataGetter : MapperBase 
     { 
      public override void Map(string inputLine, MapperContext context) 
      { 
       try 
       { 
        //Get the meta data from name of the file 
        string[] _fileMetaData = context.InputFilename.Split('_'); 

        string _PublicIP = _fileMetaData[0].Trim(); 
        string _PhysicalAdapterMAC = _fileMetaData[1].Trim(); 
        string _BootID = _fileMetaData[2].Trim(); 
        string _ServerUploadTime = _fileMetaData[3].Trim(); 
        string _LogType = _fileMetaData[4].Trim(); 
        string _MachineUpTime = _fileMetaData[5].Trim(); 

        //Generate CSV portion 
        string _RowHeader = string.Format("{0},{1},{2},{3},{4},{5},", _PublicIP, _PhysicalAdapterMAC, _BootID, _ServerUploadTime, _LogType, _MachineUpTime); 

        //TODO: Append _RowHeader to every row in the file. 
        context.EmitLine(_RowHeader + inputLine); 
       } 
       catch(ArgumentException ex) 
       { 
        return; 
       } 
      } 
     } 

     //Hadoop Job Definition 
     public class MetaDataGetterJob : HadoopJob<MetaDataGetter> 
     { 
      public override HadoopJobConfiguration Configure(ExecutorContext context) 
      { 
       //Initiate the job config 
       HadoopJobConfiguration config = new HadoopJobConfiguration(); 
       config.InputPath = "asv://[email protected]/Input"; 
       config.OutputFolder = "asv://[email protected]/Output"; 
       config.DeleteOutputFolder = true; 
       return config; 
      } 
     } 
    } 
} 

आमतौर पर है कि क्या करना आप बात 500 (सर्वर त्रुटि) के कारण? क्या मैं गलत प्रमाण-पत्रों की आपूर्ति कर रहा हूं? असल में मैं वास्तव में Hadoop में कनेक्ट उपयोगकर्ता नाम और HadoopUser पैरामीटर के बीच अंतर को समझ नहीं पाया। कनेक्ट विधि?

धन्यवाद,

+0

इस पर कोई सुधार? – Rengasamy

उत्तर

1

मैंने पहले भी लगभग एक ही मुद्दा था (BadGateway प्रतिक्रिया के साथ क्लस्टर के लिए छत्ता काम प्रस्तुत करने में असमर्थ था)। मैंने समर्थन टीम से संपर्क किया है और मेरे मामले में समस्या हेड नोड पर मेमोरी रिसाव में थी, इसका मतलब यह है कि समस्या ग्राहक की तरफ नहीं थी और ऐसा लगता है कि यह विरासत में परेशानी थी।

मैंने क्लस्टर को पुन: नियोजित करके उस सामान को हल किया है। क्या आपने अन्य नौकरियां (सरल वाले) जमा करने का प्रयास किया है? यदि ऐसा है, तो मैं सुझाव देता हूं कि एज़ूर सपोर्ट टीम के साथ संपर्क करने का सुझाव दें या क्लस्टर को दोबारा तैनात करें यदि यह आपके लिए दर्दनाक नहीं है।

संबंधित मुद्दे