開發人員學Linux(14):CentOS7安裝配置大數據平臺Hadoop2.9.0

1.前言html

「大雲物移」是當年很火熱的一個話題,分別指大數據、雲計算、物聯網和移動互聯網,其中大數據領域談論得多就是Hadoop。固然Hadoop不表明大數據,而是大數據處理領域的一個比較有名的開源框架而已,一般說的大數據包含了大數據的存放、大數據的分析處理及大數據的查詢展現,本篇提到的Hadoop只不過是在其中的大數據的分析處理環節起做用,Apache提供了一個開源全家桶,包括了Hadoop、HBase、Zookeeper、Spark、Hive及Pig等一些框架。不過限於篇幅,本篇只介紹Hadoop的僞分佈式部署,包括MapReduce和HDFS。java

2.準備node

JDK文件:jdk-8u131-linux-x64.tar.gzlinux

官方下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlnginx

Hadoop文件:hadoop-2.9.0.tar.gzgit

官方下載地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gzshell

3.安裝apache

3.1安裝Oracle JDK編程

3.1.1卸載Open JDKvim

雖然Open JDK是JDK的開源實現,不過我的仍是比較喜歡Oracle JDK,可能以爲它出身更正統一些吧。所以首先檢查服務器上是否安裝了Open JDK,運行命令:

rpm -qa | grep jdk

若是服務器已經安裝了Open JDK,採用下面的方式卸載掉Open JDK,以下圖所示:

Hadoop01_query_OpenJDK.png 

3.1.2安裝Oracle JDK

可能有些人對Oracle JDK感受到有點彆扭,至少本人就是如此,當年Sun公司推出了Java但因爲經營不善被Oracle收購,因此之前常常說的Sun JDK如今改口稱Oracle JDK了。將前文說起的JDK安裝包下載至/root目錄下。

按照下面的方式來安裝:

cd /root

tar -zxf /root/jdk-8u131-linux-x64.tar.gz -C  /usr/local

這樣一來JDK就安裝在/usr/local/jdk1.8.0_131目錄下了。

下面就對環境變量進行設置,由於在Linux中存在着交互式shell和非交互式shell,交互式shell顧名思義就是在與用戶的交互過程當中執行的shell,一般是經過SSH登陸到Linux系統以後輸入shell腳本或命令等待用戶輸入或者確認而後執行的shell,而非交互式shell則是無需用戶干預的shell,如一些service的啓動等。交互式shell從/etc/profile中讀取全部用戶的環境變量設置,非交互式shell則從/etc/bashrc中讀取全部用戶的環境變量設置。所以可能會出如今交互式環境下執行shell腳本沒有問題,在非交互式環境下執行shell腳本則會出現找不到環境變量配置信息的問題。

爲保險起見,咱們在/etc/profile和/etc/bashrc都配置Java相關的環境變量,將添加的內容放在原文件的末尾,添加的內容以下:

export JAVA_HOME=/usr/local/jdk1.8.0_131

export JRE_HOME=/usr/local/jdk1.8.0_131

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin


能夠經過tail查看修改後的文件:

[root@hadoop ~]# tail /etc/profile -n 5


export JAVA_HOME=/usr/local/jdk1.8.0_131

export JRE_HOME=/usr/local/jdk1.8.0_131

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

[root@hadoop ~]# tail /etc/bashrc -n 5


export JAVA_HOME=/usr/local/jdk1.8.0_131

export JRE_HOME=/usr/local/jdk1.8.0_131

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

[root@hadoop ~]# source /etc/profile

[root@hadoop ~]# source /etc/bashrc

[root@hadoop ~]# java -version

java version "1.8.0_131"

Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

[root@hadoop ~]#

注意,要想讓咱們的配置立刻生效,應該執行source /etc/profile和source /etc/bashrc來當即讀取更新後的配置信息。


3.2安裝Hadoop

將前文說起的Hadoop安裝包下載至/root目錄下。

經過以下命名安裝Hadoop:

[root@hadoop ~]# cd /root

[root@hadoop ~]# tar -zxf /root/hadoop-2.9.0.tar.gz -C  /usr/local

這樣一來,Hadoop2.9.0就安裝在/usr/local/hadoop-2.9.0目錄下,咱們能夠經過以下命令查看一下:

[root@hadoop ~]# /usr/local/hadoop-2.9.0/bin/hadoop version

Hadoop 2.9.0

Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 756ebc8394e473ac25feac05fa493f6d612e6c50

Compiled by arsuresh on 2017-11-13T23:15Z

Compiled with protoc 2.5.0

From source with checksum 0a76a9a32a5257331741f8d5932f183

This command was run using /usr/local/hadoop-2.9.0/share/hadoop/common/hadoop-common-2.9.0.jar

[root@hadoop ~]#

畢竟每次執行hadoop的時候帶着這麼一長串命令不是很方便,尤爲是須要手動輸入的時候,咱們依然能夠借鑑配置JAVA環境參數的方式將Hadoop相關的環境參數配置到環境變量配置文件source /etc/profile和source /etc/bashrc中,在兩個文件的末尾分別增長以下配置:

export HADOOP_HOME=/usr/local/hadoop-2.9.0

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin


添加完內容保存,最後別忘了執行以下命令刷新環境變量信息:

[root@hadoop ~]# source /etc/profile

[root@hadoop ~]# source /etc/bashrc

這時候再執行hadoop的相關命令就無需帶路徑信息了,以下:

[root@hadoop ~]# hadoop version

Hadoop 2.9.0

Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 756ebc8394e473ac25feac05fa493f6d612e6c50

Compiled by arsuresh on 2017-11-13T23:15Z

Compiled with protoc 2.5.0

From source with checksum 0a76a9a32a5257331741f8d5932f183

This command was run using /usr/local/hadoop-2.9.0/share/hadoop/common/hadoop-common-2.9.0.jar


4.配置

4.1用戶配置

爲便於管理和維護,咱們單首創建一個系統帳戶用來運行hadoop有關的腳本和任務,這個系統帳戶名爲hadoop,經過如下腳本建立:

useradd hadoop -s /bin/bash –m

上面的命令建立了名爲hadoop的用戶和用戶組,而且nginx用戶沒法登陸系統(-s /sbin/nologin限制),能夠經過id命令查看:

[root@hadoop ~]# id hadoop

uid=1001(hadoop) gid=1001(hadoop) groups=1001(hadoop)

經過上面的命令建立的用戶是沒有密碼的,須要用passwd來設置密碼:

[root@hadoop ~]# passwd hadoop

Changing password for user hadoop.

New password: 

BAD PASSWORD: The password is shorter than 8 characters

Retype new password: 

passwd: all authentication tokens updated successfully.


由於有時候須要hadoop這個用戶執行一些高權限的命令,所以給予它sudo的權限,打開/etc/sudoers文件,找到「root    ALL=(ALL)       ALL」那一行,在下面添加一行:

hadoop    ALL=(ALL)       ALL

而後保存文件(記住若是是用vim等編輯器編輯,最終保存的時候要使用」:wq!」命令來強制保存到這個只讀文件)。修改的結果以下圖所示:

Hadoop02_sudoers.png 

4.2免登陸配置

雖然在本篇講述的是Hadoop的僞分佈式部署,可是中間還有一些分佈式的操做,這就要求可以用ssh來登陸,注意這裏的ssh不是Java裏面的SSH(Servlet+Spring+Hibernate),這裏講的SSH是Secure Shell 的縮寫,是用於Linux服務器之間遠程登陸的服務協議。

若是當前是用root用戶登陸,那麼就要切換爲hadoop用戶:

[root@hadoop hadoop]# su hadoop

[hadoop@hadoop ~]$ cd ~

[hadoop@hadoop ~]$ pwd

/home/hadoop

能夠看出hadoop用戶的工做路徑爲/home/hadoop,而後咱們用ssh登陸本機,第一次登陸的時候會提示是否繼續登陸,而後輸入」yes」,接着會提示咱們輸入當前用於ssh登陸的用戶(這裏是hadoop)的在對應服務器上的密碼(這裏是localhost),輸入正確密碼後就能夠登陸,而後在輸入」exit」退出登陸,以下所示:

[hadoop@hadoop ~]$ ssh localhost

hadoop@localhost's password: 

Last login: Sat Dec  2 11:48:52 2017 from localhost

[hadoop@hadoop ~]$ rm -rf /home/hadoop/.ssh

[hadoop@hadoop ~]$ ssh localhost

The authenticity of host 'localhost (::1)' can't be established.

ECDSA key fingerprint is aa:21:ce:7a:b2:06:3e:ff:3f:3e:cc:dd:40:38:64:9d.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.

hadoop@localhost's password: 

Last login: Sat Dec  2 11:49:58 2017 from localhost

[hadoop@hadoop ~]$ exit

logout

Connection to localhost closed.

通過上述操做後,建立了這個目錄/home/hadoop/.ssh和該目錄下的known_hosts文件。

這樣每次登陸都會提示輸入密碼,但在Hadoop運行過程當中會經過shell無交互的形式在遠程服務器上執行命令,所以須要設置成免密碼登陸才行。咱們須要經過經過以下命令建立密鑰文件(一路回車便可):

[hadoop@hadoop ~]$ cd /home/hadoop/.ssh/

[hadoop@hadoop .ssh]$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /home/hadoop/.ssh/id_rsa.

Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.

The key fingerprint is:

19:b3:11:a5:6b:a3:26:03:c9:b9:b3:b8:02:ea:c9:25 hadoop@hadoop

The key's randomart image is:

+--[ RSA 2048]----+

|        ...      |

|         o       |

|        =        |

| . o     B       |

|  =     S        |

|.  o   o .       |

|oEo.o o          |

|+.+o +           |

|==.              |

+-----------------+

而後將密鑰文件的內容添加到authorized_keys文件,同時授予600的權限。

[hadoop@hadoop .ssh]$ cat id_rsa.pub >> authorized_keys

[hadoop@hadoop .ssh]$ chmod 600 authorized_keys

這時,再使用ssh localhost命令就不須要輸入密碼了,以下:

[hadoop@hadoop .ssh]$ ssh localhost

Last login: Sat Dec  2 11:50:44 2017 from localhost

[hadoop@hadoop ~]$ exit

logout

Connection to localhost closed.

注意:在本系列的第9篇關於git用戶免密碼登陸時也講到了相似的操做,並且當時也講了git文件傳輸也是使用ssh協議的。

4.3hadoop的配置

4.3.1更改hadoop安裝目錄的全部者

首先檢查一下/usr/local/hadoop-2.9.0這個hadoop的安裝目錄的全部者和用戶組是不是hadoop,若是不是就須要經過chown來設置:

[hadoop@hadoop .ssh]$ ls -lh /usr/local/hadoop-2.9.0

total 128K

drwxr-xr-x. 2 root root  194 Nov 14 07:28 bin

drwxr-xr-x. 3 root root   20 Nov 14 07:28 etc

drwxr-xr-x. 2 root root  106 Nov 14 07:28 include

drwxr-xr-x. 3 root root   20 Nov 14 07:28 lib

drwxr-xr-x. 2 root root  239 Nov 14 07:28 libexec

-rw-r--r--. 1 root root 104K Nov 14 07:28 LICENSE.txt

-rw-r--r--. 1 root root  16K Nov 14 07:28 NOTICE.txt

-rw-r--r--. 1 root root 1.4K Nov 14 07:28 README.txt

drwxr-xr-x. 3 root root 4.0K Nov 14 07:28 sbin

drwxr-xr-x. 4 root root   31 Nov 14 07:28 share

下面是更改owner和group的命令:

[hadoop@hadoop .ssh]$ sudo chown -R hadoop:hadoop /usr/local/hadoop-2.9.0


We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these three things:


    #1) Respect the privacy of others.

    #2) Think before you type.

    #3) With great power comes great responsibility.


[sudo] password for hadoop:

再次查看,就能夠看到命令執行成功了。

[hadoop@hadoop .ssh]$ ls -lh /usr/local/hadoop-2.9.0

total 128K

drwxr-xr-x. 2 hadoop hadoop  194 Nov 14 07:28 bin

drwxr-xr-x. 3 hadoop hadoop   20 Nov 14 07:28 etc

drwxr-xr-x. 2 hadoop hadoop  106 Nov 14 07:28 include

drwxr-xr-x. 3 hadoop hadoop   20 Nov 14 07:28 lib

drwxr-xr-x. 2 hadoop hadoop  239 Nov 14 07:28 libexec

-rw-r--r--. 1 hadoop hadoop 104K Nov 14 07:28 LICENSE.txt

-rw-r--r--. 1 hadoop hadoop  16K Nov 14 07:28 NOTICE.txt

-rw-r--r--. 1 hadoop hadoop 1.4K Nov 14 07:28 README.txt

drwxr-xr-x. 3 hadoop hadoop 4.0K Nov 14 07:28 sbin

drwxr-xr-x. 4 hadoop hadoop   31 Nov 14 07:28 share

4.3.2更改hadoop的配置

hadoop的配置文件存放於/usr/local/hadoop-2.9.0/etc/hadoop目錄下,主要有幾個配置文件:

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

其中,後兩個主要是跟YARN有關的配置。

將core-site.xml更改成以下內容:

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://localhost:9000</value>

    </property>

</configuration>

而後再將hdfs-site.xml更改成以下內容:

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

</configuration>

5.檢驗配置

5.1NameNode格式化

通過上面的配置,Hadoop是配置成功了,可是並不能工做,還須要進行初始化操做,由於咱們已經配置了Hadoop的相關環境變量,所以咱們能夠直接執行以下命令:

hdfs namenode –format

若是沒有問題的話,能夠看到以下輸出:

Hadoop03_namenode_format.png 

其中有一句:」 INFO common.Storage: Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted.」

5.2開啓 NameNode 和 DataNode 守護進程

經過start-dfs.sh命令開啓NameNode 和 DataNode 守護進,第一次執行時會詢問是否鏈接,輸入」yes」便可(由於已經配置了ssh免密碼登陸),以下所示(請注意必定要用建立的hadoop用戶來運行,若是不是hadoop請記得用su hadoop命令來切換到hadoop用戶):

[hadoop@hadoop hadoop]$ start-dfs.sh

17/12/02 13:54:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Starting namenodes on [localhost]

localhost: starting namenode, logging to /usr/local/hadoop-2.9.0/logs/hadoop-hadoop-namenode-hadoop.out

localhost: starting datanode, logging to /usr/local/hadoop-2.9.0/logs/hadoop-hadoop-datanode-hadoop.out

Starting secondary namenodes [0.0.0.0]

The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established.

ECDSA key fingerprint is aa:21:ce:7a:b2:06:3e:ff:3f:3e:cc:dd:40:38:64:9d.

Are you sure you want to continue connecting (yes/no)? yes

0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.

0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop-2.9.0/logs/hadoop-hadoop-secondarynamenode-hadoop.out

17/12/02 13:54:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

而後咱們能夠經過jps這個java提供的工具來查看啓動狀況:

[hadoop@hadoop hadoop]$ jps

11441 Jps

11203 SecondaryNameNode

10903 NameNode

11004 DataNode

若啓動成功會出現上述的進程,若是沒有NameNode和DataNode進程請檢查配置狀況,或者經過/usr/local/hadoop-2.9.0/logs下的日誌來查看配置錯誤。

這時能夠在瀏覽器中輸入http://localhost:50070/查看NameNode和DataNode的信息以及HDFS的信息,界面以下:

Hadoop04_overview.png 

若是虛擬機採用了橋接模式,也能夠在虛擬機外查看,像本人所使用的CentOS7,須要注意兩點:

1.在/etc/sysconfig/selinux文件中將「SELINUX=enforcing」改成」 SELINUX=disabled」;

2.經過執行systemctl disable firewalld來禁用防火牆。

5.3執行WordCount程序

Hadoop中的WordCount如同其它編程語言中的Hello World程序同樣,就是經過一個簡單的程序來程序是如何編寫的。

5.3.1 HDFS簡介

要想運行WordCount就須要使用HDFS,HDFS是Hadoop的基石。能夠這麼理解,Hadoop要處理大量的數據文件,這些數據文件須要一個可靠的方式來存儲,在即便出現一些機器的硬盤損壞的狀況下,數據文件中保存的數據仍然不會丟失。在數據量比較小的時候,磁盤陣列(Redundant Arrays of Independent Disks,RAID)能夠作到這一點,如今是HDFS用軟件的方式實現了這個功能。

HDFS也提供了一些命令用於對文件系統的操做,咱們知道Linux自己提供了一些對文件系統的操做,好比mkdir、rm、mv等,HDFS中也提供一樣的操做,不過執行方式上有一些變化,好比mkdir命令在HDFS中執行應該寫成 hdfs dfs –mkdir,一樣的,ls命令在HDFS下執行要寫成hdfs dfs –ls。

下面是一些HDFS命令:

級聯建立HDFS目錄:hdfs dfs -mkdir -p /user/haddop

查看HDFS目錄:hdfs dfs -ls /user

建立HDFS目錄:hdfs dfs -mkdir /input

查看HDFS目錄:hdfs dfs -ls /

刪除HDFS目錄:hdfs dfs -rm -r -f /input

刪除HDFS目錄:hdfs dfs -rm -r -f /user/haddop

級聯建立HDFS目錄:hdfs dfs -mkdir -p /user/hadoop/input

注意:在HDFS中建立的目錄也僅支持在HDFS中查看,在HDFS以外(好比在Linux系統中的命令行下)是看不到這些目錄存在的。重要的事情多重複幾遍:請按照本文中的3.2節提示將Hadoop安裝路徑信息配置到環境變量中。

5.3.2執行WordCount程序

首先將工做路徑切換到Hadoop的安裝目錄:/usr/local/hadoop-2.9.0

接着在HDFS中建立目錄:hdfs dfs -mkdir -p /user/hadoop/input

而後指定要分析的數據源,能夠將一些文本數據放到剛剛建立的HDFS系統下的input目錄下,爲了簡單起見,這裏就直接將hadoop安裝路徑下的一些用於配置的xml放在input目錄下:

hdfs dfs -put /usr/local/hadoop-2.9.0/etc/hadoop/*.xml /user/hadoop/input

這時能夠經過HDFS查看:

[hadoop@hadoop ~]$ hdfs dfs -ls /user/hadoop/input

17/12/17 10:27:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Found 8 items

-rw-r--r--   1 hadoop supergroup       7861 2017-12-17 10:26 /user/hadoop/input/capacity-scheduler.xml

-rw-r--r--   1 hadoop supergroup        884 2017-12-17 10:26 /user/hadoop/input/core-site.xml

-rw-r--r--   1 hadoop supergroup      10206 2017-12-17 10:26 /user/hadoop/input/hadoop-policy.xml

-rw-r--r--   1 hadoop supergroup        867 2017-12-17 10:26 /user/hadoop/input/hdfs-site.xml

-rw-r--r--   1 hadoop supergroup        620 2017-12-17 10:26 /user/hadoop/input/httpfs-site.xml

-rw-r--r--   1 hadoop supergroup       3518 2017-12-17 10:26 /user/hadoop/input/kms-acls.xml

-rw-r--r--   1 hadoop supergroup       5939 2017-12-17 10:26 /user/hadoop/input/kms-site.xml

-rw-r--r--   1 hadoop supergroup        690 2017-12-17 10:26 /user/hadoop/input/yarn-site.xml

固然,也能夠在Hadoop提供的Web界面下查看,在瀏覽器輸入網址http://localhost:50070/explorer.html而後輸入HDFS下的文件路徑,以下圖所示:

Haddop06_HDFS_Browser.png 

而後執行MapReduce做業,命令以下:

hadoop jar /usr/local/hadoop-2.9.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

這個做業的做用的將/user/hadoop/input/這個HDFS目錄下的文件中包含有dfs開頭的單詞找出來並統計出現的次數,若是程序執行沒有錯誤,咱們將會在/user/hadoop/output/這個HDFS目錄下看到兩個文件:

hdfs dfs -ls /user/hadoop/output

17/12/17 10:41:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Found 2 items

-rw-r--r--   1 hadoop supergroup          0 2017-12-17 10:36 /user/hadoop/output/_SUCCESS

-rw-r--r--   1 hadoop supergroup         29 2017-12-17 10:36 /user/hadoop/output/part-r-00000

咱們用以下命令在HDFS中查看:

hdfs dfs -cat /user/hadoop/output/*

17/12/17 10:42:57 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

1       dfsadmin

1dfs.replication

也能夠將其從HDFS文件系統中取出來放在本地:

[hadoop@hadoop ~]$ hdfs dfs -get /user/hadoop/output  /home/hadoop/output

上面的命令就是將HDFS文件路徑/user/hadoop/output中的全部內容都拷貝到/home/hadoop/output下,這是就能夠用熟悉的Linux命名查看文件內容了。


注意:

一、在程序執行時,/user/hadoop/output這個HDFS目錄不能存在,不然再次執行時會報錯,這是能夠從新指定輸出目錄或者刪除這個目錄便可,如執行hdfs dfs -rm -f -r /user/hadoop/output命令。

二、若是須要關閉Hadoop,請執行stop-dfs.sh命名便可。

三、Hadoop的NameNode和DataNode節點的格式化成功執行一次以後,下次執行時沒必要執行。

5.4啓用YARN模式

YARN,全稱是Yet Another Resource Negotiator,YARN是從 MapReduce 中分離出來的,負責資源管理與任務調度。YARN 運行於 MapReduce 之上,提供了高可用性、高擴展性。上述經過 tart-dfs.sh 啓動 Hadoop,僅僅是啓動了 MapReduce 環境,咱們能夠啓動 YARN ,讓 YARN 來負責資源管理與任務調度。

要想使用YARN,首先要經過mapred-site.xml來配置,默認狀況在/usr/local/hadoop-2.9.0/etc/hadoop是不存在這個文件的,可是有一個名爲mapred-site.xml.template的模板文件。

首先將其更名爲mapred-site.xml:

cp /usr/local/hadoop-2.9.0/etc/hadoop/mapred-site.xml.template /usr/local/hadoop-2.9.0/etc/hadoop/mapred-site.xml

而後修改文件內容以下:

<configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>


一樣將同一目錄下的yarn-site.xml文件內容修改以下:

<configuration>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <property>

        <name>yarn.nodemanager.env-whitelist</name>

        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>

    </property>

</configuration>

至此,能夠經過start-yarn.sh來啓動YARN和經過stop-yarn.sh來中止YARN了。


啓動YARN:

請在肯定已經正確執行過start-dfs.sh後再執行執行以下命令:

start-yarn.sh

爲了能在Web中查看任務運行狀況,須要開啓歷史服務器,執行以下命令:

mr-jobhistory-daemon.sh start historyserver

這時可經過jps查看啓動狀況:

[hadoop@hadoop ~]$ jps

7559 JobHistoryServer

8039 DataNode

8215 SecondaryNameNode

8519 NodeManager

8872 Jps

8394 ResourceManager

7902 NameNode

啓動YARN以後是能夠在Web界面中查看任務的執行狀況的,網址是http://localhost:8088/,界面以下:

Haddop07_YARN.png 

6.總結

本篇主要講述瞭如何在CentOS7下部署Hadoop,包括了Hadoop運行的支持組件以及Hadoop的配置,並簡單介紹了一下HDFS這個分佈式文件系統的命令及用法,最後經過運行簡單的MapReduce示例來演示如何運行MapReduce程序。


聲明:本文首發於本人我的微信訂閱號:zhoujinqiaoIT,其後會同時在本人的CSDN、51CTO及oschina三處博客發佈,本人會負責在此四處答疑。

qrcode_258.jpg

相關文章
相關標籤/搜索