在這個陰雨綿綿的下午,沒有睡午覺的我帶着一雙惺忪的眼睛坐在了電腦前,泡上清茶,摸摸已是略顯油光的額頭(笑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/