Windows10安装配置Hadoop以及用eclipse运行WordCount程序
一、Windows环境下hadoop安装和配置
1.下载Hadoop
选择一个版本下载
http://www.apache.org/dyn/closer.cgi/hadoop/common
下载完后进行解压,这里我是解压到D:/Develop/Hadoop/hadoop-3.2.1/hadoop-3.2.1
2.原版的Hadoop不支持Windows系统,需要修改一些配置方便在Windows上运行
将所需文件hadooponwindows-master.zip 解压
复制解压后的bin文件和etc文件到hadoop-3.2.1文件中,并替换原有的bin和etc文件
3.配置Hadoop的环境变量
①新建变量名:JAVA_HOME
输入路径:D:\jdk1.8 (你的jdk所在位置)
在path中最前面加上:%JAVA_HOME%\bin;
②新建变量名:HADOOP_HOME
输入路径:D:/Develop/Hadoop/hadoop-3.2.1/hadoop-3.2.1
在path中最前面加上:%HADOOP_HOME%\bin;
4. 确认hadoop配置的jdk的路径
在hadoop-3.2.1\etc\hadoop找到hadoop-env.cmd
右键用一个文本编辑器打开
找到 set JAVA_HOME=C:\PROGRA~1\Java\jdk1.7.0_67
将C:\PROGRA~1\Java\jdk1.7.0_67 改为 D:\jdk1.8(在环境变量设置中JAVA_HOME的值)
(如果路径中有“Program Files”,则将Program Files改为 PROGRA~1
5.配置好上面所有操作后,win+R 输入cmd打开命令提示符,然后输入hadoop version,按回车,如果出现如图所示结果,则说明安装成功
6.修改hadoop核心配置文件
在hadoop-3.2.1\etc\hadoop中找到以下几个文件,复制内容到文件里面,如果文件里面已经有相同的,则不用复制
①打开 hadoop-3.2.1/etc/hadoop/core-site.xml, 复制下面内容粘贴到最后并保存
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
打开 hadoop-3.2.1/etc/hadoop/mapred-site.xml, 复制下面内容粘贴到最后并保存
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
打开 hadoop-3.2.1/etc/hadoop/hdfs-site.xml, 复制下面内容粘贴到最后并保存, 本例子是建立在 HADOOP_HOME的目录里(注意每个人的hadoop的路径不一样,这里要做修改)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/D:\Develop\Hadoop\hadoop-3.2.1/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/E:/hadoop-2.7.3/datanode</value>
</property>
</configuration>
打开 hadoop-3.2.1/etc/hadoop/yarn-site.xml,复制下面内容粘贴到最后并保存
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
7.启动Hadoop服务
创建三个文件夹
D:\Develop\Hadoop\hadoop-3.2.1\hadoop-3.2.1/tmp
D:\Develop\Hadoop\hadoop-3.2.1\hadoop-3.2.1/namenode
D:\Develop\Hadoop\hadoop-3.2.1\hadoop-3.2.1/datanode
格式化 HDFS
以管理员身份打开命令提示符
输入hdfs namenode -format执行
执行完后 namenode文件里会自动生成一个current文件,则格式化成功。
然后转到Hadoop-2.7.3\sbin文件下
输入start-all.cmd,启动hadoop服务
**输入JPS ** 可以查看运行的所有服务 (前提是java路径设置正确)
按照以上操作,在Windows环境下的Hadoop就安全安装好了。
二、在eclipse上运行WordCount程序
下载Hadoop连接eclipse的插件
在GitHub中下载对应版本的hadoop-eclipse-plugin-2.7.3.jar
插件,下载后放到eclipse的dropins
或plugins
文件夹里
下载CDH版本的Hadoop
在http://archive.cloudera.com/cdh5/cdh/5下载,这里我存放在D:/hadoop-2.6.0-cdh5.4.2。
1.在Eclipse开发环境中创建JAVA工程
双击桌面上的Eclipse的快捷方式。首先选择菜单“File -> New -> Java Project”。再在“Project name:”文本框中输入工程名“WordCount”。最后点击“Next”按钮。
2. 添加编译依赖类库
首先点击选项卡“Libraries”。再点击“Add External JARs…”按钮添加编译依赖类库,分别添加目录“D:/hadoop-2.6.0-cdh5.4.2/share/hadoop/mapreduce1”、“D:/hadoop-2.6.0-cdh5.4.2/share/hadoop/mapreduce1/lib”和“D:/hadoop-2.6.0-cdh5.4.2/share/hadoop/common”下的所有JAR文件。最后点击“Finish”按钮。
3. 在工程中添加类
首先右击工程WordCount
,选择菜单“New -> Class”。再在“Package:”文本框中输入包名“lab2.module11”,在“Name:”文本框中输入类名“WordCount”。最后点击“Finish”按钮。
4. 编写词频统计代码
在文件“WordCount.java”中输入以下代码。
package lab2.module11;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length < 2) {
System.err.println("Usage: wordcount <in> [<in>...] <out>");
System.exit(2);
}
Job job = new Job(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
for (int i = 0; i < otherArgs.length - 1; ++i) {
FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
}
FileOutputFormat.setOutputPath(job,
new Path(otherArgs[otherArgs.length - 1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
5.准备输入数据
在D盘下新建“input”文件夹,并将文件“D:/hadoop-2.6.0-cdh5.4.2/LICENSE.txt”复制到路径“D:/input/”下。
6. 配置运行参数
首先选择菜单“Run -> Run Configurations…”。再选择左侧的“Java Application”,并点击左上角的新建按钮。然后点击选项卡“Arguments”,并在文本框“Program arguments:”中输入作业的输入和输出路径D:\input D:\output
。然后点击选项卡“Environments”,点击右侧按钮“New”,在弹出的对话框中文本框“Name:”中输入HADOOP_HOME
,文本框“Value:”中输入D:\Develop\Hadoop\hadoop-3.2.1\hadoop-3.2.1
;再一次点击右侧按钮“New”,在弹出的对话框中文本框“Name:”中输入PATH
,文本框“Value:”中输入%PATH%;D:\Develop\Hadoop\hadoop-3.2.1\hadoop-3.2.1\bin
。
7.在Eclipse开发环境中测试程序
点击按钮“Run”,即可以在在Eclipse开发环境中运行程序,得到如下输出。
参考博客: https://blog.csdn.net/CSDN_fzs/article/details/78985586