基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子
在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, 一下所有的例子都以该目录为标准

2. 配置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的路径,然后保存

3. 配置Hadoop在Windows上的运行环境
将下载的 hadooponwindows-master.zip 解压, 并将bin目录下的所有文件替换到 %HADOOP_HOME%\bin 目录下

4. DOM窗口运行以下命令:
hdfs namenode -format
5. DOM窗口切换到 %HADOOP_HOME%\sbin 目录, 可以进行Hadoop的启动和停止
启动: start-all.cmd
停止: stop-all.cmd
5.1 运行 start-all.cmd 如果出现类似于以下界面说明Hadoop在Windows上部署成功


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
出现以下界面说明上传成功

7. 安装Eclipse插件
7.1 将下载的 hadoop-eclipse-plugin-2.5.2.jar 文件放到Eclipse安装目录下的plugins下, 重启Eclipse
7.2 点击菜单栏 Windows–>Preferences ,如果插件安装成功,就会出现如下图

7.3 配置Hadoop安装目录

7.4 调出 Map/Reduce 视图

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

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

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

8.4 点击 Run 运行, 然后在DOM窗口执行查看输出结果
hadoop fs -ls hdfs://localhost:9000/user/output

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

至此, 第一个Hadoop例子执行成功
基于《Hadoop权威指南 第三版》在Windows搭建Hadoop环境及运行第一个例子的更多相关文章
- Android编程权威指南第三版 第32章
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_35564145/article/de ...
- hadoop权威指南(第四版)要点翻译(4)——Chapter 3. The HDFS(1-4)
Filesystems that manage the storage across a network of machines are called distributed filesystems. ...
- hadoop权威指南(第四版)要点翻译(5)——Chapter 3. The HDFS(5)
5) The Java Interface a) Reading Data from a Hadoop URL. 使用hadoop URL来读取数据 b) Although we focus main ...
- CSS权威指南-第三版--读书笔记
第一章:CSS和文档 html是结构化语言,css是样式语言,html主要用来被强大的搜索引擎更好的索引,更好的让一个盲人通过语音浏览器来了解我们的网页,这也就是为什么说html是结构话语言,因为这是 ...
- [读书笔记]Hadoop权威指南 第3版
下面归纳概述了用于设置MapReduce作业输出的压缩格式的配置属性.如果MapReduce驱动使用了Tool接口,则可以通过命令行将这些属性传递给程序,这比通过程序代码来修改压缩属性更加简便. Ma ...
- Android编程权威指南(第三版)- 2.8 挑战练习:添加后退按钮
package com.example.geoquiz; import android.support.v7.app.AppCompatActivity; import android.os.Bund ...
- Hadoop权威指南:通过FileSystem API读取数据
Hadoop权威指南:通过FileSystem API读取数据 [TOC] 在Hadoop中,FileSystem是一个通用的文件系统API 获取FileSystem实例的几个静态方法 public ...
- Hadoop权威指南(中文版-带目录索引)pdf电子书
Hadoop权威指南(中文版-带目录索引)pdf电子书下载地址:百度网盘点击下载:链接:https://pan.baidu.com/s/1E-8eLaaqTCkKESNPDqq0jw 提取码:g6 ...
- Hadoop权威指南:压缩
Hadoop权威指南:压缩 [TOC] 文件压缩的两个好处: 减少储存文件所需要的磁盘空间 加速数据在网络和磁盘上的传输 压缩格式总结: 压缩格式 工具 算法 文件扩展名 是否可切分 DEFLATE ...
随机推荐
- java 字节码 指令集
有时候为了能理解JVM对程序所做的优化等,需要查看程序的字节码,因此知道了解一些常见的指令集很重要! 指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推 ...
- poj2117求割点后最多的块。
tarjan算法,枚举割点(注意此题无向图可能不连通),每个割点分割后最大块数+连通分量-1即可.开始老是TLE,后来比较了他人代码,只在vector<vector<int.>.&g ...
- topcoder 650 srm div2 1000pts
(15) 也是 DIV1 500 题意是给定 一个无向图 删去一条边以后 可不可以是完全二叉树. 细节点很多,开始做法居然求到桥去了,最近强联通写傻了. 最多1024-1个点 1024-1条边枚举 所 ...
- stored procedure --存储过程
存储过程(Stored Procedure),计算机用语,是一组为了完成特定功能的SQL语句集,是利用SQL Server所提供的Transact-SQL语言所编写的程序.经编译后存储在数据库中.存储 ...
- Vue基础学习
使用vue-cli构建初始化vue项目 vue init webpack myfirst 项目截图:(开发工具:webStorm) 主要练习了vue的基本指令:v-bind.v-if.v-show.v ...
- 【Git使用具体解释】Egit的经常使用操作具体解释
经常使用操作 操作 说明 Fetch 从远程获取最新版本号到本地,不会自己主动merge Merge 能够把一个分支标签或某个commit的改动合并如今的分支上 Pull 从远程获取最新版本号并mer ...
- Phalcon 开发工具(Phalcon Developer Tools)
Phalcon提供的这个开发工具主要是用来辅助开发,比方生成一些程序的基本框架.生成控制器模型等. 使用这个工具我们仅仅须要一个简单的命令就可以生成应用的基本框架. 很重要: 要使用这个工具我们必需要 ...
- Guice 学习(八)AOP (面向切面的编程)
Guice的AOP还是非常弱的.眼下只支持方法级别上的,另外灵活性也不是非常高. 看例如以下演示样例: Guice支持AOP的条件是: 类必须是public或者package (default) 类不 ...
- JS应用之禁止抓屏、复制、打印
JS应用之禁止抓屏.复制.打印项目需要禁止抓屏.复制.打印的要求,复制.打印做起来可能顺手一点网上各种各样的脚本俯首皆是.但抓屏怎么禁止?PrintScreen是一个特殊的键,它是没有keyCode的 ...
- asp.net mvc3的静态化实现
静态化处理,可以大大提高客户的访问浏览速度,提高用户体验,同时也降低了服务器本身的压力.在asp.net mvc3中,可以相对容易地处理静态化问题,不用过多考虑静态网页的同步,生成等等问题.我提供这个 ...