设为首页 收藏本站
查看: 879|回复: 0

[经验分享] C# Hadoop学习笔记(一)

[复制链接]

尚未签到

发表于 2017-12-17 10:58:31 | 显示全部楼层 |阅读模式
一、安装环境
  1,前期准备:官网下载“NuGet Package Manager”,按自己已有的VS环境下载对应版本;
  2,利用NuGet下载Hadoop For .NET SDK,地址“http://hadoopsdk.codeplex.com/”
  3,安装。
  4,通过HDInsight,安装Windows Azure,目前是预览版本。
  5,参照网址“http://blogs.msdn.com/b/data_otaku/archive/2013/08/14/hadoop-for-net-developers.aspx” 系统学习API
二、测试DEMO
[csharp] view plain copy

  • using System;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Text;
  • using System.Threading.Tasks;
  • using Microsoft.Hadoop;
  • using Microsoft.Hadoop.MapReduce;
  • using Microsoft.Hadoop.WebClient.WebHCatClient;
  • using System.Diagnostics;
  • using System.IO;
  • using System.IO.MemoryMappedFiles;


  • namespace HadoopConsol
  • {
  •     class Program
  •     {
  •         static void Main(string[] args)
  •         {
  •             Stopwatch sw = new Stopwatch();
  •             long hadoopTime=0;
  •             long normalTime=0;

  •             sw.Start();

  •             //start hadoop
  •             Console.WriteLine("     Hadoop Process Strating ....");

  •             #region Hadoop time

  •             #region hadoopconnet

  •             Console.WriteLine("     Hadoop Connect Strating ....");

  •             //establish job configuration

  •             HadoopJobConfiguration myConfig = new HadoopJobConfiguration();

  •             myConfig.InputPath = "/demo/simple/in";

  •             myConfig.OutputFolder = "/demo/simple/out";



  •             //connect to cluster

  •             Uri myUri = new Uri("http://localhost");

  •             string userName = "hadoop";

  •             string passWord = null;

  •             IHadoop myCluster = Hadoop.Connect(myUri, userName, passWord);

  •             hadoopTime += sw.ElapsedMilliseconds;

  •             Console.WriteLine("     Hadoop Connect End.");

  •             Console.WriteLine("     Hadoop Connect time:" + sw.ElapsedMilliseconds);

  •             #endregion


  •             #region hadoopmapreduce

  •             sw.Reset();
  •             sw.Start();

  •             Console.WriteLine("     Hadoop MapReduce Strating ....");

  •             //execute mapreduce job

  •             MapReduceResult jobResult =

  •                 myCluster.MapReduceJob.Execute<MySimpleMapper, MySimpleReducer>(myConfig);

  •             hadoopTime += sw.ElapsedMilliseconds;

  •             Console.WriteLine("     Hadoop MapReduce End.");
  •             Console.WriteLine("     Hadoop MapReduce Time:"+sw.ElapsedMilliseconds);

  •             #endregion

  •             #region Hadoop End

  •             sw.Reset();
  •             sw.Start();

  •             Console.WriteLine("     Hadoop Endprocess Strating ....");

  •             //write job result to console

  •             int exitCode = jobResult.Info.ExitCode;



  •             string exitStatus = "Failure";

  •             if (exitCode == 0) exitStatus = "Success";

  •             exitStatus = exitCode + " (" + exitStatus + ")";

  •             Console.WriteLine();

  •             Console.Write("Exit Code = " + exitStatus);

  •             Console.WriteLine("     Hadoop Endprocess End.");
  •             hadoopTime += sw.ElapsedMilliseconds;
  •             Console.WriteLine("     Hadoop Exit Time:" + sw.ElapsedMilliseconds);
  •             Console.WriteLine("     Hadoop Process All Time:" + hadoopTime);
  •             #endregion

  •             #endregion


  •             #region Normal time
  •             //start Normal
  •             Console.WriteLine("     Normal Process Strating ....");

  •             sw.Reset();
  •             sw.Start();

  •             //normal process
  •             #region Normal Process

  •             int myevenCount = 0;
  •             int myeventSum = 0;

  •             int myoddCount = 0;
  •             int myoddSum = 0;

  •             StreamReader fs = new StreamReader(@"c:\TEMP\integers.txt");

  •             while (fs.Peek() >= 0)
  •             {
  •                 string strTemp = fs.ReadLine();
  •                 if (Int32.Parse(strTemp) % 2 == 0)
  •                 {
  •                     myevenCount++;
  •                     myeventSum += Int32.Parse(strTemp);
  •                 }
  •                 else
  •                 {
  •                     myoddCount++;
  •                     myoddSum += Int32.Parse(strTemp);
  •                 }
  •             }
  •                //MemoryMappedFile m = MemoryMappedFile.
  •             Console.WriteLine("even:" + "\t" + myevenCount + "\t" + myeventSum);
  •             Console.WriteLine("odd:" + "\t" + myoddCount + "\t" + myoddSum);

  •             #endregion

  •             Console.WriteLine("     Normal Process End.");

  •             normalTime += sw.ElapsedMilliseconds;
  •             Console.WriteLine("     Normal Exit Time:" + sw.ElapsedMilliseconds);
  •             Console.WriteLine("     Normal Process All Time:" + normalTime);

  •             #endregion

  •             sw.Stop();

  •             Console.Read();

  •         }

  •     }

  •     public class MySimpleMapper : MapperBase
  •     {

  •         public override void Map(string inputLine, MapperContext context)
  •         {

  •             //interpret the incoming line as an integer value

  •             int value = int.Parse(inputLine);

  •             //determine whether value is even or odd

  •             string key = (value % 2 == 0) ? "even" : "odd";

  •             //output key assignment with value

  •             context.EmitKeyValue(key, value.ToString());

  •         }

  •     }

  •     public class MySimpleReducer : ReducerCombinerBase
  •     {

  •         public override void Reduce(

  •             string key, IEnumerable<string> values, ReducerCombinerContext context

  •             )
  •         {

  •             //initialize counters

  •             int myCount = 0;

  •             int mySum = 0;



  •             //count and sum incoming values

  •             foreach (string value in values)
  •             {

  •                 mySum += int.Parse(value);

  •                 myCount++;

  •             }



  •             //output results

  •             context.EmitKeyValue(key, myCount + "\t" + mySum);

  •         }


  •     }
  • }
三、测试结果
DSC0000.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424967-1-1.html 上篇帖子: 在Ubuntu X64上编译Hadoop 下篇帖子: CentOS Hadoop安装配置详细
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表