Hadoop安裝教程_單機/僞分佈式配置_CentOS6.4/Hadoop2.6.0

Hadoop安裝教程_單機/僞分佈式配置_CentOS6.4/Hadoop2.6.0

 

環境

本教程使用 CentOS 6.4 32位 做爲系統環境,請自行安裝系統。若是用的是 Ubuntu 系統,請查看相應的 Ubuntu安裝Hadoop教程html

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

Hadoop版本

Hadoop 有兩個主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比較老的教材上用的多是 0.20 這樣的版本。Hadoop 2.x 版本在不斷更新,本教程都可適用。若是需安裝 0.20,1.2.1這樣的版本,本教程也能夠做爲參考,主要差異在於配置項,配置請參考官網教程或其餘教程。node

新版是兼容舊版的,書上舊版本的代碼應該可以正常運行(我本身沒驗證,歡迎驗證反饋)。linux

裝好了 CentOS 系統以後,在安裝 Hadoop 前還須要作一些必備工做。正則表達式

建立hadoop用戶

若是你安裝 CentOS 的時候不是用的 「hadoop」 用戶,那麼須要增長一個名爲 hadoop 的用戶。shell

首先點擊左上角的 「應用程序」 -> 「系統工具」 -> 「終端」,首先在終端中輸入 su ,按回車,輸入 root 密碼以 root 用戶登陸,接着執行命令建立新用戶 hadoop:apache

  1. su # 上述提到的以 root 用戶登陸
  2. useradd -m hadoop -s /bin/bash # 建立新用戶hadoop
Shell 命令

以下圖所示,這條命令建立了能夠登錄的 hadoop 用戶,並使用 /bin/bash 做爲shell。vim

CentOS建立hadoop用戶CentOS建立hadoop用戶centos

接着使用以下命令修改密碼,按提示輸入兩次密碼,可簡單的設爲 「hadoop」(密碼隨意指定,若提示「無效的密碼,過於簡單」則再次輸入確認就行):瀏覽器

  1. passwd hadoop
Shell 命令

可爲 hadoop 用戶增長管理員權限,方便部署,避免一些對新手來講比較棘手的權限問題,執行:

  1. visudo
Shell 命令

以下圖,找到 root ALL=(ALL) ALL 這行(應該在第98行,能夠先按一下鍵盤上的 ESC 鍵,而後輸入 :98 (按一下冒號,接着輸入98,再按回車鍵),能夠直接跳到第98行 ),而後在這行下面增長一行內容:hadoop ALL=(ALL) ALL (當中的間隔爲tab),以下圖所示:

爲hadoop增長sudo權限爲hadoop增長sudo權限

添加好內容後,先按一下鍵盤上的 ESC 鍵,而後輸入 :wq (輸入冒號還有wq,這是vi/vim編輯器的保存方法),再按回車鍵保存退出就能夠了。

最後註銷當前用戶(點擊屏幕右上角的用戶名,選擇退出->註銷),在登錄界面使用剛建立的 hadoop 用戶進行登錄。(若是已是 hadoop 用戶,且在終端中使用 su 登陸了 root 用戶,那麼須要執行 exit 退出 root 用戶狀態)

準備工做

使用 hadoop 用戶登陸後,還須要安裝幾個軟件才能安裝 Hadoop。

CentOS 使用 yum 來安裝軟件,須要聯網環境,首先應檢查一下是否連上了網絡。以下圖所示,桌面右上角的網絡圖標若顯示紅叉,則代表還未聯網,應點擊選擇可用網絡。

檢查是否聯網檢查是否聯網

鏈接網絡後,須要安裝 SSH 和 Java。

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

集羣、單節點模式都須要用到 SSH 登錄(相似於遠程登錄,你能夠登陸某臺 Linux 主機,而且在上面運行命令),通常狀況下,CentOS 默認已安裝了 SSH client、SSH server,打開終端執行以下命令進行檢驗:

  1. rpm -qa | grep ssh
Shell 命令

若是返回的結果以下圖所示,包含了 SSH client 跟 SSH server,則不須要再安裝。

檢查是否安裝了SSH檢查是否安裝了SSH

若須要安裝,則能夠經過 yum 進行安裝(安裝過程當中會讓你輸入 [y/N],輸入 y 便可):

  1. sudo yum install openssh-clients
  2. sudo yum install openssh-server
Shell 命令

接着執行以下命令測試一下 SSH 是否可用:

  1. ssh localhost
Shell 命令

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

測試SSH是否可用測試SSH是否可用

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

首先輸入 exit 退出剛纔的 ssh,就回到了咱們原先的終端窗口,而後利用 ssh-keygen 生成密鑰,並將密鑰加入到受權中:

  1. exit # 退出剛纔的 ssh localhost
  2. cd ~/.ssh/ # 若沒有該目錄,請先執行一次ssh localhost
  3. ssh-keygen -t rsa # 會有提示,都按回車就能夠
  4. cat id_rsa.pub >> authorized_keys # 加入受權
  5. chmod 600 ./authorized_keys # 修改文件權限
Shell 命令
~的含義

在 Linux 系統中,~ 表明的是用戶的主文件夾,即 「/home/用戶名」 這個目錄,如你的用戶名爲 hadoop,則 ~ 就表明 「/home/hadoop/」。 此外,命令中的 # 後面的文字是註釋。

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

SSH無密碼登陸SSH無密碼登陸

安裝Java環境

Java 環境可選擇 Oracle 的 JDK,或是 OpenJDK,如今通常 Linux 系統默認安裝的基本是 OpenJDK,如 CentOS 6.4 就默認安裝了 OpenJDK 1.7。按 http://wiki.apache.org/hadoop/HadoopJavaVersions 中說的,Hadoop 在 OpenJDK 1.7 下運行是沒問題的。須要注意的是,CentOS 6.4 中默認安裝的只是 Java JRE,而不是 JDK,爲了開發方便,咱們仍是須要經過 yum 進行安裝 JDK,安裝過程當中會讓輸入 [y/N],輸入 y 便可:

  1. sudo yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
Shell 命令

經過上述命令安裝 OpenJDK,默認安裝位置爲 /usr/lib/jvm/java-1.7.0-openjdk(該路徑能夠經過執行 rpm -ql java-1.7.0-openjdk-devel | grep '/bin/javac' 命令肯定,執行後會輸出一個路徑,除去路徑末尾的 「/bin/javac」,剩下的就是正確的路徑了)。OpenJDK 安裝後就能夠直接使用 java、javac 等命令了。

接着須要配置一下 JAVA_HOME 環境變量,爲方便,咱們在 ~/.bashrc 中進行設置(擴展閱讀: 設置Linux環境變量的方法和區別):

  1. vim ~/.bashrc
Shell 命令

在文件最後面添加以下單獨一行(指向 JDK 的安裝位置),並保存:

  1. export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk
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 能夠經過 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下載,本教程選擇的是 2.6.0 版本,下載時請下載 hadoop-2.x.y.tar.gz這個格式的文件,這是編譯好的,另外一個包含 src 的則是 Hadoop 源代碼,須要進行編譯纔可以使用。

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

本文涉及的文件均經過瀏覽器下載,默認保存在 「下載」 目錄中(若不是請自行更改 tar 命令的相應目錄)。另外,若是你用的不是 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 ./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 命令

若運行出錯,如出現以下圖提示:

運行Hadoop實例時可能會報錯運行Hadoop實例時可能會報錯

若出現提示 「WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable」,該 WARN 提示能夠忽略,不會影響 Hadoop 正常運行(可經過編譯 Hadoop 源碼解決,解決方法請自行搜索)。

若出現提示 「INFO metrics.MetricsUtil: Unable to obtain hostName java.net.UnknowHostException」,這須要執行以下命令修改 hosts 文件,爲你的主機名增長IP映射:

  1. sudo vim /etc/hosts
Shell 命令

主機名在終端窗口標題裏能夠看到,或執行命令 hostname 查看,以下圖所示,在最後面增長一行 「127.0.0.1 dblab」:

設置主機名的IP映射設置主機名的IP映射

保存文件後,從新運行 hadoop 實例,若執行成功的話會輸出不少做業的相關信息,最後的輸出信息以下圖所示。做業的結果會輸出在指定的 output 文件夾中,經過命令 cat ./output/* 查看結果,符合正則的單詞 dfsadmin 出現了1次:

Hadoop例子輸出結果Hadoop例子輸出結果

注意,Hadoop 默認不會覆蓋結果文件,所以再次運行上面實例會提示出錯,須要先將 ./output 刪除。

  1. rm -r ./output
Shell 命令

Hadoop僞分佈式配置

Hadoop 能夠在單節點上以僞分佈式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既做爲 NameNode 也做爲 DataNode,同時,讀取的是 HDFS 中的文件。

在設置 Hadoop 僞分佈式配置前,咱們還須要設置 HADOOP 環境變量,執行以下命令在 ~/.bashrc 中設置:

  1. gedit ~/.bashrc
Shell 命令

此次咱們選擇用 gedit 而不是 vim 來編輯。gedit 是文本編輯器,相似於 Windows 中的記事本,會比較方便。保存後記得關掉整個 gedit 程序,不然會佔用終端。在文件最後面增長以下內容:

  1. # Hadoop Environment Variables
  2. export HADOOP_HOME=/usr/local/hadoop
  3. export HADOOP_INSTALL=$HADOOP_HOME
  4. export HADOOP_MAPRED_HOME=$HADOOP_HOME
  5. export HADOOP_COMMON_HOME=$HADOOP_HOME
  6. export HADOOP_HDFS_HOME=$HADOOP_HOME
  7. export YARN_HOME=$HADOOP_HOME
  8. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
  9. export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
Shell

保存後,不要忘記執行以下命令使配置生效:

  1. source ~/.bashrc
Shell 命令

這些變量在啓動 Hadoop 進程時須要用到,不設置的話可能會報錯(這些變量也能夠經過修改 ./etc/hadoop/hadoop-env.sh 實現)。

Hadoop 的配置文件位於 /usr/local/hadoop/etc/hadoop/ 中,僞分佈式須要修改2個配置文件 core-site.xml 和 hdfs-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

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

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

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

執行NameNode格式化執行NameNode格式化

接着開啓 NaneNode 和 DataNode 守護進程:

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

若出現以下 SSH 的提示 「Are you sure you want to continue connecting」,輸入 yes 便可。

首次啓動Hadoop時的SSH提示首次啓動Hadoop時的SSH提示

啓動時可能會有 WARN 提示 「WARN util.NativeCodeLoader…」 如前面提到的,這個提示不會影響正常使用。

啓動完成後,能夠經過命令 jps 來判斷是否成功啓動,若成功啓動則會列出以下進程: 「NameNode」、」DataNode」和SecondaryNameNode(若是 SecondaryNameNode 沒有啓動,請運行 sbin/stop-dfs.sh 關閉進程,而後再次嘗試啓動嘗試)。若是沒有 NameNode 或 DataNode ,那就是配置不成功,請仔細檢查以前步驟,或經過查看啓動日誌排查緣由。

經過jps查看啓動的Hadoop進程經過jps查看啓動的Hadoop進程

經過查看啓動日誌分析啓動失敗緣由

有時 Hadoop 沒法正確啓動,如 NameNode 進程沒有順利啓動,這時能夠查看啓動日誌來排查緣由,注意幾點:

  • 啓動時會提示形如 「dblab: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-dblab.out」,其中 dblab 對應你的主機名,但啓動的日誌信息是記錄在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-dblab.log 中,因此應該查看這個後綴爲 .log 的文件;
  • 每一次的啓動日誌都是追加在日誌文件以後,因此得拉到最後面看,看下記錄的時間就知道了。
  • 通常出錯的提示在最後面,也就是寫着 Fatal、Error 或者 Java Exception 的地方。
  • 能夠在網上搜索一下出錯信息,看可否找到一些相關的解決方法。

成功啓動後,能夠訪問 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,還能夠在線查看 HDFS 中的文件。

Hadopp的Web界面Hadopp的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 命令

複製完成後,能夠經過以下命令查看 HDFS 中的文件列表:

  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 = new Configuration();
  2. Job job = new Job(conf);
  3.  
  4. /* 刪除輸出目錄 */
  5. Path outputPath = new Path(args[1]);
  6. 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 的內容,方便平時的操做。

在前面咱們設置 HADOOP 環境變量時,咱們已經順便設置了 PATH 變量(即 「export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin」),那麼之後咱們在任意目錄中均可以直接經過執行 start-dfs.sh 來啓動 Hadoop 或者執行 hdfs dfs -ls input 查看 HDFS 文件了,讀者不妨如今就執行 hdfs dfs -ls input 試試看。

安裝Hadoop集羣

在平時的學習中,咱們使用僞分佈式就足夠了。若是須要安裝 Hadoop 集羣,請查看Hadoop集羣安裝配置教程

相關教程

參考資料

相關文章
相關標籤/搜索