在Mac下安装Hadoop的坑
Hadoop介绍
Hadoop是Apache基金会下的项目,它能够处理非常大的数据集在分布式计算环境,它可以运行在三种模式下:
- 独立式
Hadoop运行所有的东西在无后台的单独的JVM中,这种模式适合在开发阶段测试与Debug MapReduce程序
- 伪分布式
Hadoop做为后台应用运行在本地机器,模拟小集群 - 全分布式
Hadoop做为后台应用运行真实的集群电脑中
Hadoop 安装步骤
关于mac上安装Hadoop伪分布式可以参考Mac OS X Yosemite安装Hadoop 2.6记录和如何在MacOSX上安装Hadoop(how to install hadoop on mac os x)。在这些文章中基本的配置及其安装方法都已经写的比较清楚了,但是我在按照步骤安装时仍然遇到了不少的坑,下面来做一些介绍。
软件环境介绍
软件环境:
* OS X Yosemite 10.10.5
* Java 1.6.0
使用brew
命令安装的是Hadoop的最新版本,需要的java最低版本是1.7.0,所以第一个坑在于java的升级。
1、Java在mac下升级
mac下java的安装有两种方式。
- 下载java更新包在本地安装
- 通过brew cask来安装
1、使用安装包安装
mac中自带的java版本号为1.6.0,link的路径为/usr/bin
,系统默认java安装路径为:
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
使用dmg包安装后java的路径为:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
这两个包并不冲突,在这种情况下Terminal中的java命令还是系统默认的,需要对新安装的做软链。参考:MAC OSX安装多个版本的JAVA(jdk jre通用)。
安装Java
2、使用brew cask 安装
$ brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup$ brew cask install java
$ brew cask install java
正常情况下执行着两个命令会安装成功,但是brew update
会出现问题。会出现The following untracked working tree files would be overwritten by merge
错误,这时使用:
$ cd /usr/local
$ git fetch origin
$ git reset --hard origin/master
如果你没有在管理员或sudo模式下,你也可以在第一个命令中chown
$ sudo chown -R whoami /usr/local
$ cd /usr/local
$ git reset --hard origin/master
3、测试是否安装成功
$ java -version
如果版本信息返回的是java version "1.8.0_74"
式的安装信息表明安装成功。
2、ssh connection refuserd
生成ssh后,使用ssh localhost
来测试ssh
是否成功。给出提醒如下:
ssh: connect to host localhost port 22: Connection refused
这是因为mac电脑的共享配置未打开,在System preferences ->Sharing
中打开如下配置:
此时在此使用
ssh localhost
命令来测试返回Last login: Mon Mar 21 09:58:12 2016
,表明已经成功。
3、启动Hadoop
从/usr/local/Cellar/hadoop/2.7.1/sbin
路径进入Hadoop的目录执行启动脚本:
./start-dfs.sh //启动HDFS
./stop-dfs.sh //停止HDFS
log如下:
Starting namenodes on [localhost]
localhost: starting namenode, logging to /usr/local/Cellar/hadoop/2.7.1/libexec/logs/hadoop-tony-namenode-tonys-MacBook-Pro-2.local.out
localhost: starting datanode, logging to /usr/local/Cellar/hadoop/2.7.1/libexec/logs/hadoop-tony-datanode-tonys-MacBook-Pro-2.local.out
Starting secondary namenodes [0.0.0.0]
在log中会显示警告WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
d的提醒,是关于 Hadoop 本地库的, Hadoop本地库是为了提高效率或者某些不能用Java实现的功能组件库。可以参考Mac OSX 下 Hadoop 使用本地库提高效率来做处理。
此时在浏览器中打开Resource Manager: http://localhost:50070
可以看到如下页面
执行如下启动脚本脚本:
./start-yarn.sh //启动yarn,一个MapReduce框架
./stop-yarn.sh //停止yarn
此时在浏览器中打开JobTracker: http://localhost:8088
、Specific Node Information: http://localhost:8042
可以分别看到如下界面: