OS X Yosemite下安装Hadoop2.5.1伪分布式环境
最近开始学习Hadoop,一直使用的是公司配好的环境。用了一段时间后发现对Hadoop还是一知半解,故决定动手在本机上安装一个供学习研究使用。正好自己用的是mac,所以没啥说的,直接安装。
总体流程
1.安装jdk并配置好环境变量。因为Hadoop是使用java开发的,所以JDK是必须的。
2.实现ssh无密码验证配置 可以用ssh无需登陆连接到localhost。Hadoop并不要求一定要ssh无密码登录,主要是考虑到集群环境中机器数目多,一个一个输入密码浪费时间而且麻烦,不方便管理。
3.安装与配置Hadoop
4.格式化与启动
5.验证是否启动
环境
由于mac 10.10系统中已去掉JDK,所以需要手动安装。官网下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html。我下在的是JDK最新版,安装过程就不多说了,双击运行jdk-8u25-macosx-x64.dmg就可以。安装完后,在终端中输入java -version,显示版本即安装成功。下面是配置环境变量。在终端中输入/usr/libexec/java_home会出现JDK所在的真实路径。Mac 10.5后,Apple建议设置JAVA_HOME使用/usr/libexec/java_home。然后export$JAVA_HOME
in file ~/. bash_profile
or ~/.profile。由于我用的是zsh,所以vi打开~/.zshrc,输入图片所示。保存并退出。在终端中执行source .zshrc。环境变量即生效。
SSH无密码验证配置
Hadoop 需要使用SSH 协议,namenode 使用SSH 协议启动 namenode 和datanode 进程,伪分布式模式数据节点和名称节点均是本身,为了操作方便,需要配置 SSH localhost无密码验证。由于mac自带了ssh,所以直接进行设置。
1. 执行命令:ssh localhost
会有错误提示信息,表示当前用户没有权限。这是系统为安全考虑,默认设置的。更改设置如下:进入system preference --> sharing --> 勾选remote login,并设置allow access for all users。再次输入“ssh localhost",再输入密码并确认之后,可以看到ssh成功。中文版如下图:系统偏好设置->共享->远程登录
不过这里面还有一个麻烦,就是每次都会要求输入用户密码,那么就实现免登陆的配置
2.执行命令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
3.执行命令:cat .ssh/id_rsa.pub >>.ssh/authorized_keys
4.再执行命令:ssh localhost
出现次登录信息则表示免登陆配置成功。
配置
下面开始正式搭建。
Hadoop三种运行模式:
1. 单机模式(standalone):单机模式是Hadoop的默认模式。当配置文件为空时,Hadoop完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。
2. 伪分布模式(Pseudo-Distributed Mode):Hadoop守护进程运行在本地机器上,模拟一个小规模的的集群。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。
3. 全分布模式(Fully Distributed Mode):Hadoop守护进程运行在一个集群上。
Hadoop并没有特别区分伪分布式和集群环境,伪分布式可以理解为只有一个节点的集群环境,方便学习和使用。
安装Hadoop2.5.1
官网下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/
下载到本机后解压到你工作空间中即可。
配置Hadoop环境变量
打开终端,输入vi .zshrc。输入图片所示,保存退出后。执行source .zshrc。
在使用Hadoop之前,还需要对一些配置文件进行修改,Hadoop 2.5.1的配置文件都保存在$HADOOP_HOME/etc/hadoop
文件夹下。以下直接列出几个配置文件的修改方法。
hadoop-env.sh,主要是设置JAVA_HOME,由于我们之前已设置过JAVA_HOME,所以在这里可以不用修改。
至此,hadoop的单机环境就算安装完了。
伪分布式环境搭建
这里需要设定4个文件:core-site.xml,hdfs-site.xml,mapred-site.xml和yarn-site.xml.都在/opt/hadoop-2.5.1/etc/hadoop/目录下
core-site.xml:Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等。
hdfs-site.xml:Hadoop 守护进程的配置项,包括namenode,辅助namenode和datanode等。
mapred-site.xml:MapReduce 守护进程的配置项,包括jobtracker和tasktracker。
yarn-site.xml: Yarn 框架用于执行MapReduce 处理程序
core-site.xml
hdfs-site.xml
mapred-site.xml
请注意这里安装的2.5.1版本,2.*版本较1.*版本改动很大,主要是用Hadoop MapReduceV2(Yarn) 框架代替了一代的架构,其中JobTracker 和 TaskTracker 不见了,取而代之的是 ResourceManager, ApplicationMaster 与 NodeManager 三个部分,而具体的配置文件位置与内容也都有了相应变化。所以我们在mapred-site.xml中设置了处理map-reduce的框架Yarn,接下来就需要在yarn-site.xml中配置ResourceManager, ApplicationMaster 与 NodeManager。
yar-site.xml
格式化HDFS
通过以上步骤,我们已经设定好Hadoop伪分布式环境,接着就是启动Hadoop的相关服务,格式化namenode,secondarynamenode,tasktracker:
hadoop namenode -format
如上图所示,代表格式化成功。
启动Hadoop
接着执行start-all.sh来启动所有服务,包括namenode,datanode,start-all.sh脚本用来装载守护进程。
./start-all.sh #2.5.1版推荐使用start-dfs.sh和start-yarn.sh来启动
用Java的jps命令列出所有守护进程来验证安装成功
检查运行状态
此时,Hadoop已经启动,用浏览器打开localhost:50070和localhost:8088,可以分别看到HDFS和YARN的管理页面。
http://localhost:50070 #HDFS管理页面
http://localhost:8088 #YARN管理页面
停止Hadoop服务
stop-all.sh
待解决问题:
查阅有关官方介绍 http://wiki.apache.org/hadoop/HowToContribute 中有说明:Hadoop本地库只支持*nix平台,已经广泛使用在GNU/Linux平台上,但是不支持 Cygwin 和 Mac OS X 。需要本地编译,由于时间原因一直没弄好,稍后更新!