安装单机Hadoop系统(完整版)——Mac
在这个阴雨绵绵的下午,没有睡午觉的我带着一双惺忪的眼睛坐在了电脑前,泡上清茶,摸摸已是略显油光的额头(笑cry),,奋斗啊啊啊啊!!%>_<%
1.课程回顾。
1.1 Hadoop系统运行的软件系统:Linux操作系统(小红帽或Ubuntu)、SSH(Secure Shell主要用于远程管理Hadoop节点以及Hadoop节点间的安全共享访问)、Java
这里主要多说一点SSH,它是一种网络协议,用于计算机之间的加密登陆,如一个用户从本地计算机通过SSH协议登录一台远程计算机。详情请见[1]。
1.2 Hadoop系统的安装方式:单一方式(在一台装有Linux系统的单机上安装运行Hadoop系统),单机伪分布式方式(在一台装有Linux的单机上,用伪分布式方式,用不同的Java进程模拟分布式运行中的NameNode、DateNode、JobTracker等各类节点),集群分布模式(在一个真实的集群环境下安装运行Hadoop系统,集群的每个节点可以运行Linux)
2.安装Hadoop
下面步入正题,直播我安装Hadoop的全过程。。。
参考大神们的博客[2],说MAC安装Hadoop需要如下几个步骤:
1)安装Homebrew
2) SSH localhost
3)安装Hadoop
2.1 安装Homebrew[3]
这里之所以安装Homebrew是因为Mac用Homebrew安装软件真真是简洁优雅,只需一条命令行代码。
1)安装Homebrew
打开终端(快捷键control+space 或者 直接在电脑右上角点击放大镜输入Terminal),复制粘贴如下语句或从官网找到最新版的Homebrew命令行:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
过程中会要求输入密码等,按照提示照做即可。
2)安装Homebrew-cask
打开终端,复制粘贴如下命令行:
brew tap phinze/homebrew-cask
brew install brew-cask
以下是我的显示结果,仅供参考(最后光标显示为原来的样子,表示安装成功):
那么,如何用Homebrew-cask安装及卸载软件呢,借用大神的一张图片[3],列的灰常清晰:
下面列出一些常用的cask命令:
brew cask search 列出所有可以被安装的软件
brew cask search drop 查找所有和 drop 相关的应用
brew cask info thunder 查看 迅雷 应用的信息,这货安装的可是最新版本的迅雷哦!
brew cask uninstall qq 卸载 QQ
更新软件:
brew cask uninstall qq && brew cask install qq #因为cask每次安装都是安装最新的版本
至此,Homebrew-cask安装及废话部分结束,开启下一步SSK的设置。
2.2 配置SSH localhost
- 打开系统偏好设置-共享-远程登录(默认情况下关闭,将“远程登录打开即可”);
- 生成密钥对,执行如下命令
$ ssh-keygen -t rsa
- 执行如下命令,将在当前用户目录中的.ssh文件夹中生成id_rsa文件并且以后可以不使用密码登录:
-
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 使用下面命令,测试是否可以不适用密码登录:
-
$ ssh localhost
2.3 安装Hadoop
(*^__^*) 嘻嘻……这里就用到了之前安装的Homebrew-cask啦,这里仅仅输入一条命令行即可完成Hadoop的安装,是不是炒鸡easy嘞~当然,如果不安装Homebrew的话,直接用平常在Mac上安装其他软件的方法安装Hadoop也是可以的啦,就是从其官网上下载最新版本的Hadoop,然后安装即可。
这里采用Homebrew-cask的方式,命令行如下:
$ brew install hadoop
如果提示说未安装Java的话,说明你没有安装jdk,则按照它的命令提示,安装Java,然后再安装Hadoop。
安装完Hadoop后,需要配置一下才能成功安装[4]。(又是一项浩大的工程啊,路途中出现各种小问题,下面一一道来)
- 在目录
/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop
下找到hadoop-env.sh
文件中找到其中一行:(有木有盆友不造怎么进入目录啊。。就是打开Finder,然后找最上面工具栏有一个“前往”-->“前往文件夹”-->将路径复制进去即可) -
export HADOOP_OPTS="$HADOOP_OPTS Djava.net.preferIPv4Stack=true"
将其替换为:
-
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
- 在目录
/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop
下找到core-site.xml,插入如下代码:
-
<configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/Cellar/hadoop/hdfs/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
- 在目录
/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop
下找到mapred-site.xml, 在其中添加: -
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9010</value> </property> </configuration>
这里!!就是这里,我居然没有找到mapred-site.xml这个文件,只有一个mapred-site-template.xml文件,然后打不开,最后没办法只好从朋友那里copy了一个这样的文件,具体如下:(当然有该文件的朋友直接按照上面的修改就行了)
-
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9010</value> </property> </configuration>
- 在目录
/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop
下找到hdfs-site.xml
-
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
- 在运行后台程序前, 必须格式化新安装的HDFS, 并通过创建存储目录和初始化元数据创新空的文件系统, 执行下面命令:
-
$ hdfs namenode -format #生成类似下面的字符串: ... #此书省略大部分 STARTUP_MSG: java = 1.6.0_65 ************************************************************ /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at Andrew-liudeMacBook-Pro.local/192.168.1.100 ************************************************************/
- 启动后台程序:在
/usr/local/Cellar/hadoop/2.6.0/sbin
目录下, 执行如下命令 -
$ start-dfs.sh #启动HDFS $ stop-dfs.sh #停止HDFS,当然不是现在停止啦
(PS:自我反省一下,我是小白我是小白我是小白%>_<% 这里列出几个常用的供自己及同样的小白补脑%>_<%%>_<%)
-
# shell命令有好多种,目前系统默认的应该是bash,但是大神们一致推荐崇尚的时zsh,那么怎么在两者之间切换呢? cat /etc/shells #将会显示所有的shell命令,目前小白我用过的只有bash跟zsh...然后根据显示输入命令即可转换shell ls #显示当前目录下所有子目录 ls -i #显示当前目录下所拥有的子目录的访问权限 cd Desktop/ #切换至当前目录下的Desktop cd ./path #切换到当前目录下得path目录 cd ../path #切换到上层目录的path目录 cd / #切换到根目录 # 一般情况下,ls与cd是交叉使用的,进入一个cd就用ls查看一下,然后才能进入下面一层子目录嘛
这里我又遇到了一个超级严重的问题,无usr访问权限,反正自己谷歌了好久,具体步骤也有些混乱了,大概就是更改权限,这里只是说一下如何修改一个文件夹的访问权限,以后以不变应万变即可。右击想要更改权限的文件夹--》显示简介——》点击右下角的那个小锁——》输入密码——》更改权限——》改完后别忘记上锁。这样就OK啦。
哦,对还有一个问题,就是我输入 $start-dfs.sh后提示说命令无效,若出现这种情况,可将上述命令更改为
-
./ start-dfa.sh
显示如下式样说明启动成功~
最后,在浏览器中输入 http://localhost:50070便可访问Hadoop页面。
从下午三点钟折腾到现在,边记录,边安装,边查阅才把它安装完毕,光说不练嘴把式,动手动脑动起来~。
参考文献:
[1]. SSH原理与应用(一):远程登录——http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
[2]. Mac OS X Yosemite安装Hadoop 2.6记录——http://blog.csdn.net/yechaodechuntian/article/details/44312343
[3]. 简洁优雅的Mac OS X软件安装体验-homebrew-cask——http://ksmx.me/homebrew-cask-cli-workflow-to-install-mac-applications/
[4].在Mac OSX Yosemite上安装Hadoop——http://andrewliu.tk/2015/03/05/%E5%9C%A8Mac-OSX-Yosemite%E4%B8%8A%E5%AE%89%E8%A3%85Hadoop/