本文适用的场景为在window环境中做开发,然后将完成的程序打包上床至Linux中的hadoop集群中进行运行,当然也可以直接在Windows中采用模拟单机运行。
所用工具:
- hadoop部署包(hadoop-2.7.1)
- hadoop源码包(hadoop-2.7.1-src)
- eclipse
- eclipse hadoop插件
- Java:jdk1.8(Windows和Linux Java的版本需要一致)
所用工具可以在此下载:
链接:https://pan.baidu.com/s/1qK6bjO2qUeLVgnTj1pLe7g
提取码:5aoq
一、Windows环境中配置hadoop开发环境
由于hadoop集群是在Linux环境中搭建,由于Windows系统和Linux系统在很多方面不同,比如Linux中路径中使用“/”,而Windows中使用“\”,因此下载的hadoop的部署包不能直接使用,需要替换一些文件。具体如下:
(1)首先在任一个盘中新建一个新文件夹随便进行命名(此时命名为hadoop),然后将上述下载的所有工具下载到这个文件夹中,同时再新建一个hadoop-lib文件夹,将部署包进行解压并依次进入文件夹hadoop-2.7.1》share》hadoop,此时可以看到有7个文件夹,这些文件夹中都是hadoop开发中需要引用的jar包,然后将除了https和kms两个文件的其他文件夹中的所jar包copy到开始新建的hadoop-lib文件夹中,为以后使用eclipse做MR开发做一个user library)
(2)在部署包hadoop-2.7.1中的bin路径下有一些文件,该文件对Linux有比较好的支持,但是我们的开发环境是Windows,因此需要进行一些文件的替换,将下载的文件夹hadoop-common-bin-2.7.1中bin目录下的所有文件copy到部署包的bin目录下,同名文件进行覆盖。同时将hadoop.dll文件在copy到C:\Windows\System32目录中,重启一下系统。
(3)创建环境变量:在系统环境变量中新增一个HADOOP_HOME,
再在Path环境变量中新增
因为我们在Linux中的hadoop集群中hdfs在root用户名中配置,因此我们在Windows中客户端与namenode进行交互时,也应该是root用户名,因此我们还需要再环境变量中再配置一个HADOOP_USER_NAME,如下图
或者也可以修改Windows系统每次登陆的用户名为root。如果不进行用户名的修改,后面访问hdfs会报错。
(4)eclipse中安装hadoop所用插件:将下载的插件
hadoop-eclipse-plugin-2.7.1.jar放入eclipse的安装目录中的plugins目录中,然后重启eclipse之后,会出现如下改变(红色标注)
接下来继续配置,依次打开菜单栏中的Window》Preference,出现如下图
然后找到刚才hadoop2.7.1的部署包,然后Apply
(5)eclipse访问hdfs:如下图
然后会出现如下图
我们此时不使用MR计算框架,只使用HDFS,因此将1中的打钩去掉,然后填写hadoop集群中namenode的信息,因为之前namenode在机器node01中配置(目前仅hadoop1.X中支持一个namenode),使用了默认端口是9000(在集群启动后的web界面中可以看到)。
然后再eclipse中已经与hadoop集群中的hdfs建立了连接,就可以看到
然后也可以在hdfs中常见文件及上传文件
(6)eclipse中做hadoop开发所用包的user library。依次打开菜单Window》Preference》Java》Build path>User Library,然后点击new,选择最开新建的文件夹hadoop-lib。然后OK完成。
二、API使用前准备工作
(1)eclipse中新建Java项目,然后右键项目如下图
然后finish。此时项目中会出现所引用的jar包,同时也可以再添加一个单元测试JUnit 4
(2)hadoop配置文件,接下来需要写的是hdfs的客户端,但是如何将客户端和hadoop server之间进行连接,就需要使用到之前搭建hadoop集群时配置的文件,当然也可以在编程时写,但是这样过于麻烦。
- 首先在刚才创建的项目中新建文件夹conf,在conf中新建full文件夹用于放置配置文件。
- 接下来进入集群中的hadoop的配置目录,将etc/hadoop/目录下的core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml文件下载到Windows系统中,然后放置在刚才创建的conf/full目录中。
- 因为接下来编写的为一个Java类,需要编译此时需要用到配置文件,要么说明在什么目录中,要么程序会在根目录中自动查找,因此需要在full文件夹上右键,Build Path》Use as Source Folder,此时在编译时那两个配置文件就会出现在项目的根目录下。
至此,在Windows系统中配置hadoop的开发环境,和一些准备工作已完成,接下来就可以使用API进行相应的业务处理了。