`
cp1985chenpeng
  • 浏览: 44146 次
  • 性别: 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程序实例

    Hadoop Streaming是一个强大的工具,它允许用户使用任何可执行文件(如Python脚本、Perl或Bash shell命令)作为MapReduce任务的Mapper和Reducer。这个技术使得非Java开发者也能利用Hadoop的大数据处理能力。在本文中...

    spark--bin-hadoop3-without-hive.tgz

    总的来说,"spark--bin-hadoop3-without-hive.tgz"提供了一个在CentOS 8和Hadoop 3.1.3环境下运行的Spark实例,不包含Hive支持,适合那些需要高效大数据处理而不依赖Hive功能的用户。要充分利用这个版本,理解Spark...

    ( Hadoop Streaming编程实战(C++、PHP、Python).pdf )

    这些代码示例演示了如何使用不同的编程语言在Hadoop Streaming框架中实现基本的MapReduce程序。需要注意的是,这些示例假设读者已经熟悉了Hadoop的基本操作和MapReduce编程模型,而且在执行集群运行之前,必须先在...

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

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

    Hadoop大数据开发实战-代码.rar

    这个压缩包“Hadoop大数据开发实战-代码.rar”包含了与书中的实例和练习相关的源代码,旨在帮助读者更好地理解和掌握Hadoop在实际项目中的运用。 Hadoop作为开源的大数据处理框架,由Apache基金会维护,它由两个...

    Hadoop-Real-World-Solutions-Cookbook-Example-Code:Hadoop Real-World Solutions Cookbook 示例代码

    5. **Hadoop Streaming**:允许使用任何可执行程序(如Python、Perl)作为Mapper和Reducer,扩展了Hadoop的使用范围。示例可能包括非Java语言实现MapReduce任务。 6. **Oozie**:是Hadoop的工作流调度器,用于管理...

    hadoop权威指南源代码

    Hadoop提供了丰富的API和开发工具,如Hadoop Streaming、Hadoop Pipes、Java API等。源代码分析可以帮助我们掌握如何使用这些工具编写MapReduce作业。 10. **性能调优**: 优化Hadoop集群的性能是实践中不可或缺...

    Big_Data_Analytics_with_Spark_and_Hadoop-Packt_Publishing2016

    《大数据分析:Spark与Hadoop实战》是Packt Publishing在2016年出版的一本专业书籍,专注于探讨如何利用Apache Spark和Hadoop进行高效的数据分析。这本书详细讲解了这两个重要工具的核心概念、架构以及实际应用,...

    hadoop几个实例

    7. **编程接口**:Hadoop提供了Java API来编写MapReduce程序,但也有如Hadoop Streaming这样的接口,允许使用其他语言(如Python、Perl)编写Mapper和Reducer。 8. **数据处理范式**:MapReduce遵循“批处理”处理...

    深入云计算:Hadoop应用开发实战详解 源代码

    Java是常见的编程语言,但也有如Hadoop Streaming和Pig、Hive等高级工具,它们允许使用Python、Perl等其他语言或SQL语法进行编程,简化开发过程。 5. **实战详解与源代码**:"深入云计算:Hadoop应用开发实战详解 ...

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

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

    Hadoop-in-Action:使用脚本语言和java实现Hadoop

    对于脚本语言的使用者,书中的案例将涵盖如何使用Python的Pydoop库,Perl的Hadoop Streaming,以及Groovy的Hadoop集成。这些示例将帮助开发者了解如何利用脚本语言的灵活性来处理Hadoop任务。 总的来说,《Hadoop-...

    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(下)-...

    Hadoop实战.源代码

    5. listing-4-1至listing-4-11:这部分源代码可能涉及到更复杂的数据处理任务,如数据清洗、数据聚合、流处理等,可能使用了Hadoop的Streaming或Spark等工具,展现了Hadoop生态系统的多样性。 通过研究这些源代码,...

    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(下)-...

    SparkStreaming:Spark Streaming + Flume + Kafka + HBase + Hadoop + Zookeeper实现实时日志分析统计; SpringBoot + Echarts实现数据可视化展示

    避免流式传输前言:使用scala和java混编完成,其中也涉及到python脚本来自动生成日志,linux crontab调度工具来定时执行脚本生成实时日志。生成的数据主要是模拟某学习网站学习视频课程的访问量(其中*以“ / class...

    hadoop大数据就业面试题

    3. 增加一个新的存储节点:在新的节点上执行 Hadoop daemon.sh start datanode,然后在主节点执行 hadoop dfsadmin -refreshnodes。 删除一个节点:在主节点执行 hadoop mradmin -refreshnodes。 四、Hadoop 的调度...

    spark-2.1.1-bin-hadoop2.7

    - **性能提升**:2.1.1版在代码优化和任务调度上做了大量工作,如Tungsten项目的全内存计算优化,降低了数据序列化开销,提高了执行效率。 - **SQL增强**:Spark SQL引入了DataFrame/Dataset API,提供了更强大的...

Global site tag (gtag.js) - Google Analytics