分享

C# Hadoop学习笔记(一)

 长江黄鹤 2014-06-07

一、安装环境

1,前期准备:官网下载“NuGet Package Manager”,按自己已有的VS环境下载对应版本;

2,利用NuGet下载Hadoop For .NET SDK,地址“http://hadoopsdk./

3,安装。

4,通过HDInsight,安装Windows Azure,目前是预览版本。

5,参照网址“http://blogs./b/data_otaku/archive/2013/08/14/hadoop-for-net-developers.aspx” 系统学习API

 

二、测试DEMO

 

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6. using Microsoft.Hadoop;  
  7. using Microsoft.Hadoop.MapReduce;  
  8. using Microsoft.Hadoop.WebClient.WebHCatClient;  
  9. using System.Diagnostics;  
  10. using System.IO;  
  11. using System.IO.MemoryMappedFiles;  
  12.   
  13.   
  14. namespace HadoopConsol  
  15. {  
  16.     class Program  
  17.     {  
  18.         static void Main(string[] args)  
  19.         {  
  20.             Stopwatch sw = new Stopwatch();  
  21.             long hadoopTime=0;  
  22.             long normalTime=0;  
  23.   
  24.             sw.Start();  
  25.   
  26.             //start hadoop  
  27.             Console.WriteLine("     Hadoop Process Strating ....");  
  28.  
  29.             #region Hadoop time  
  30.  
  31.             #region hadoopconnet  
  32.   
  33.             Console.WriteLine("     Hadoop Connect Strating ....");  
  34.   
  35.             //establish job configuration  
  36.   
  37.             HadoopJobConfiguration myConfig = new HadoopJobConfiguration();  
  38.   
  39.             myConfig.InputPath = "/demo/simple/in";  
  40.   
  41.             myConfig.OutputFolder = "/demo/simple/out";  
  42.   
  43.   
  44.   
  45.             //connect to cluster  
  46.   
  47.             Uri myUri = new Uri("http://localhost");  
  48.   
  49.             string userName = "hadoop";  
  50.   
  51.             string passWord = null;  
  52.   
  53.             IHadoop myCluster = Hadoop.Connect(myUri, userName, passWord);  
  54.   
  55.             hadoopTime += sw.ElapsedMilliseconds;  
  56.   
  57.             Console.WriteLine("     Hadoop Connect End.");  
  58.   
  59.             Console.WriteLine("     Hadoop Connect time:" + sw.ElapsedMilliseconds);  
  60.  
  61.             #endregion  
  62.  
  63.  
  64.             #region hadoopmapreduce  
  65.   
  66.             sw.Reset();  
  67.             sw.Start();  
  68.   
  69.             Console.WriteLine("     Hadoop MapReduce Strating ....");  
  70.   
  71.             //execute mapreduce job  
  72.   
  73.             MapReduceResult jobResult =  
  74.   
  75.                 myCluster.MapReduceJob.Execute<MySimpleMapper, MySimpleReducer>(myConfig);  
  76.   
  77.             hadoopTime += sw.ElapsedMilliseconds;  
  78.   
  79.             Console.WriteLine("     Hadoop MapReduce End.");  
  80.             Console.WriteLine("     Hadoop MapReduce Time:"+sw.ElapsedMilliseconds);  
  81.  
  82.             #endregion  
  83.  
  84.             #region Hadoop End  
  85.   
  86.             sw.Reset();  
  87.             sw.Start();  
  88.   
  89.             Console.WriteLine("     Hadoop Endprocess Strating ....");  
  90.   
  91.             //write job result to console  
  92.   
  93.             int exitCode = jobResult.Info.ExitCode;  
  94.   
  95.   
  96.   
  97.             string exitStatus = "Failure";  
  98.   
  99.             if (exitCode == 0) exitStatus = "Success";  
  100.   
  101.             exitStatus = exitCode + " (" + exitStatus + ")";  
  102.   
  103.             Console.WriteLine();  
  104.   
  105.             Console.Write("Exit Code = " + exitStatus);  
  106.   
  107.             Console.WriteLine("     Hadoop Endprocess End.");  
  108.             hadoopTime += sw.ElapsedMilliseconds;  
  109.             Console.WriteLine("     Hadoop Exit Time:" + sw.ElapsedMilliseconds);  
  110.             Console.WriteLine("     Hadoop Process All Time:" + hadoopTime);  
  111.             #endregion  
  112.  
  113.             #endregion  
  114.  
  115.  
  116.             #region Normal time  
  117.             //start Normal  
  118.             Console.WriteLine("     Normal Process Strating ....");  
  119.   
  120.             sw.Reset();  
  121.             sw.Start();  
  122.   
  123.             //normal process  
  124.             #region Normal Process  
  125.   
  126.             int myevenCount = 0;  
  127.             int myeventSum = 0;  
  128.   
  129.             int myoddCount = 0;  
  130.             int myoddSum = 0;  
  131.   
  132.             StreamReader fs = new StreamReader(@"c:\TEMP\integers.txt");  
  133.   
  134.             while (fs.Peek() >= 0)  
  135.             {  
  136.                 string strTemp = fs.ReadLine();  
  137.                 if (Int32.Parse(strTemp) % 2 == 0)  
  138.                 {  
  139.                     myevenCount++;  
  140.                     myeventSum += Int32.Parse(strTemp);  
  141.                 }  
  142.                 else  
  143.                 {  
  144.                     myoddCount++;  
  145.                     myoddSum += Int32.Parse(strTemp);  
  146.                 }  
  147.             }  
  148.                //MemoryMappedFile m = MemoryMappedFile.  
  149.             Console.WriteLine("even:" + "\t" + myevenCount + "\t" + myeventSum);  
  150.             Console.WriteLine("odd:" + "\t" + myoddCount + "\t" + myoddSum);  
  151.  
  152.             #endregion  
  153.   
  154.             Console.WriteLine("     Normal Process End.");  
  155.   
  156.             normalTime += sw.ElapsedMilliseconds;  
  157.             Console.WriteLine("     Normal Exit Time:" + sw.ElapsedMilliseconds);  
  158.             Console.WriteLine("     Normal Process All Time:" + normalTime);  
  159.  
  160.             #endregion  
  161.   
  162.             sw.Stop();  
  163.   
  164.             Console.Read();  
  165.   
  166.         }  
  167.   
  168.     }  
  169.   
  170.     public class MySimpleMapper : MapperBase  
  171.     {  
  172.   
  173.         public override void Map(string inputLine, MapperContext context)  
  174.         {  
  175.   
  176.             //interpret the incoming line as an integer value  
  177.   
  178.             int value = int.Parse(inputLine);  
  179.   
  180.             //determine whether value is even or odd  
  181.   
  182.             string key = (value % 2 == 0) ? "even" : "odd";  
  183.   
  184.             //output key assignment with value  
  185.   
  186.             context.EmitKeyValue(key, value.ToString());  
  187.   
  188.         }  
  189.   
  190.     }  
  191.   
  192.     public class MySimpleReducer : ReducerCombinerBase  
  193.     {  
  194.   
  195.         public override void Reduce(  
  196.   
  197.             string key, IEnumerable<string> values, ReducerCombinerContext context  
  198.   
  199.             )  
  200.         {  
  201.   
  202.             //initialize counters  
  203.   
  204.             int myCount = 0;  
  205.   
  206.             int mySum = 0;  
  207.   
  208.   
  209.   
  210.             //count and sum incoming values  
  211.   
  212.             foreach (string value in values)  
  213.             {  
  214.   
  215.                 mySum += int.Parse(value);  
  216.   
  217.                 myCount++;  
  218.   
  219.             }  
  220.   
  221.   
  222.   
  223.             //output results  
  224.   
  225.             context.EmitKeyValue(key, myCount + "\t" + mySum);  
  226.   
  227.         }  
  228.   
  229.   
  230.     }  
  231. }  

三、测试结果


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多