1. 程式人生 > >hadoop 安裝配置筆記

hadoop 安裝配置筆記

當開始著手實踐 Hadoop 時,安裝 Hadoop 往往會成為新手的一道門檻。儘管安裝其實很簡單,書上有寫到,官方網站也有 Hadoop 安裝配置教程,但由於對 Linux 環境不熟悉,書上跟官網上簡略的安裝步驟新手往往 Hold 不住。加上網上不少教程也甚是坑,導致新手摺騰老幾天愣是沒裝好,很是打擊學習熱情。

本教程適合於原生 Hadoop 2,包括 Hadoop 2.6.0, Hadoop 2.7.1 等版本,主要參考了官方安裝教程,步驟詳細,輔以適當說明,相信按照步驟來,都能順利安裝並執行Hadoop。另外有Hadoop安裝配置簡略版方便有基礎的讀者快速完成安裝。此外,希望讀者們能多去了解一些 Linux 的知識,以後出現問題時才能自行解決。本教程由

給力星出品,轉載請註明。

環境

本教程使用 Ubuntu 14.04 64位 作為系統環境(Ubuntu 12.04 也行,32位、64位均可),請自行安裝系統(可參考使用VirtualBox安裝Ubuntu)。

本教程基於原生 Hadoop 2,在 Hadoop 2.6.0 (stable) 版本下驗證通過,可適合任何 Hadoop 2.x.y 版本,例如 Hadoop 2.4.1。

Hadoop版本

Hadoop 有兩個主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比較老的教材上用的可能是 0.20 這樣的版本。Hadoop 2.x 版本在不斷更新,本教程均可適用。如果需安裝 0.20,1.2.1這樣的版本,本教程也可以作為參考,主要差別在於配置項,配置請參考官網教程或其他教程。

新版是相容舊版的,書上舊版本的程式碼應該能夠正常執行(我自己沒驗證,歡迎驗證反饋)。

裝好了 Ubuntu 系統之後,在安裝 Hadoop 前還需要做一些必備工作。

建立hadoop使用者

如果你安裝 Ubuntu 的時候不是用的 “hadoop” 使用者,那麼需要增加一個名為 hadoop 的使用者。

首先按 ctrl+alt+t 開啟終端視窗,輸入如下命令建立新使用者 :

  1. sudo useradd -m hadoop -s /bin/bash
Shell 命令

這條命令建立了可以登陸的 hadoop 使用者,並使用 /bin/bash 作為 shell。

Ubuntu終端複製貼上快捷鍵

在Ubuntu終端視窗中,複製貼上的快捷鍵需要加上 shift,即貼上是 ctrl+shift+v。

接著使用如下命令設定密碼,可簡單設定為 hadoop,按提示輸入兩次密碼:

  1. sudo passwd hadoop
Shell 命令

可為 hadoop 使用者增加管理員許可權,方便部署,避免一些對新手來說比較棘手的許可權問題:

  1. sudo adduser hadoop sudo
Shell 命令

最後登出當前使用者(點選螢幕右上角的齒輪,選擇登出),在登陸介面使用剛建立的 hadoop 使用者進行登陸。

更新apt

用 hadoop 使用者登入後,我們先更新一下 apt,後續我們使用 apt 安裝軟體,如果沒更新可能有一些軟體安裝不了。按 ctrl+alt+t 開啟終端視窗,執行如下命令:

  1. sudo apt-get update
Shell 命令

若出現如下 “Hash校驗和不符” 的提示,可通過更改軟體源來解決。若沒有該問題,則不需要更改。

Ubuntu更新軟體源時遇到Hash校驗和不符的問題Ubuntu更新軟體源時遇到Hash校驗和不符的問題

後續需要更改一些配置檔案,我比較喜歡用的是 vim(vi增強版,基本用法相同),建議安裝一下(如果你實在還不會用 vi/vim 的,請將後面用到 vim 的地方改為 gedit,這樣可以使用文字編輯器進行修改,並且每次檔案更改完成後請關閉整個 gedit 程式,否則會佔用終端):

  1. sudo apt-get install vim
Shell 命令

安裝軟體時若需要確認,在提示處輸入 y 即可。

通過命令列安裝軟體通過命令列安裝軟體

安裝SSH、配置SSH無密碼登陸

叢集、單節點模式都需要用到 SSH 登陸(類似於遠端登陸,你可以登入某臺 Linux 主機,並且在上面執行命令),Ubuntu 預設已安裝了 SSH client,此外還需要安裝 SSH server:

  1. sudo apt-get install openssh-server
Shell 命令

安裝後,可以使用如下命令登陸本機:

  1. ssh localhost
Shell 命令

此時會有如下提示(SSH首次登陸提示),輸入 yes 。然後按提示輸入密碼 hadoop,這樣就登陸到本機了。

SSH首次登陸提示SSH首次登陸提示

但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。

首先退出剛才的 ssh,就回到了我們原先的終端視窗,然後利用 ssh-keygen 生成金鑰,並將金鑰加入到授權中:

  1. exit # 退出剛才的 ssh localhost
  2. cd ~/.ssh/ # 若沒有該目錄,請先執行一次ssh localhost
  3. ssh-keygen -t rsa # 會有提示,都按回車就可以
  4. cat ./id_rsa.pub >> ./authorized_keys # 加入授權
Shell 命令 ~的含義

在 Linux 系統中,~ 代表的是使用者的主資料夾,即 “/home/使用者名稱” 這個目錄,如你的使用者名稱為 hadoop,則 ~ 就代表 “/home/hadoop/”。 此外,命令中的 # 後面的文字是註釋。

此時再用 ssh localhost 命令,無需輸入密碼就可以直接登陸了,如下圖所示。

SSH無密碼登入SSH無密碼登入

安裝Java環境

Java環境可選擇 Oracle 的 JDK,或是 OpenJDK,按http://wiki.apache.org/hadoop/HadoopJavaVersions中說的,新版本在 OpenJDK 1.7 下是沒問題的。為圖方便,這邊直接通過命令安裝 OpenJDK 7。

  1. sudo apt-get install openjdk-7-jre openjdk-7-jdk
Shell 命令 JRE和JDK的區別

JRE(Java Runtime Environment,Java執行環境),是執行 Java 所需的環境。JDK(Java Development Kit,Java軟體開發工具包)即包括 JRE,還包括開發 Java 程式所需的工具和類庫。

安裝好 OpenJDK 後,需要找到相應的安裝路徑,這個路徑是用於配置 JAVA_HOME 環境變數的。執行如下命令:

  1. dpkg -L openjdk-7-jdk | grep '/bin/javac'
Shell 命令

該命令會輸出一個路徑,除去路徑末尾的 “/bin/javac”,剩下的就是正確的路徑了。如輸出路徑為 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,則我們需要的路徑為 /usr/lib/jvm/java-7-openjdk-amd64。

接著配置 JAVA_HOME 環境變數,為方便,我們在 ~/.bashrc 中進行設定(擴充套件閱讀: 設定Linux環境變數的方法和區別):

  1. vim ~/.bashrc
Shell 命令

在檔案最前面新增如下單獨一行(注意 = 號前後不能有空格),將“JDK安裝路徑”改為上述命令得到的路徑,並儲存:

  1. export JAVA_HOME=JDK安裝路徑
Shell

如下圖所示(該檔案原本可能不存在,內容為空,這不影響):

配置JAVA_HOME變數配置JAVA_HOME變數

接著還需要讓該環境變數生效,執行如下程式碼:

  1. source ~/.bashrc # 使變數設定生效
Shell 命令

設定好後我們來檢驗一下是否設定正確:

  1. echo $JAVA_HOME # 檢驗變數值
  2. java -version
  3. $JAVA_HOME/bin/java -version # 與直接執行 java -version 一樣
Shell 命令

如果設定正確的話,$JAVA_HOME/bin/java -version 會輸出 java 的版本資訊,且和 java -version 的輸出結果一樣,如下圖所示:

成功配置JAVA_HOME變數成功配置JAVA_HOME變數

這樣,Hadoop 所需的 Java 執行環境就安裝好了。

安裝 Hadoop 2

下載時強烈建議也下載 hadoop-2.x.y.tar.gz.mds 這個檔案,該檔案包含了檢驗值可用於檢查 hadoop-2.x.y.tar.gz 的完整性,否則若檔案發生了損壞或下載不完整,Hadoop 將無法正常執行。

本文涉及的檔案均通過瀏覽器下載,預設儲存在 “下載” 目錄中(若不是請自行更改 tar 命令的相應目錄)。另外,本教程選擇的是 2.6.0 版本,如果你用的不是 2.6.0 版本,則將所有命令中出現的 2.6.0 更改為你所使用的版本。

  1. cat ~/下載/hadoop-2.6.0.tar.gz.mds | grep 'MD5'# 列出md5檢驗值
  2. # head -n 6 ~/下載/hadoop-2.7.1.tar.gz.mds # 2.7.1版本格式變了,可以用這種方式輸出
  3. md5sum ~/下載/hadoop-2.6.0.tar.gz | tr "a-z""A-Z"# 計算md5值,並轉化為大寫,方便比較
Shell 命令

若檔案不完整則這兩個值一般差別很大,可以簡單對比下前幾個字元跟後幾個字元是否相等即可,如下圖所示,如果兩個值不一樣,請務必重新下載。

檢驗檔案完整性檢驗檔案完整性

我們選擇將 Hadoop 安裝至 /usr/local/ 中:

  1. sudo tar -zxf ~/下載/hadoop-2.6.0.tar.gz -C /usr/local # 解壓到/usr/local中
  2. cd /usr/local/
  3. sudo mv ./hadoop-2.6.0/ ./hadoop # 將資料夾名改為hadoop
  4. sudo chown -R hadoop ./hadoop # 修改檔案許可權
Shell 命令

Hadoop 解壓後即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本資訊:

  1. cd /usr/local/hadoop
  2. ./bin/hadoop version
Shell 命令 相對路徑與絕對路徑的區別

請務必注意命令中的相對路徑與絕對路徑,本文後續出現的 ./bin/..../etc/... 等包含 ./ 的路徑,均為相對路徑,以 /usr/local/hadoop 為當前目錄。例如在 /usr/local/hadoop 目錄中執行./bin/hadoop version 等同於執行/usr/local/hadoop/bin/hadoop version。可以將相對路徑改成絕對路徑來執行,但如果你是在主資料夾 ~ 中執行./bin/hadoop version,執行的會是/home/hadoop/bin/hadoop version,就不是我們所想要的了。

Hadoop單機配置(非分散式)

Hadoop 預設模式為非分散式模式,無需進行其他配置即可執行。非分散式即單 Java 程序,方便進行除錯。

現在我們可以執行例子來感受下 Hadoop 的執行。Hadoop 附帶了豐富的例子(執行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。

在此我們選擇執行 grep 例子,我們將 input 資料夾中的所有檔案作為輸入,篩選當中符合正則表示式 dfs[a-z.]+ 的單詞並統計出現的次數,最後輸出結果到 output 資料夾中。

  1. cd /usr/local/hadoop
  2. mkdir ./input
  3. cp ./etc/hadoop/*.xml ./input # 將配置檔案作為輸入檔案
  4. ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
  5. cat ./output/* # 檢視執行結果
Shell 命令

執行成功後如下所示,輸出了作業的相關資訊,輸出的結果是符合正則的單詞 dfsadmin 出現了1次

Hadoop單機模式執行grep的輸出結果Hadoop單機模式執行grep的輸出結果

注意,Hadoop 預設不會覆蓋結果檔案,因此再次執行上面例項會提示出錯,需要先將 ./output 刪除。

  1. rm -r ./output
Shell 命令

Hadoop偽分散式配置

Hadoop 可以在單節點上以偽分散式的方式執行,Hadoop 程序以分離的 Java 程序來執行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的檔案。

Hadoop 的配置檔案位於 /usr/local/hadoop/etc/hadoop/ 中,偽分散式需要修改2個配置檔案 core-site.xmlhdfs-site.xml 。Hadoop的配置檔案是 xml 格式,每個配置以宣告 property 的 name 和 value 的方式來實現。

修改配置檔案 core-site.xml (通過 gedit 編輯會比較方便: gedit ./etc/hadoop/core-site.xml),將當中的

  1. <configuration>
  2. </configuration>
XML

修改為下面配置:

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>file:/usr/local/hadoop/tmp</value>
  5. <description>Abase for other temporary directories.</description>
  6. </property>
  7. <property>
  8. <name>fs.defaultFS</name>
  9. <value>hdfs://localhost:9000</value>
  10. </property>
  11. </configuration>
XML

同樣的,修改配置檔案 hdfs-site.xml

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. <property>
  7. <name>dfs.namenode.name.dir</name>
  8. <value>file:/usr/local/hadoop/tmp/dfs/name</value>
  9. </property>
  10. <property>
  11. <name>dfs.datanode.data.dir</name>
  12. <value>file:/usr/local/hadoop/tmp/dfs/data</value>
  13. </property>
  14. </configuration>
XML Hadoop配置檔案說明

Hadoop 的執行方式是由配置檔案決定的(執行 Hadoop 時會讀取配置檔案),因此如果需要從偽分散式模式切換回非分散式模式,需要刪除 core-site.xml 中的配置項。

此外,偽分散式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以執行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 引數,則預設使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統清理掉,導致必須重新執行 format 才行。所以我們進行了設定,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯。

配置完成後,執行 NameNode 的格式化:

  1. ./bin/hdfs namenode -format
Shell 命令

成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯。

執行namenode格式化執行namenode格式化

如果在這一步時提示 Error: JAVA_HOME is not set and could not be found. 的錯誤,則說明之前設定 JAVA_HOME 環境變數那邊就沒設定好,請按教程先設定好 JAVA_HOME 變數,否則後面的過程都是進行不下去的。

接著開啟 NameNode 和 DataNode 守護程序。

  1. ./sbin/start-dfs.sh
Shell 命令

若出現如下SSH提示,輸入yes即可。

啟動Hadoop時的SSH提示啟動Hadoop時的SSH提示

啟動時可能會出現如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。該 WARN 提示可以忽略,並不會影響正常使用(該 WARN 可以通過編譯 Hadoop 原始碼解決)。

啟動 Hadoop 時提示 Could not resolve hostname

如果啟動 Hadoop 時遇到輸出非常多“ssh: Could not resolve hostname xxx”的異常情況,如下圖所示:

啟動Hadoop時的異常提示啟動Hadoop時的異常提示

這個並不是 ssh 的問題,可通過設定 Hadoop 環境變數來解決。首先按鍵盤的 ctrl + c 中斷啟動,然後在 ~/.bashrc 中,增加如下兩行內容(設定過程與 JAVA_HOME 變數一樣,其中 HADOOP_HOME 為 Hadoop 的安裝目錄):

  1. export HADOOP_HOME=/usr/local/hadoop
  2. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
Shell

儲存後,務必執行 source ~/.bashrc 使變數設定生效,然後再次執行 ./sbin/start-dfs.sh 啟動 Hadoop。

啟動完成後,可以通過命令 jps 來判斷是否成功啟動,若成功啟動則會列出如下程序: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 沒有啟動,請執行 sbin/stop-dfs.sh 關閉程序,然後再次嘗試啟動嘗試)。如果沒有 NameNode 或 DataNode ,那就是配置不成功,請仔細檢查之前步驟,或通過檢視啟動日誌排查原因。

通過jps檢視啟動的Hadoop程序通過jps檢視啟動的Hadoop程序

Hadoop無法正常啟動的解決方法

一般可以檢視啟動日誌來排查原因,注意幾點:

  • 啟動時會提示形如 “DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”,其中 DBLab-XMU 對應你的機器名,但其實啟動日誌資訊是記錄在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,所以應該檢視這個字尾為.log 的檔案;
  • 每一次的啟動日誌都是追加在日誌檔案之後,所以得拉到最後面看,對比下記錄的時間就知道了。
  • 一般出錯的提示在最後面,通常是寫著 Fatal、Error、Warning 或者 Java Exception 的地方。
  • 可以在網上搜索一下出錯資訊,看能否找到一些相關的解決方法。

此外,若是 DataNode 沒有啟動,可嘗試如下的方法(注意這會刪除 HDFS 中原有的所有資料,如果原有的資料很重要請不要這樣做):

  1. # 針對 DataNode 沒法啟動的解決方法
  2. ./sbin/stop-dfs.sh # 關閉
  3. rm -r ./tmp # 刪除 tmp 檔案,注意這會刪除 HDFS 中原有的所有資料
  4. ./bin/hdfs namenode -format # 重新格式化 NameNode
  5. ./sbin/start-dfs.sh # 重啟
Shell 命令

成功啟動後,可以訪問 Web 介面 http://localhost:50070 檢視 NameNode 和 Datanode 資訊,還可以線上檢視 HDFS 中的檔案。

Hadoop的Web介面Hadoop的Web介面

執行Hadoop偽分散式例項

上面的單機模式,grep 例子讀取的是本地資料,偽分散式讀取的則是 HDFS 上的資料。要使用 HDFS,首先需要在 HDFS 中建立使用者目錄:

  1. ./bin/hdfs dfs -mkdir -p /user/hadoop
Shell 命令

接著將 ./etc/hadoop 中的 xml 檔案作為輸入檔案複製到分散式檔案系統中,即將 /usr/local/hadoop/etc/hadoop 複製到分散式檔案系統中的 /user/hadoop/input 中。我們使用的是 hadoop 使用者,並且已建立相應的使用者目錄 /user/hadoop ,因此在命令中就可以使用相對路徑如 input,其對應的絕對路徑就是 /user/hadoop/input:

  1. ./bin/hdfs dfs -mkdir input
  2. ./bin/hdfs dfs -put ./etc/hadoop/*.xml input
Shell 命令

複製完成後,可以通過如下命令檢視檔案列表:

  1. ./bin/hdfs dfs -ls input
Shell 命令

偽分散式執行 MapReduce 作業的方式跟單機模式相同,區別在於偽分散式讀取的是HDFS中的檔案(可以將單機步驟中建立的本地 input 資料夾,輸出結果 output 資料夾都刪掉來驗證這一點)。

  1. ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
Shell 命令

檢視執行結果的命令(檢視的是位於 HDFS 中的輸出結果):

  1. ./bin/hdfs dfs -cat output/*
Shell 命令

結果如下,注意到剛才我們已經更改了配置檔案,所以執行結果不同。

Hadoop偽分散式執行grep結果Hadoop偽分散式執行grep結果

我們也可以將執行結果取回到本地:

  1. rm -r ./output # 先刪除本地的 output 資料夾(如果存在)
  2. ./bin/hdfs dfs -get output ./output # 將 HDFS 上的 output 資料夾拷貝到本機
  3. cat ./output/*
Shell 命令

Hadoop 執行程式時,輸出目錄不能存在,否則會提示錯誤 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists” ,因此若要再次執行,需要執行如下命令刪除 output 資料夾:

  1. ./bin/hdfs dfs -rm -r output # 刪除 output 資料夾
Shell 命令 執行程式時,輸出目錄不能存在

執行 Hadoop 程式時,為了防止覆蓋結果,程式指定的輸出目錄(如 output)不能存在,否則會提示錯誤,因此執行前需要先刪除輸出目錄。在實際開發應用程式時,可考慮在程式中加上如下程式碼,能在每次執行時自動刪除輸出目錄,避免繁瑣的命令列操作:

  1. Configuration conf =newConfiguration();
  2. Job job =newJob(conf);
  3. /* 刪除輸出目錄 */
  4. Path outputPath =newPath(args[1]);
  5. outputPath.getFileSystem(conf).delete(outputPath,true);
Java

若要關閉 Hadoop,則執行

  1. ./sbin/stop-dfs.sh
Shell 命令 注意

下次啟動 hadoop 時,無需進行 NameNode 的初始化,只需要執行 ./sbin/start-dfs.sh 就可以!

啟動YARN

(偽分散式不啟動 YARN 也可以,一般不會影響程式執行)

有的讀者可能會疑惑,怎麼啟動 Hadoop 後,見不到書上所說的 JobTracker 和 TaskTracker,這是因為新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也稱為 YARN,Yet Another Resource Negotiator)。

YARN 是從 MapReduce 中分離出來的,負責資源管理與任務排程。YARN 運行於 MapReduce 之上,提供了高可用性、高擴充套件性,YARN 的更多介紹在此不展開,有興趣的可查閱相關資料。

上述通過 ./sbin/start-dfs.sh 啟動 Hadoop,僅僅是啟動了 MapReduce 環境,我們可以啟動 YARN ,讓 YARN 來負責資源管理與任務排程。

首先修改配置檔案 mapred-site.xml,這邊需要先進行重新命名:

  1. mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
Shell 命令

然後再進行編輯,同樣使用 gedit 編輯會比較方便些 gedit ./etc/hadoop/mapred-site.xml

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. </configuration>
XML

接著修改配置檔案 yarn-site.xml

  1. <configuration>
  2. <property>
  3. <name>yarn.nodemanager.aux-services</name>
  4. <value>mapreduce_shuffle</value>
  5. </property>
  6. </configuration>
XML

然後就可以啟動 YARN 了(需要先執行過 ./sbin/start-dfs.sh):

  1. ./sbin/start-yarn.sh # 啟動YARN
  2. ./sbin/mr-jobhistory-daemon.sh start historyserver # 開啟歷史伺服器,才能在Web中檢視任務執行情況
Shell 命令

開啟後通過 jps 檢視,可以看到多了 NodeManager 和 ResourceManager 兩個後臺程序,如下圖所示。

開啟YARN開啟YARN

啟動 YARN 之後,執行例項的方法還是一樣的,僅僅是資源管理方式、任務排程不同。觀察日誌資訊可以發現,不啟用 YARN 時,是 “mapred.LocalJobRunner” 在跑任務,啟用 YARN 之後,是 “mapred.YARNRunner” 在跑任務。啟動 YARN 有個好處是可以通過 Web 介面檢視任務的執行情況:http://localhost:8088/cluster,如下圖所示。

開啟YARN後可以檢視任務執行資訊開啟YARN後可以檢視任務執行資訊

但 YARN 主要是為叢集提供更好的資源管理與任務排程,然而這在單機上體現不出價值,反而會使程式跑得稍慢些。因此在單機上是否開啟 YARN 就看實際情況了。

不啟動 YARN 需重新命名 mapred-site.xml

如果不想啟動 YARN,務必把配置檔案 mapred-site.xml 重新命名,改成 mapred-site.xml.template,需要用時改回來就行。否則在該配置檔案存在,而未開啟 YARN 的情況下,執行程式會提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的錯誤,這也是為何該配置檔案初始檔名為 mapred-site.xml.template。

同樣的,關閉 YARN 的指令碼如下:

  1. ./sbin/stop-yarn.sh
  2. ./sbin/mr-jobhistory-daemon.sh stop historyserver
Shell 命令

自此,你已經掌握 Hadoop 的配置和基本使用了。

附加教程: 配置PATH環境變數

在這裡額外講一下 PATH 這個環境變數(可執行 echo $PATH 檢視,當中包含了多個目錄)。例如我們在主資料夾 ~ 中執行ls 這個命令時,實際執行的是/bin/ls 這個程式,而不是~/ls 這個程式。系統是根據 PATH 這個環境變數中包含的目錄位置,逐一進行查詢,直至在這些目錄位置下找到匹配的程式(若沒有匹配的則提示該命令不存在)。

上面的教程中,我們都是先進入到 /usr/local/hadoop 目錄中,再執行 sbin/hadoop,實際上等同於執行 /usr/local/hadoop/sbin/hadoop。我們可以將 Hadoop 命令的相關目錄加入到 PATH 環境變數中,這樣就可以直接通過start-dfs.sh 開啟 Hadoop,也可以直接通過hdfs 訪問 HDFS 的內容,方便平時的操作。

同樣我們選擇在 ~/.bashrc 中進行設定(vim ~/.bashrc,與 JAVA_HOME 的設定相似),在檔案最前面加入如下單獨一行:

export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin

新增後執行 source ~/.bashrc 使設定生效,生效後,在任意目錄中,都可以直接使用 hdfs 等命令了,讀者不妨現在就執行hdfs dfs -ls input 檢視 HDFS 檔案試試看。

安裝Hadoop叢集

在平時的學習中,我們使用偽分散式就足夠了。如果需要安裝 Hadoop 叢集,請檢視Hadoop叢集安裝配置教程

相關教程

參考資料

相關推薦

hadoop 安裝配置筆記

當開始著手實踐 Hadoop 時,安裝 Hadoop 往往會成為新手的一道門檻。儘管安裝其實很簡單,書上有寫到,官方網站也有 Hadoop 安裝配置教程,但由於對 Linux 環境不熟悉,書上跟官網上簡略的安裝步驟新手往往 Hold 不住。加上網上不少教程也甚是坑,導致新手摺騰老幾天愣是沒裝好,很是打擊學習

HDFS分布式安裝配置筆記

分布式安裝 sys local 火墻 post conda val conf jdk1.7 1.準備三臺虛擬機centos6.5 192.168.20.171 node1 NameNode節點centos6.5 192.168.20.172 node2 DataNode節點

(十二)linux下hadoop安裝配置

-i host 配置文件 localhost mapreduce stat reboot app table 1.準備Linux環境 1.1關閉防火墻 #查看防火墻狀態 service iptables status #關閉防火墻 service iptables

Manjaro安裝配置筆記

sta eas 崩潰 attr module 選擇 wrap lec sel 簡單介紹: Manjaro和Ubuntu的都使用有段時間了,還是AUR大法用著舒服趁著由KDE桌面更換deepin時系統崩潰,直接重裝了系統,版本:Manjaro-d

軟件安裝配置筆記(一)——oracle的安裝配置

管理器 系統 同時 acl 安裝配置 默認方法 network 設置 分號 註: 1、當ArcGIS Server 和 ArcMap 安裝在一臺服務器上,Oracle 安裝在另一臺服務器上時,ArcGIS Server 和 ArcMap的服務器需要同時安裝 32 位 和 6

軟體安裝配置筆記(一)——oracle的安裝配置

注: 1、當ArcGIS Server 和 ArcMap 安裝在一臺伺服器上,Oracle 安裝在另一臺伺服器上時,ArcGIS Server 和 ArcMap的伺服器需要同時安裝 32 位 和 64 位 Oracle 客戶端。 (server需64位,m

mq(activemq kafka rocketmq)安裝配置筆記

ActiveMq 下載 http://activemq.apache.org/download.html 這裡下載最快 window直接用網頁下載, linux 下 獲取真實路徑後 用wget 命令 下載 wget http://mirrors.hust.ed

linux下haproxy安裝配置筆記

1.下載 https://fossies.org/linux/misc/legacy/haproxy-1.7.9.tar.gz 2.解壓 將安裝包上傳至home目錄下 cd /home tar -zxvf haproxy-1.7.9.tar.gz cd haproxy-1

Net-SNMP(V3協議)安裝配置筆記

認證:檢驗資訊來自正確的來源。 封包加密:避免被未授權的來源窺探。 SNMPv1,v2使用基於團體名進行報文認證 SNMPv3中引入了下列三個安全級別。 noAuthNoPriv:不需要認證,不提供隱私性(加密)。 authNoPriv:基於HMAC-MD5或HMAC-SHA的認證,不提供加密。 au

haproxy安裝配置(筆記一)

四層負載均衡 以常見的 TCP 應用為例,負載均衡器在接收到第一個來自客戶端的 SYN 請求時,會通過設定的負載均衡演算法選擇一個最佳的後端伺服器,同時將報文中目標 IP 地址修改為後端伺服器 IP,然後直接轉發給該後端伺服器,這樣一個負載均衡請求就完成了。從這個過程來看,

hadoop安裝配置中的一些問題

1.安裝配置java時 程式 ‘java’ 已包含在下列軟體包中: * default-jre * gcj-4.8-jre-headless * gcj-4.9-jre-headless * openjdk-7-jre-headless * openjdk-6-jre-headl

Hadoop安裝配置、執行第一個WordCount示例程式

作業系統ubuntu。本篇目的是在單機模式下執行成功WordCount示例程式。 本篇小結安裝步驟,遇到的問題和解決辦法。 疑惑點及其思考。 Hadoop是為linux而開發的,所以開發hadoop程式,包括spark最好在linux環境下。目錄如下: 一:Hadoop

Ubuntu下JDK與Hadoop安裝配置

Ubuntu下JDK與Hadoop安裝配置 一般安裝東西都是三個步驟 下載 安裝 配置環境變數 JDK安裝 JDK下載   jdk-8u11-linux-x64.tar.gz 安裝 新建目錄 sudo mkdir /

FreeRADIUS + MySQL 安裝配置筆記

RADIUS認證伺服器(Remote Authentication Dial In User Service,遠端使用者撥號認證系統)是目前應用最廣泛的AAA協議(AAA=authentication、Authorization、Accounting,即認證、授權、計費)。隨著網路安全需求提高,中小企業的區

Hadoop安裝配置-VMWare下CentOS-6.4+ hadoop-0.20.2-cdh3u6分散式安裝【圖文】

 3)修改當前機器IP     假定我們的機器連IP在當時安裝機器時都沒有配置好,那此時我們需要對"ifcfg-eth0"檔案進行配置,該檔案位於"/etc/sysconfig/network-scripts"資料夾下。   在這個目錄下面,存放的是網路介面(網絡卡)的制御指令碼檔案(控制

HBase單機/偽分散式安裝/配置筆記

一、單機模式安裝 在官網下載hbase 解壓到任一目錄下 修改hbase配置檔案 修改conf目錄下hbase-env.sh:設定JAVA_HOME環境變數 修改conf目錄下hbase-

hadoop安裝配置——快速搭建hadoop

副本 所有 配置文件 hadoop安裝 second windows 當前 data app 以下給初次使用hadoop的朋友,快速搭建並啟動hadoop,記住需要修改的東西分別是“三個site,四個env,一個slaver”,所有配置文件都在$HA

軟件安裝配置筆記(三)——ArcGIS系列產品安裝配置(補檔)(附數據庫連接及數據導入)

好的 軟件安裝 oracle 兩個文件 details 初始 啟用 準備 fin 在前兩篇安裝配置筆記之後,就忘記把其他安裝配置筆記遷移過來了,真是失誤失誤!趁現在其他文檔需要趕緊補上。 目錄: 一、ArcMap 二、ArcMap連接數據庫並導入數據 三、Arcgi

window下Nginx+php+mysql安裝配置筆記

Nginx nginx下載地  nginx英文文件 穩定版和主線版選擇 Choosin

Java學習筆記——Linux下安裝配置MySQL

code names 刪掉 set 影響 per install nod 設置 山重水復疑無路,柳暗花明又一村               ——遊山西村 系統:Ubuntu 16.04LTS 1\官網下載mysql-5.7.18-linux-glibc2.5-x86