標籤:
整個安裝過程分為四部分:
一. 安裝Homebrew
二. ssh localhost
三. 安裝Hadoop已經進行設定檔設定 (偽分布式)
四. 執行栗子
一. 安裝Homebrew
採用Homebrew安裝Hadoop很簡潔方便,之前在Windows上Cygwin上安裝過Hadoop,感覺好麻煩。
關於Homebrew能夠查看其官網 http://brew.sh/ 也能夠查看Homebrew 新一代OS X套件管理工具 一文。
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然後將上面一行命令拷貝到終端運行就安裝完畢了。
二. ssh localhost
由於安裝hadoop須要遠程登入的功能,所以須要安裝ssh工具。 Mac OS X僅僅需在“系統喜好設定”的“共用”的“遠程登入”勾選就能夠使用ssh了。
ssh的很多其它能夠查看 SSH原理與應用 一文。
假設沒有產生過ssh公開金鑰,就使用命令: (查看 ~/.ssh/id_dsa 和~/.ssh/id_dsa.pub存不存在就知道之前有沒有產生過公開金鑰,或者直接運行ssh localhost看是否能成功)
$ ssh-keygen -t rsa -P ""$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
後面的命令是為了將自己的公開金鑰存到對方的公開金鑰儲存目錄中, 這是為了避免每次運行ssh localhost進行遠程登入的時候都要輸入password。
三. 安裝hadoop 由於就在自己的一台電腦,所以就採用偽分布式模式。
<span style="font-size:18px;">$ brew install hadoop</span>
hadoop 就成功安裝了,當然這樣安裝的最新穩定版, 我安裝時最新為2.6。 hadoop將按預定的路徑安裝。
以下就是設定檔的改動了:
hadoop-env.sh
檔案在/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hadoop-env.sh
將
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="
編輯 Core-site.xml
/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>
註: fs.default.name 儲存了NameNode的位置,HDFS和MapReduce組件都須要用到它,這就是它出如今core-site.xml 檔案裡而不是 hdfs-site.xml檔案裡的原因
編輯 mapred-site.xml 可能檔案名稱為 mapred-site.xml.templete , 改不改名字都能夠。
/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.job.tracker 儲存了JobTracker的位置,由於僅僅有MapReduce組件須要知道這個位置,所以它出如今mapred-site.xml檔案裡。
編輯 hdfs-site.xml
/usr/local/Cellar/hadoop/2.6.0/libexec/etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
變數dfs.replication指定了每一個HDFS資料庫的複製次數。 通常為3, 因為我們僅僅有一台主機和一個偽分布式模式的DataNode,將此值改動為1。
至此,設定檔編輯完成。
接下來是進到 hadoop 的安裝資料夾 /usr/local/Cellar/hadoop/2.6.0/sbin
然後運行 ./start-dfs.sh 和 ./start-yarn.sh 就能夠啟動 Hadoop了。 只是這裡會出現一個 警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 這對Hadoop的執行沒有影響,關於這個警告後面再講。
為了啟動Hadoop的時候避免每次都首先進到安裝資料夾,然後再運行./start-dfs.sh 和 ./start-yarn.sh這麼麻煩,所以在編輯 ~/.profiles檔案,加上例如以下兩行:
alias hstart="/usr/local/Cellar/hadoop/2.6.0/sbin/start-dfs.sh;/usr/local/Cellar/hadoop/2.6.0/sbin/start-yarn.sh"alias hstop="/usr/local/Cellar/hadoop/2.6.0/sbin/stop-yarn.sh;/usr/local/Cellar/hadoop/2.6.0/sbin/stop-dfs.sh"
然後運行 $ source ~/.profile 更新。 這樣能夠就能夠用 hstart 和 hstop 這兩個簡單明了啟動Hadoop了。
只是在啟動hadoop之前要先格式化 hdfs
$ hadoop namenode -format
這時就能夠用hstart啟動hadoop了。 能夠使用 jps 命令驗證 Hadoop是否在執行。
四. 執行栗子
安裝完了之後肯定想看看能不能使用,hadoop內建了一個範例。$ hadoop jar <path to the hadoop-examples file> pi 10 100
$ hadoop jar /usr/local/Cellar/hadoop/2.3.0/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar pi 2 5
得到的結果可能是這種:
Wrote input for Map #0Wrote input for Map #1Starting Job...Job Finished in 1.685 secondsEstimated value of Pi is 3.60000000000000000000
然後能夠通過Web端進行監控。
Resource Manager: http://localhost:50070JobTracker: http://localhost:8088Specific Node Information: http://localhost:8042
通過他們能夠訪問 HDFS filesystem, 也能夠取得結果輸出檔案.
註: 前文提到的 警告 是關於 Hadoop 本地庫的, Hadoop本地庫是為了提高效率或者某些不能用Java實現的功能組件庫。眼下僅僅支援 *unix, 在Mac OS X和Cygwin上沒有支援的。native hadoop library
只是我看到一篇文章說也能夠在Mac OS X支援本地庫,其解決方案是 Mac OSX 下 Hadoop 使用本地庫提高效率
Mac OS X Yosemite安裝Hadoop 2.6記錄