由于任务超时,Hadoop任务被取消

时间:2014-04-29 19:33:29

标签: c# azure hadoop mapreduce mscorlib

我正在编写一个在集群上运行的C#mapreduce程序。系统返回错误 System.Threading.Tasks.Task

在超时32毫秒后取消任务。数据非常庞大。我甚至改变了数据大小来检查,但错误仍然存​​在,所以我假设它不是由于数据大小。

有没有办法将任务超时更改为32毫秒。

我正在使用Azure,Visual Studio 2013和一个包含4个节点的群集。

mscorlib.dll中出现系统聚合异常

   using System;
    using System.Collections.Generic;
   using System.Globalization;
   using System.Linq;
   using System.Text;
   using System.Xml.Linq;
    using System.Threading;
  using Microsoft.Hadoop.MapReduce;
    using Microsoft.WindowsAzure.Management.HDInsight;
  using System.IO;
    using System.Security.Cryptography.X509Certificates;
   using Microsoft.Hadoop.Client;


       namespace StackExtractor
        {

//Our Mapper that takes a line of XML input and spits out the {OwnerUserId,ParentId,Score} 
//i.e, {User,Question,Weightage}
public class UserQuestionsMapper : MapperBase
{
    public override void Map(string inputLine, MapperContext context)
    {
        try
        {
            var obj = XElement.Parse(inputLine);
            var postType = obj.Attribute("PostTypeId");
            if (postType != null && postType.Value == "2")
            {
                var owner = obj.Attribute("OwnerUserId");
                var parent = obj.Attribute("ParentId");

                // Write output data. Ignore records will null values if any
                if (owner != null && parent != null)
                {
                    context.EmitLine(string.Format("{0},{1}", owner.Value, parent.Value));
                }
            }
        }
        catch
        {
            //Ignore this line if we can't parse
        }
    }
}


//Our Extraction Job using our Mapper
public class UserQuestionsExtractionJob : HadoopJob<UserQuestionsMapper>
{
    public override HadoopJobConfiguration Configure(ExecutorContext context)
    {   
        var config = new HadoopJobConfiguration();
        config.DeleteOutputFolder = true;
        config.InputPath = "/input/recommender";
        config.OutputFolder = "/output/recommender";
        return config;
    }


}

//Driver that submits this to the cluster in the cloud
//And will wait for the result. This will push your executables to the Azure storage
//and will execute the command line in the head node (HDFS for Hadoop on Azure uses Azure storage)
public class Driver
{
    public static void Main()
    {
        try
        {
            var azureCluster = new Uri("https://name r.azurehdinsight.net:563");
            const string clusterUserName = "****";
            const string clusterPassword = "****";

            // This is the name of the account under which Hadoop will execute jobs.
            // Normally this is just "Hadoop".
            const string hadoopUserName = "Hadoop";

            // Azure Storage Information.
            const string azureStorageAccount = "name.blob.core.windows.net";
            const string azureStorageKey = "id;
            const string azureStorageContainer = "namecontainer";
            const bool createContainerIfNotExist = true;
            Console.WriteLine("Connecting : {0} ", DateTime.Now);

            var hadoop = Hadoop.Connect(azureCluster,
                                        clusterUserName,
                                        hadoopUserName,
                                        clusterPassword,
                                        azureStorageAccount,
                                        azureStorageKey,
                                        azureStorageContainer,
                                        createContainerIfNotExist);

            Console.WriteLine("Starting: {0} ", DateTime.Now);
            var result = hadoop.MapReduceJob.ExecuteJob <UserQuestionsExtractionJob>();
            var info = result.Info;

            Console.WriteLine("Done: {0} ", DateTime.Now);
            Console.WriteLine("\nInfo From Server\n----------------------");
            Console.WriteLine("StandardError: " + info.StandardError);
            Console.WriteLine("\n----------------------");
            Console.WriteLine("StandardOut: " + info.StandardOut);
            Console.WriteLine("\n----------------------");
            Console.WriteLine("ExitCode: " + info.ExitCode);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: {0} ", ex.StackTrace.ToString(CultureInfo.InvariantCulture));
        }
        Console.WriteLine("Press Any Key To Exit..");
        Console.ReadLine();
    }
}

}

0 个答案:

没有答案