Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例

这几天由于遇见了一个不是问题的问题,导致折腾了很多功夫,先来看看我的具体操作过程吧。
首先将相应的eclipse-Java-2018-09-linux-gtk-x86_64.tar压缩包下载好,接着在Ubuntu界面进行解压,
在这里插入图片描述
然后我将这个包放在了/opt/ 的文件夹路径上,接着进入eclipe文件夹内部找到eclipse驱动程序(就是中间的这个驱动程序·),然后按照它的安装步骤一步一步下来就可以了。
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第1张图片
接下来进入了eclipse视图界面,先建一个文件再来运行看看
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第2张图片
运行成功,表示eclipse安装没有问题。但是我退出eclipse后,却发现eclipse在桌面上没有相应的快捷方式。
接着在终端输入sudo gedit /user/share/eclipse/eclipse.desktop (输入的这个路径存放着各个软甲的快捷方式)
接着将·查看Exec 和Icon上的文件路径是否可以在文件夹上找到。
验证一致后。将/user/share/eclipse/eclipse.desktop文件复制到桌面上来即可产生相应的快捷方式。
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第3张图片
好的,下一步需要用到的是hadoop-eclipse-plugin-2.6.0.tar压缩包,我的版本是2.6.0的,接下来将该压缩包放入eclipse/plusins目录下,然后重启eclipse。正常情况下点击eclipse右上角window>show view>other>Map/Reduce Location在桌面左上角会出现DFS Locations.
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第4张图片
下一步导入Hadoop安装目录(毕竟要配置Hadoop环境嘛,所以必须得导入它的安装目录)点击window>perference>Hadoop Map/Reduce 接着安装自己的Hadoop目录即可(我的Hadoop安装目录在上一节中有提到,当时还遇到一个小插曲,就是网上还有人认为这个安装目录是上一个Hadoop-plugin-2.6.0.tar解压包的解压路径,居然还有那麽多人给他点赞,晕死,当时因为这个教学走了一些弯路,我感觉多走一个弯路得耗费近一个小时吧,主要原因还是电脑配置跟不上,跑的跟个老太太是的。)
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第5张图片
接下来Hadoop路径配置完了,就要准备添加一个MapReduce环境了,不过在这之前,我们得首先启动Hadoop,如下:
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第6张图片

接下来就可以进行Hadoop连接了,点击上图的那个Map/Reduce Locations图标,接下来在右击空白的地方,选择New Hadoop location…,接着你会看到如下界面
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第7张图片
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第8张图片
里面Location name那么是可以随便填写的,左边的Host 和Port是mapred-site.xml文件里面的mapred.job.tracker里的ip和port(我的是Host:localhost和Port:9001)右边的DFS Master是core-site.xml文件里面的fs.default.name里面的ip和port(我的是localhost和9000)
接下来配置完毕,重启eclipse,然后查看自己的eclipse中DFS Location下的文件夹,发现里面一个文件都没有(按照如下教程,他应该会自动生成许多文件夹才是啊,下面是教程中的图片,真实情况下,我的DFS Location下面生成了文件夹生成零个,然后接下来我为了能让DFS Location下自动生成多个文件夹,忙活了整整两天!)
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第9张图片
在这两天里我尝试了各种方案,1:先是查看mapred.job.tracker里的ip和port以及右边的DFS Master是core-site.xml文件里面的fs.default.name里面的ip和port,然后重新修改里面的ip,接着关闭节点,重新开启节点,重启eclipse,发现还是这个问题,2:于是把上图Host Port上的默认勾选的Use M/R Master host的勾选给取消了,再来重新配置文件,重启Hadoop集群,eclipse,发现还是不管用;3:调整Hadoop安装路径,就是照着那个教程上说的解压路径去做,结果又是failed 4:将Hadoop安装路径甚至为Hadoop的子文件夹Hadoop安装路径,再重试,failed。5:导入Hadoop文件夹去DFS location中,导入完成后加入Word Count代码,运行,failed。6:快照恢复到某操作之前某个状态,然后再对着保留这个状态 7:配置hdfs-site.xml文件,将其中的权限开启写为关闭。failed 8:将端口号的ip地址写为主机的ip地址,接着再hosts文件下写下真机ip与主机名的映射,修改core-site.xml与mapred-site.xml,failed.9:将端口号改成虚拟机主机名和对应的ip测试,failed。。。就不一一列出来了,为了解决这个问题,我足足试了两天,结果一无所获!(当时查了博客上的方法都用遍了)你要想想,我的电脑本来就已经运行的够慢了,还要不停的在虚拟机上重启eclipse,Hadoop集群,修改,编辑文件,电脑经常会卡的移动一个鼠标都有好几秒的延迟。。。
接着我索性破罐子破摔了,直接按照这种“错误"的方式去进行修改,接下来创建这个WordCount.java文件

package com.baison.action;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.lib.TokenCountMapper;
import org.apache.hadoop.mapred.lib.LongSumReducer;
public class WordCount {
	public static void main(String[] args) {
		JobClient client = new JobClient();
		JobConf conf = new JobConf(WordCount.class);
		String[] arg = { "hdfs://localhost:9100/user/tanglg1987/input",
				"hdfs://localhost:9100/user/tanglg1987/output" };
		FileInputFormat.addInputPath(conf, new Path(arg[0]));
		FileOutputFormat.setOutputPath(conf, new Path(arg[1]));
		conf.setOutputKeyClass(Text.class);
		conf.setOutputValueClass(LongWritable.class);
		conf.setMapperClass(TokenCountMapper.class);
		conf.setCombinerClass(LongSumReducer.class);
		conf.setReducerClass(LongSumReducer.class);
		client.setConf(conf);
		try {
			JobClient.runJob(conf);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

然后创建一个input文件夹,再在这个文件夹里随意创建两个文件file01.tex,file02.txt文件的内容自己随意填写,因为我们的目标就是统计文件里有多少重复的字符,比如可以在文件里填写hello world等内容(因为Hadoop运算要有一个输入文件,和一个输出文件,输入文件要自己去创建,输出文件自动会生成的)
接着将文件导入DFS Location下 ,在终端输入如下指令即可:hadoop fs -put filename1 filename2
然后右击这个WordCount.java文件,选择>run as ->Run Configurations接下来找到Java Application,右键new,这时会新建一个application名为 WordCount,接着点击右边一栏Arguments,在Program arguments下填写相应的端口,填写格式为:hdfs://localhost:9000/input文件夹路径 hdfs://localhost:9000/output文件夹的输出路径。
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第10张图片
接着点击下面的run,然后一段时间后果然不出意料的出现了报错,仔细一看报错内容显示是9100端口找不到,我就纳闷了,我没配置过9100端口呀,后面仔细看看代码,原来问题出在这里
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第11张图片
这段WordCount代码是直接网上copy过来的,里面的代码9100端口和input文件夹的路径都配错了,接着对着上面的配置信息修改一下,再次点击run,然后在DFS Location路径下refresh文件夹后就出现了output文件夹,点击里面的文件进行查看:
Hadoop使用学习笔记(2):在Ubuntu上上使用Eclipse配置Hadoop开发环境详细步骤+WordCount示例_第12张图片
好的,里面file01和file02文件的单词计数功能完成了,真心的不容易呀!原来这两天我一直致力于解决DFS Location下文件夹显示的问题居然不是个问题,我还一直以为这是个问题呢,一直尝试了两天都没解决,这教程的作者们让我好走了多少弯路呀!
同时我也深深的理解了,作为一个小白的不容易,很多东西必须要有不到南墙不回头的信念,以及不盲信纸上知识,要善于多加尝试。
不说了,我接着看今晚的国庆节目了。

你可能感兴趣的:(hadoop)