`
cp1985chenpeng
  • 浏览: 43882 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hadoop-Streaming执行C代码实例

阅读更多

 

 

C Code

Map: Mapper.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define BUF_SIZE        2048
#define DELIM   "\n"
 
int main( int argc, char *argv[]){
      char buffer[BUF_SIZE];
      while ( fgets (buffer, BUF_SIZE - 1, stdin)){
             int len = strlen (buffer);
             if (buffer[len-1] == '\n' )
              buffer[len-1] = 0;
             char *querys  = index(buffer, ' ' );
             char *query = NULL;
             if (querys == NULL) continue ;
             querys += 1; /*  not to include '\t' */
             query = strtok (buffer, " " );
             while (query){
                    printf ( "%s\t1\n" , query);
                    query = strtok (NULL, " " );
             }
      }
      return 0;
}
 

Reduce: Reducer.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define BUFFER_SIZE     1024
#define DELIM   "\t"
int main( int argc, char *argv[]){
  char strLastKey[BUFFER_SIZE];
  char strLine[BUFFER_SIZE];
  int count = 0;
  *strLastKey = '\0' ;
  *strLine = '\0' ;
  while ( fgets (strLine, BUFFER_SIZE - 1, stdin) ){
         char *strCurrKey = NULL;
     char *strCurrNum = NULL;
     strCurrKey  = strtok (strLine, DELIM);
          strCurrNum = strtok (NULL, DELIM); /* necessary to check error but.... */
     if ( strLastKey[0] == '\0' ){
                 strcpy (strLastKey, strCurrKey);
          }
     if ( strcmp (strCurrKey, strLastKey)){
        printf ( "%s\t%d\n" , strLastKey, count);
        count = atoi (strCurrNum);
     } else {
        count += atoi (strCurrNum);
         }
     strcpy (strLastKey, strCurrKey);
  }
  printf ( "%s\t%d\n" , strLastKey, count); /* flush the count */
  return 0;
}
 

首先编译 C code

$gcc /home/user/mapred/Mapper.c -o mapper.o

$gcc /home/user/mapred/Reducer.c -o reducer.o

hdfs上创建 input目录

$HADOOP_HOME/bin/hadoop fs -mkdir input

然后在本地创建一个文件 /home/user/input/input.txt并上传到 hdfs

$HADOOP_HOME/bin/hadoop fs -put /home/user/input/input.txt input

 

此时准备工作完成,接着执行 hadoop-streaming命令

$HADOOP_HOME/bin/hadoop jar HADOOP_HOME/hadoop-streaming.jar -input input/* -output output -mapper "/home/user/mapred/mapper .o" -reducer "/home/hadoop/mapred/reducer .o"

运行成功的日志如下:

packageJobJar: [/tmp/hadoop-cp/hadoop-unjar2910356701799592623/] [] /tmp/streamjob4550176904973722526.jar tmpDir=null

11/12/15 19:27:23 INFO mapred.FileInputFormat: Total input paths to process : 1

11/12/15 19:27:23 INFO streaming.StreamJob: getLocalDirs(): [/tmp/hadoop-cp/mapred/local]

11/12/15 19:27:23 INFO streaming.StreamJob: Running job: job_201112151707_0019

11/12/15 19:27:23 INFO streaming.StreamJob: To kill this job, run:

11/12/15 19:27:23 INFO streaming.StreamJob: /home//hadoop/bin/../bin/hadoop job -Dmapred.job.tracker=localhost:9001 -kill job_201112151707_0019

11/12/15 19:27:23 INFO streaming.StreamJob: Tracking URL: http://localhost:50030/jobdetails.jsp?jobid=job_201112151707_0019

11/12/15 19:27:24 INFO streaming.StreamJob: map 0% reduce 0%

11/12/15 19:27:34 INFO streaming.StreamJob: map 100% reduce 0%

11/12/15 19:27:46 INFO streaming.StreamJob: map 100% reduce 100%

11/12/15 19:27:49 INFO streaming.StreamJob: Job complete: job_201112151707_0019

11/12/15 19:27:49 INFO streaming.StreamJob: Output: output

分享到:
评论

相关推荐

    Hadoop Streaming程序实例

    具体的解释可以参见我的博客:http://dongxicheng.org/mapreduce/hadoop-streaming-programming/

    HadoopFs:Hadoop Streaming API 的轻量级 F# 实现

    .NET API 有点尴尬:- 需要从抽象类继承不纯的风格使代码更难测试HadoopFs 让想要开发 map/reduce 作业的 F# 开发人员的生活更轻松:- 您的 map/reduce 函数没有要遵守的基类层次结构支持可选的单实例输出和输出集合...

    7.SparkStreaming(上)--SparkStreaming原理介绍.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    7.SparkStreaming(下)--SparkStreaming实战.pdf

    -SparkStreaming原理介绍.pdf7.SparkStreaming(下)--SparkStreaming实战.pdf8.SparkMLlib(上)--机器学习及SparkMLlib简介.pdf8.SparkMLlib(下)--SparkMLlib实战.pdf9.SparkGraphX介绍及实例.pdf10.分布式内存...

    2.Spark编译与部署(中)--Hadoop编译安装.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    Hadoop实战中文版

    9.4 在EC2 上运行MapReduce 程序 9.4.1 将代码转移到Hadoop集群上 9.4.2 访问Hadoop集群上的数据 9.5 清空和关闭EC2 实例 9.6 Amazon Elastic MapReduce 和其他AWS 服务 9.6.1 Amazon Elastic MapReduce 9.6.2...

    Hadoop技术内幕:深入解析MapReduce架构设计与实现原理

    有前三章的内容前言第一部分 基础篇第1章 阅读源代码前的准备1.1 准备源代码学习环境1.1.1 基础软件下载1.1.2 如何准备Windows环境1.1.3 如何准备Linux环境1.2 获取Hadoop源代码1.3 搭建Hadoop源代码阅读...

    Hadoop权威指南 第二版(中文版)

     Nutch系统利用Hadoop进行数据处理的精选实例  总结  Rackspace的日志处理  简史  选择Hadoop  收集和存储  日志的MapReduce模型  关于Cascading  字段、元组和管道  操作  Tap类,Scheme对象和Flow对象 ...

    Hadoop权威指南(中文版)2015上传.rar

    Hadoop的Streaming Ruby版本 Python版本 Hadoop Pipes 编译运行 第3章 Hadoop分布式文件系统 HDFS的设计 HDFS的概念 数据块 namenode和datanode 命令行接口 基本文件系统操作 Hadoop文件系统 接口 Java接口 从Hadoop...

    9.SparkGraphX介绍及实例.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    Hadoop实战中文版.PDF

    524.1.1 专利引用数据 534.1.2 专利描述数据 544.2 构建MapReduce程序的基础模板 554.3 计数 604.4 适应Hadoop API的改变 644.5 Hadoop的Streaming 674.5.1 通过Unix命令使用Streaming 684.5.2 通过...

    2-3-Spark+Streaming.pdf

    spark程序是使用一个spark应用实例一次性对一批历史数据进行处理,spark streaming是将持续不断输入的数据流转换成多个batch分片,使用一批spark应用实例进行处理。

    2.Spark编译与部署(下)--Spark编译安装.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    6.SparkSQL(上)--SparkSQL简介.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    6.SparkSQL(下)--Spark实战应用.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    6.SparkSQL(中)--深入了解运行计划及调优.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    5.Hive(下)--Hive实战.pdf

    -SparkStreaming原理介绍.pdf7.SparkStreaming(下)--SparkStreaming实战.pdf8.SparkMLlib(上)--机器学习及SparkMLlib简介.pdf8.SparkMLlib(下)--SparkMLlib实战.pdf9.SparkGraphX介绍及实例.pdf10.分布式内存...

    3.Spark编程模型(下)--IDEA搭建及实战.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    3.Spark编程模型(上)--概念及SparkShell实战.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

    2.Spark编译与部署(上)--基础环境搭建.pdf

    2.Spark编译与部署(中)--Hadoop编译安装.pdf 3.Spark编程模型(上)--概念及SparkShell实战.pdf 3.Spark编程模型(下)--IDEA搭建及实战.pdf 4.Spark运行架构.pdf 5.Hive(上)--Hive介绍及部署.pdf 5.Hive(下)-...

Global site tag (gtag.js) - Google Analytics