我们生活在数据爆炸的时代,机器日志、RFID检测器、传感器网络、车载GPS和零售交易数据等,所有这些都将使数据显著增加。这些海量数据的处理,就需要并行或者分布式的处理。因此MapReduce编程模型就由需求而产生。
MapReduce是一个批量的查询处理器,这个模型中,程序员编写两个函数,分别为map 和reduce,每个函数定义一个键/值集合到另一个键/值集合的映射。Hadoop是基于google的GFS及mapReduce创建。
具体技术细节可以参考,MapReduce:simplified Data Processing on Large Clusters, The Hadoop Distributed File System两篇论文。
一、环境搭建
Hadoop 安装环境:hadoop 可以安装在linux及windows下,但是一般都在linux下使用。
1、下载hadoop-2.0.3、jdk1.6
2、安装hadoop和jdk
3、用户设置以及无密钥通信
4、无密钥通信
5、配置文件设置可参照: http://wkm.iteye.com/blog/1483152
6、使用命令:
格式化hdfs文件系统:/bin/hadoop namenode -format
启动hadoop命令:$bin/start-all.sh
命令: jps,查看启动的namenode,datanode节点及jobstracer等节点信息。
运行命令:/hadoop jar examples.jar filepath1,filepath2其他命令如,文件操作,参数配置等
二、eclipse开发环境配置
1、下载插件hadoop-eclipse-plugin-2.0.1.jar,将该jar包放入eclipse下的plugins/文件夹下。重启eclipse。
2、将Map/Reduce视图和hdfs文件系统的视图配置,见下图:
Location Name : 此处为参数设置名称,可以任意填写
3、在eclipse中配置hadoop的安装路经
4、新建hadoop项目
a、将hadoop安装目录/src/example/org/apache/hadoop/example/WordCount.java
的文件copy到项目中。
b、上传模拟数据文件夹。 为了运行程序,我们需要一个输入的文件夹,和输出的文件夹。
通过hadoop的命令在HDFS上创建/tmp/workcount目录,命令如下:bin/hadoop fs -mkdir /tmp/wordcount
通过copyFromLocal命令把本地的word.txt复制到HDFS上,命令如下:bin/hadoop fs -copyFromLocal /home/hadoop/word.txt /tmp/wordcount/word.txt
5、运行项目
a.在新建的项目Hadoop,点击WordCount.java,右键-->Run As-->Run Configurations
b、在弹出的Run Configurations对话框中,点Java Application,右键-->New,这时会新建一个application名为WordCount
c、配置运行参数,点Arguments,在Program arguments中输入“你要传给程序的输入文件夹和你要求程序将计算结果保存的文件夹”
d、点击run