基于《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 ...
随机推荐
- HDU 4651 (生成函数)
HDU 4651 Partition Problem : n的整数划分方案数.(n <= 100008) Solution : 参考资料: 五角数 欧拉函数 五边形数定理 整数划分 一份详细的题 ...
- Codeforces 653B Bear and Compressing【DFS】
题目链接: http://codeforces.com/problemset/problem/653/B 题意: 要求你构造一个长度为n的字符串使得通过使用m个操作,最终获得字符a.已知第i个操作将字 ...
- delightful world--计蒜客(DFS)
http://nanti.jisuanke.com/t/11067 题目大意: 给你一个n和m 下面是m个字符串和k 每一字符串的长度是n 你要找一个串跟每一个串匹配 有k个字符是和这个串相 ...
- atomic原子操作
C++中对共享数据的存取在并发条件下可能会引起data race的未定义行为,需要限制并发程序以某种特定的顺序执行,有两种方式:1.使用mutex保护共享数据: 2.原子操作 原子操作:针对原子类型操 ...
- How do I know which version of Javascript I'm using?
Click on this link to see which version your BROWSER is using: http://jsfiddle.net/Ac6CT/ You should ...
- day5-WordCount
1. wordcount示例开发 1.1. wordcount程序整体运行流程示意图 map阶段: 将每一行文本数据变成<单词,1>这样的kv数据 reduce阶段:将相同单词的一组k ...
- win8 metro 自己写摄像头录像项目
这是要求不适用CameraCaptureUI等使用系统自带的 camera UI界面.要求我们自己写调用摄像头摄像的方法,如今我把我的程序贴下: UI界面的程序: <Page x:Class= ...
- instancetype VS id
英文好的直接读下面链接的文章就好了: http://stackoverflow.com/questions/8972221/would-it-be-beneficial-to-begin-using- ...
- linux远程管理工具:putty
使用QTP测试文件上传和目录做成是否成功,必须先将文件和目录下载到本地,再作比较.现在下载工具众多,其中putty是最出色的一个,支持linux服务器,这点很重要“免费的”.下面就让我们来看一下吧! ...
- JavaScript操作符(关系操作符、相等操作符和条件操作符)
关系操作符用于对两个值进行比较,返回一个布尔值.关系操作符包括大于(>),小于(<),大于等于(>=),小于等于(<=).当关系操作符用于非数值时,也要先进行数值的转换.如 v ...