基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

时间:2023-03-08 22:15:07

在Windows环境上搭建Hadoop环境需要安装jdk1.7或以上版本.有了jdk之后,就可以进行Hadoop的搭建.

首先下载所需要的包:

  1. Hadoop包: hadoop-2.5.2.tar.gz

  2. Eclipse插件: hadoop-eclipse-plugin-2.5.2.jar

  3. Hadoop在Windows运行插件包: hadooponwindows-master.zip

  4. 测试数据: 1901和1902年天气预报文件

以上文件下载链接: https://pan.baidu.com/s/1R9qFdFDWHN1NnCW83VQiJg  密码: lkpp

将以上的文件都下载下来之后,进行Hadoop的安装.

第一步: 安装hadoop

  1. 将下载的 hadoop-2.5.2.tar.gz 解压到指定目录, 例如我的就是放在 C:\hadoop, 一下所有的例子都以该目录为标准

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

  2. 配置Hadoop环境变量

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

  2. 修改Hadoop配置文件

    2.1 编辑 %HADOOP_HOME%\etc\hadoop 下的core-site.xml文件, 加入以下内容

 <configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/C:/hadoop/hadoop-2.5.2/workplace/tmp</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/C:/hadoop/hadoop-2.5.2/workplace/name</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

    2.2 编辑 %HADOOP_HOME%\etc\hadoop 下的mapred-site.xml文件, 加入以下内容

 <configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://localhost:9001</value>
</property>
</configuration>

    2.3 编辑 %HADOOP_HOME%\etc\hadoop 下的hdfs-site.xml文件, 加入以下内容

 <configuration>
<!-- 这个参数设置为1,因为是单机版hadoop -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/C:/hadoop/hadoop-2.5.2/workplace/data</value>
</property>
</configuration>

    2.4 编辑 %HADOOP_HOME%\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>

    2.5 编辑 %HADOOP_HOME%\etc\hadoop 下的hadoop-env.cmd文件,将JAVA_HOME用 @rem注释掉,编辑为本机JAVA_HOME的路径,然后保存

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

  3. 配置Hadoop在Windows上的运行环境

将下载的 hadooponwindows-master.zip 解压, 并将bin目录下的所有文件替换到 %HADOOP_HOME%\bin 目录下

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

  4. DOM窗口运行以下命令:

hdfs namenode -format

  5. DOM窗口切换到 %HADOOP_HOME%\sbin 目录, 可以进行Hadoop的启动和停止

 启动: start-all.cmd
停止: stop-all.cmd

    5.1 运行 start-all.cmd 如果出现类似于以下界面说明Hadoop在Windows上部署成功

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

  6. 根据 core-site.xml 的配置, 接下来就可以通过:hdfs://localhost:9000 来对hdfs进行操作了

    6.1 创建输入目录

 hadoop fs -mkdir hdfs://localhost:9000/user/
hadoop fs -mkdir hdfs://localhost:9000/user/input

    6.2 上传测试数据到目录

 hadoop fs -put C:\hadoop\data\1901 hdfs://localhost:9000/user/input
hadoop fs -put C:\hadoop\data\1902 hdfs://localhost:9000/user/input

    6.3 查看上传上去的文件

 hadoop fs -ls hdfs://localhost:9000/user/input

    出现以下界面说明上传成功

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

  7. 安装Eclipse插件

    7.1 将下载的 hadoop-eclipse-plugin-2.5.2.jar 文件放到Eclipse安装目录下的plugins下, 重启Eclipse

    7.2 点击菜单栏 Windows–>Preferences ,如果插件安装成功,就会出现如下图

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

    7.3 配置Hadoop安装目录

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

    7.4 调出 Map/Reduce 视图

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

    7.5 点击 Map/Redure Locations 窗口,空白处右键New Hadoop location

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

    7.6 填写参数,连接参数, 然后 Finish

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

  8. 编写测试类:

    8.1 创建Map/Redure Project

右键 –> New –> Other –> Map/Redure Project

    8.2 编写测试代码

 package hadoop.code01.maxtemperature;

 import java.io.IOException;

 import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.log4j.BasicConfigurator; public class MaxTemperature { public static class MaxTemperatureMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private static final Integer MISSING = 9999; @Override
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
String year = line.substring(15, 19);
System.out.println("line: " + line);
System.out.println("year: " + year);
Integer air;
if (line.charAt(87) == '+') {
air = Integer.parseInt(line.substring(88, 92));
} else {
air = Integer.parseInt(line.substring(87, 92));
}
String quality = line.substring(92, 93);
System.out.println("quality: " + quality);
if (!MISSING.equals(air) && quality.matches("[01459]")) {
context.write(new Text(year), new IntWritable(air));
}
}
} public static class MaxTemperatureReducer extends Reducer<Text, IntWritable, Text, IntWritable> { @Override
public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
Integer maxValue = Integer.MIN_VALUE;
System.out.println("maxValue0: " + maxValue);
for (IntWritable value : values) {
System.out.println("maxValue1: " + maxValue);
maxValue = Math.max(maxValue, value.get());
}
context.write(key, new IntWritable(maxValue));
}
} public static class Temperature { public static void main(String[] args) throws Exception, ClassNotFoundException, InterruptedException {
BasicConfigurator.configure(); // 自动快速地使用缺省Log4j环境。
System.out.println("kaishi...");
if (args.length != 2) {
System.err.println("Usage: MaxTemperature <Input path> <Output path>");
System.exit(-1);
}
Configuration conf = new Configuration();
Job job = new Job(conf); job.setJarByClass(MaxTemperature.class);
job.setJobName("maxTemperature"); job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class); job.setMapperClass(MaxTemperatureMapper.class);
job.setReducerClass(MaxTemperatureReducer.class); job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1])); job.waitForCompletion(true); System.out.println("jieshu...");
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
} }

    8.3 执行测试

 Run As –> Run Configurations

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

    8.4 点击 Run 运行, 然后在DOM窗口执行查看输出结果

 hadoop fs -ls hdfs://localhost:9000/user/output

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

    8.5 执行 hadoop fs -cat hdfs://localhost:9000/user/output/part-r-00000 查看算法执行结果数据

基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子

至此, 第一个Hadoop例子执行成功