OS X下搭建虚拟Hadoop 2.5开发环境
在此记录OS X下搭建虚拟Hadoop 2.5开发环境,这包括了:
- Hadoop 2.5的安装、配置
- 访问Hadoop文件系统和运行样例
- Intellij IDEA中创建Hadoop依赖的项目
注意,OS X并不被Hadoop官方支持,因此仅可作为开发环境。
0. 基本配置
- OS X Yosemite 10.10.1
- JDK 1.7
- Hadoop 2.5.1 (from Homebrew)
- Intellij IDEA 13 CE
1. 安装和配置
从Homebrew安装Hadoop
brew install hadoop
Homebrew包默认安装至
/usr/local/Cellar/hadoop
目录中, 本文中安装的版本为Hadoop 2.5.2。Hadoop从2.3版本开始引入Yarn核心,配置方式与此前版本不同。
进入配置文件目录
cd /usr/local/Cellar/hadoop/2.5.2/libexec/etc/hadoop
修改
core-site.xml
在
<configuration>
节点内添加以下配置。<property> <name>hadoop.tmp.dir</name> <value>/Users/you_username/hadoop/tmp/hadoop-${user.name}</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
hadoop.tmp.dir
: HDFS文件系统的存放位置,需要指定一个已 存在并有读写权限的文件夹。不过路径最后 一项是Hadoop自己创建的。fs.defaultFS
: HDFS位置,写本机地址,9000是默认端口,可 省略。
修改
hdfs-site.xml
<property> <name>dfs.repliacation</name> <value>1</value> </property>
dfs.repliacation
: 文件副本数量,设为集群机器数。虚拟环境 中设为1.
修改
yarn-site.xml
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
抄的,我也不知道具体有什么用。
复制
mapred-site.xml.template
,命名mapred-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
mapreduce.framework.name
: 设置Map-Reduce框架,此处选Yarn。
2. 运行后台服务
在运行之前,确保前面设置的Hadoop文件系统对应的目录已经准备好, 并且目录是空的。然后初始化HDFS文件系统:
hdfs namenode -format
开启后台服务:
start-dfs.sh
start-yarn.sh
关闭后台服务:
stop-yarn.sh
stop-dfs.sh
后台服务启动后,可以通过http://localhost:50070
监视运行状态。
同时,在命令行中可以用jps
查看Hadoop服务启动是否正确。
例如,jps
命令中不存在DataNode
,则可能是执行
hdfs namenode -foramt
之前没有清空设定的目录。
3. 访问HDFS
常用命令:
hadoop fs -ls [<path>]
hadoop fs -mkdir <path>
hadoop fs -mv <path>
hadoop fs -rm <path>
hadoop fs -put <local-path> <hdfs-path>
hadoop fs -get <hdfs-path> <local-path>
hadoop fs -help
简单的浏览可以直接通过浏览器:
http://localhost:50070
4. 运行测试样例
假定后台服务已启动,而且已经在Hadoop的安装目录中,可以执行PI测试:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar pi 20 10
如果执行成功,最后会显示一个极其粗糙的PI值。
5. Intellij IDEA中配置依赖
创建普通Java项目
添加引用
File
–Project Structure...
–Modules
–Dependencies
–+
–Library...
–Java
选择
/usr/local/Cellar/hadoop/2.5.2/libexec/share/hadoop
目录下除了httpfs
外的全部文件夹。Name
可以随便写,例如”common”,OK。+
–Jars or directories...
选择
/usr/local/Cellar/hadoop/2.5.2/libexec/share/hadoop/common/lib
此时
Dependencies
内应该总共增加了一个”common”和一个”lib”目录。修改
Project Structure
中的Artifacts
,增加Jar包的生成配置。
可以写代码编译打包了。