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

来源:互联网 发布:js 邮箱正则 编辑:程序博客网 时间:2024/06/14 01:07

写搜索引擎希望能尝试使用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




0 0
原创粉丝点击