准备天气数据(详情请看hadoop权威指南附录气象数据)
1. 在 http://www.hadoopbook.com/ 下载天气数据文件 1901.gz 1902.gz
2. 上传数据到服务器
3. 创建hadoop添加数据文件夹 hadoop dfs –mkdir /ncdc
4. 将天气数据添加到hadoop节点
hadoopdfs –put 1901 1902 /ncdc
5. 查看是否已经上传
hadoopdfs –ls /ncdc
hadoop eclipse插件下载
1. 在github上搜索hadoopeclipse plugin
2. 找到hadoop2x的插件仓库
https://github.com/winghc/hadoop2x-eclipse-plugin
3. 下载最新的hadoop插件,放在eclipse安装目录dropins目录下
4. 启动eclipse,在new 选项里有如下说明安装成功:
配置windows中的hadoop目录
eclipse 远程调试 是在windows上运行程序,将任务提交到远程。所以本机也需要有hadoop的一些环境。
1. 解压和虚拟机版本相同的hadoop包,如:hadoop-2.7.3.tar.gz
2. 配置HADOOP_HOME环境变量 未解压后hadoop目录
3. 下载windows中hadoop的一些运行环境放在hadoop/bin目录下:
4. 下载hadoop.dll文件放在C:\Windiow\System32下
以上4、5都可以在github上搜索 hadoop common 找到 hadoop windows运行库找到
https://github.com/SweetInk/hadoop-common-2.7.1-bin
5. 连接dfs
1. Host要在windows中的 hosts中添加映射
192.168.61.137 zh-centos
这里不要用ip
2. 在advanceparameter中修改
Hadoop.tmp.dir 和虚拟机中配置路径一样
3. 连接dfs查看远程文件
1. 进入map/reduce视图
2. 在projectExplorer中查看文件
map/reduce项目
1. 新建项目
2. 编码 参照 hadoop权威指南第二章
3. 执行程序
在main方法上执行run on hadoop
4. 结果
在eclipse的dfs中可以看到:
打开part-r-00000可以看到计算 1901 1902年最高温度的结果:
1901 317
1902 244
问题汇总
1. API统一,书中使用了两种API,注意!
统一使用新的API
2. 文件权限问题,运行时很多地方要进行文件的权限检查,而在windows上,很多地方要报错。
java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
解决:
解压hadoop源码
拷贝FileUtil文件到项目中:
运行程序,查看日志 看FileUtil那个方法报错修改那个方法如:
不做权限检查直接返回true
3. 远程地址权限不足
org.apache.hadoop.security.AccessControlException
修改hdfs-site.xml
添加:
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>