有同学无法正常运行程序,这里将Eclipse下Hadoop环境配置进行一下说明:
1.新建Map/Reduce工程
2.设置Hadoop Locaiton,第一次使用的话,点击大象,新建配置。
3.设置内容(配置需要和Hadoop的配置文件相同):
Location name和Host填写localhost,Map/Reduce Master的端口号必须和Mapred-site.xml中的HDFS配置端口号一致(Hadoop2.2.0版本中没有配置,建议按照Hadoop1.x配置),这里填写9001,DFS Master填写HDFS的端口号必须和core-site.xml中的HDFS配置端口一致,这里填写9000,User name为Hadoop的所有者用户名,即安装Hadoop的Linux用户,这里为Hduser。
5.配置好之后,开启Hadoop,即可在Eclipse左侧看到HDFS中的文件,至此,Eclipse下的环境已经搭好。
开发实例:
1.新建工程 wordcount
2.点击Configure Hadoop install directory 配置Hadoop 安装位置,选择Hadoop安装根目录,应用。
3.Hadoop类库这时已经自动导入了。src——>new——>other可以在工程中建立Map类,Reduce类,以及MapReduceDriver类,向导会自动生成3个类的框架,向里面填写相关代码,之后点击MapReduceDriver类——>Run on hadoop来运行Hadoop应用。这个运行是工具自动打包成jar文件爱你,并部署到Hadoop环境上去运行的。
4.实例说明
4.1非标准步骤(在一个文件内实现Map类,Redcue类,MapReduceDriver类)
(1)这里没有新建Map类,Reduce类,MapReduceDriver类,直接在工程wordcount里新建一个类文件,命名wordcount(不标准,标准步骤后续补上)。然后将Hadoop 样例程序wordcount.java内容复制进去,保存,然后选择Run——>Run Configurarion...。
(2)在Arguments标签页,设置参数:/home/jack/Desktop/in为我的待计算文件所在目录(需要提前将文件拷贝进去);/home/jack/Desktop/out是计算结果输入目录(程序运行过程中自动创建);VM arguments是设置Map/Reduce子虚拟机使用的堆的大小。
(3)查看out目录结构
(4)查看计算结果
4.2标准步骤(Map类,Reduce类,MapRedcueDriver分开建立,低耦合)
(1)新建Map/Reduce工程wordcount。
(2)新建Mapper.java,选择File——>New——>Mapper,输入包名及类名。
(3)实现Mapper.java(在Hadoop2.2.0之中,Mapper框架的参数变为Mapper<LongWritable, Text, Text,Text>,建议改为Mapper<LongWritable, Text, Text,IntWritable>,否则会提示类型错误)。
(4)新建Reduccer.java,选择File——>New——>Reducer,输入包名及类名。
(5)实现Reducer.java(同样在Hadoop2.2.0之中,Reducer框架的参数变为Reducer<Text,Text, Text, Text>,reduce方法变为reduce(Text _key, Iterable<Text> values, Context context),建议改为Reducer<Text,IntWritable, Text, IntWritable>和reduce(Text _key, Iterable<IntWritable> values, Context context),否则会提示类型错误,如果Reducer中的第二个参数类型不该为IntWritable的话,最后的结果是没有合并的)。
(6)建立Map/Reduce Driver,选择File——>New——>MapReduce Driver,输入包名及类名。
(7)实现MapReduce Driver.java。
(8)检查Map/Reduce程序是否已经编译完毕(编译自动进行),查看编译的.class文件是否存在。
(9)测试Map/Reduce单词统计应用程序。右键wordcount.java(MapReduce Driver程序,里面含有main方法)——>Run as...——>Run Configurations...(设置输入输出目录)——>选择Java Application——>wordcount(根据自己的情况修改)——>Arguments设置Program arguments和VM arguments(VM arguments可以不设置),设置好之后,Run,即可在设置好的输出目录看到结果。
(10)out目录结构
(11)计算结果