初次使用 Hadoop Streaming 的过程(遇到各种各样的问题)

原创 2015年11月19日 23:54:57

写搜索引擎希望能尝试使用hadoop 来进行分布式查找结果,并顺便学学老早就想学的 hadoop。花了两个晚上的时间倒腾,总算跑出了第一个结果。。虽然很累,还是挺好的。下面陈列一下遇到的问题,希望对自己或者别人都能有些帮助。我自己用的是C++,在 win10 上用 vmware 装了 ubuntu 14.04 的虚拟机,然后装了 hadoop,没有使用 eclipse,因此选择学习的是 hadoop 的 streaming ,出错的时候真是不太好找资料啊。不过还好大部分错都是比较弱智的错误。囧!!

1.在ubuntu 下装单机/伪分布式配置的 hadoop

参考了一个很好的博客,从官网上下载到安装包后,就按照步骤走,花了一个晚上配置好了 hadoop,博客地址:Hadoop安装教程_单机/伪分布式配置


2.写一个简单的wordCount 的C++ 的mapper 和 reducer 的程序:

程序也是直接参考一个比较好的博客:点击打开链接。就取了下面两部分代码:

3.编译过程中遇到的问题

在使用Hadoop 前请先开启 hadoop。在 安装目录/hadoop/sbin中执行:./start_dfs.sh

该源文件我写在我的Ubuntu中的目录为:/home/hadoop/test 的目录下

hadoop 的安装目录为 : /usr/local/hadoop

以下所有指令均在目录 /usr/local/hadoop 下执行

 1)输入文件必须要传到 HDFS 系统中

需要上传的文件位于:/home/hadoop/test/t.txt,

a.先确定是否在文件管理系统中创建了文件夹 /user/hadoop/input。若未创建,则创建指令为:

$bin/hadoop dfs -mkdir /user/hadoop/input

b.上传文件:

$bin/hadoop dfs -put /home/hadoop/test/t.txt /user/hadoop/input

2)运行可执行文件时,千万不要把可执行文件放在 DFS 系统中,保留在原路径下就好,且输出的目录在运行前必须清空

a.清空DFS中输出文件夹

$bin/hadoop dfs -rm -r /user/hadoop/output (若有则删除,若无也没关系)

b.执行以下指令,启动hadoop

$HADOOP_HOME/bin/hadoop jar $streaming -input /user/hadoop/input/t.txt -output /user/hadoop/output -mapper/home/hadoop/test/mapper -reducer /home/hadoop/test/reducer

*上面的 streaming 是一个环境变量,指向hadoop安装目录中的 streaming.jar,大家的版本号可能不同,直接定义为该jar文件即可。也可以输入整个文件的位置

c.从DFS系统中下载output信息,并放在原来的路径下:
$bin/hadoop dfs -get /user/hadoop/output /home/hadoop/test/output




Hadoop-Streaming实战经验及问题解决方法总结

看到一篇不错的Hadoop-Streaming实战经验的文章,里面有大部分的情景都是自己实战中曾经遇到过的。特意转载过来,感谢有心人的总结。目录 Join操作分清join的类型很重要… 启动程序中ke...
  • bitcarmanlee
  • bitcarmanlee
  • 2016年07月11日 18:01
  • 1635

Hadoop Streaming入门

说明:本文使用的Hadoop版本是2.6.0,示例语言用Python。 概述 Hadoop Streaming是Hadoop提供的一种编程工具,提供了一种非常灵活的编程接口, 允许用户使用...
  • liang0000zai
  • liang0000zai
  • 2016年01月20日 11:06
  • 3664

通过Hadoop StreamingAPI使用perl写MapReduce

Hadoop一般使用Java来写MapReduce,但是也支持其他语言和脚本,类似于管道的概念。即将中间结果通过管道输出给某一可执行文件或脚本,让其充当Map或者Reduce。以Perl实现MapRe...
  • xiangshimoni
  • xiangshimoni
  • 2014年11月18日 17:20
  • 1300

hadoop2.6.0版本集群环境搭建

一、环境说明 1、机器:一台物理机 和一台虚拟机 2、linux版本:[spark@S1PA11 ~]$ cat /etc/issue Red Hat Enterprise Linux Server ...
  • stark_summer
  • stark_summer
  • 2015年01月05日 17:11
  • 105335

hadoop 各类key value分隔符参数

原文地址:http://wingmzy.iteye.com/blog/1260570 hadoop中的map-reduce是处理这样的键值对,故指定的分割符等参数可以分成三类: map输出时分...
  • jingling_zy
  • jingling_zy
  • 2012年04月15日 21:40
  • 4534

Hadoop环境搭建过程中的的问题以及解决方案

Hadoop问题以及解决方案: 1.使用Hadoop版本是Hadoop2.7.3,必须使用JDK1.6版本以上,所以这里使用的是JDK1.8,如果JDK版本低于1.6,启动Hadoop时候会报错。 ...
  • B_TAEYANG
  • B_TAEYANG
  • 2016年10月20日 10:11
  • 970

【HADOOP】hadoop streaming指定不执行reducer过程

有时候,我们只需要对文件做并发处理,并不关心相同key的记录间的关系。 这时,只需要map函数处理输入数据。 如果不指定reducer选项,系统仍然会默认执行一次cat命令。 如何去了不必要的分...
  • PhanYoung
  • PhanYoung
  • 2012年10月29日 16:58
  • 2747

用Hadoop构建电影推荐系统

用Hadoop构建电影推荐系统 2013-10-21 10:31| 发布者: 天空之城| 查看: 18598| 评论: 1|原作者: 张丹(Conan)|来自: 张丹的粉丝博客 ...
  • javastart
  • javastart
  • 2014年11月14日 23:04
  • 4632

Hadoop进阶(hadoop streaming c++实现 & MapReduce参数调优)

hadoop streaming c++实现 心得 与 MapReduce参数调用 目录: 1,机器学习 & MR Hadoop进阶(hadoop streaming c++实现 & MapReduc...
  • u010700335
  • u010700335
  • 2017年05月27日 11:12
  • 732

通过案例对SparkStreaming透彻理解三板斧之一

I.Spark Streaming另类在线实验 II.瞬间理解Spark Streaming本质 扩展Spark的内容来适合自己的业务模型,自己能够进行框架的维护,就好比你拿到一个开源源代码,即使...
  • cary_1991
  • cary_1991
  • 2016年05月04日 21:16
  • 2984
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初次使用 Hadoop Streaming 的过程(遇到各种各样的问题)
举报原因:
原因补充:

(最多只允许输入30个字)