溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

開發(fā)人員學(xué)Linux(14):CentOS7安裝配置大數(shù)據(jù)平臺(tái)Hadoop2.9.0

發(fā)布時(shí)間:2020-07-02 12:32:25 來源:網(wǎng)絡(luò) 閱讀:18953 作者:周金橋 欄目:大數(shù)據(jù)

1.前言

“大云物移”是當(dāng)年很火熱的一個(gè)話題,分別指大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng),其中大數(shù)據(jù)領(lǐng)域談?wù)摰枚嗑褪荋adoop。當(dāng)然Hadoop不代表大數(shù)據(jù),而是大數(shù)據(jù)處理領(lǐng)域的一個(gè)比較有名的開源框架而已,通常說的大數(shù)據(jù)包含了大數(shù)據(jù)的存放、大數(shù)據(jù)的分析處理及大數(shù)據(jù)的查詢展示,本篇提到的Hadoop只不過是在其中的大數(shù)據(jù)的分析處理環(huán)節(jié)起作用,Apache提供了一個(gè)開源全家桶,包括了Hadoop、HBase、Zookeeper、Spark、Hive及Pig等一些框架。不過限于篇幅,本篇只介紹Hadoop的偽分布式部署,包括MapReduce和HDFS。

2.準(zhǔn)備

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

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

Hadoop文件:hadoop-2.9.0.tar.gz

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

3.安裝

3.1安裝Oracle JDK

3.1.1卸載Open JDK

雖然Open JDK是JDK的開源實(shí)現(xiàn),不過個(gè)人還是比較喜歡Oracle JDK,可能覺得它出身更正統(tǒng)一些吧。因此首先檢查服務(wù)器上是否安裝了Open JDK,運(yùn)行命令:

rpm -qa | grep jdk

如果服務(wù)器已經(jīng)安裝了Open JDK,采用下面的方式卸載掉Open JDK,如下圖所示:

開發(fā)人員學(xué)Linux(14):CentOS7安裝配置大數(shù)據(jù)平臺(tái)Hadoop2.9.0 

3.1.2安裝Oracle JDK

可能有些人對(duì)Oracle JDK感覺到有點(diǎn)別扭,至少本人就是如此,當(dāng)年Sun公司推出了Java但由于經(jīng)營不善被Oracle收購,所以以前經(jīng)常說的Sun JDK現(xiàn)在改口稱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目錄下了。

下面就對(duì)環(huán)境變量進(jìn)行設(shè)置,因?yàn)樵贚inux中存在著交互式shell和非交互式shell,交互式shell顧名思義就是在與用戶的交互過程中執(zhí)行的shell,通常是通過SSH登錄到Linux系統(tǒng)之后輸入shell腳本或命令等待用戶輸入或者確認(rèn)然后執(zhí)行的shell,而非交互式shell則是無需用戶干預(yù)的shell,如一些service的啟動(dòng)等。交互式shell從/etc/profile中讀取所有用戶的環(huán)境變量設(shè)置,非交互式shell則從/etc/bashrc中讀取所有用戶的環(huán)境變量設(shè)置。因此可能會(huì)出現(xiàn)在交互式環(huán)境下執(zhí)行shell腳本沒有問題,在非交互式環(huán)境下執(zhí)行shell腳本則會(huì)出現(xiàn)找不到環(huán)境變量配置信息的問題。

為保險(xiǎn)起見,我們?cè)?etc/profile和/etc/bashrc都配置Java相關(guān)的環(huán)境變量,將添加的內(nèi)容放在原文件的末尾,添加的內(nèi)容如下:

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 ~]#

注意,要想讓我們的配置馬上生效,應(yīng)該執(zhí)行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 ~]#

畢竟每次執(zhí)行hadoop的時(shí)候帶著這么一長串命令不是很方便,尤其是需要手動(dòng)輸入的時(shí)候,我們依然可以借鑒配置JAVA環(huán)境參數(shù)的方式將Hadoop相關(guān)的環(huán)境參數(shù)配置到環(huán)境變量配置文件source /etc/profile和source /etc/bashrc中,在兩個(gè)文件的末尾分別增加如下配置:

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


添加完內(nèi)容保存,最后別忘了執(zhí)行如下命令刷新環(huán)境變量信息:

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

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

這時(shí)候再執(zhí)行hadoop的相關(guān)命令就無需帶路徑信息了,如下:

[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用戶配置

為便于管理和維護(hù),我們單獨(dú)創(chuàng)建一個(gè)系統(tǒng)賬戶用來運(yùn)行hadoop有關(guān)的腳本和任務(wù),這個(gè)系統(tǒng)賬戶名為hadoop,通過以下腳本創(chuàng)建:

useradd hadoop -s /bin/bash –m

上面的命令創(chuàng)建了名為hadoop的用戶和用戶組,并且nginx用戶無法登錄系統(tǒng)(-s /sbin/nologin限制),可以通過id命令查看:

[root@hadoop ~]# id hadoop

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

通過上面的命令創(chuàng)建的用戶是沒有密碼的,需要用passwd來設(shè)置密碼:

[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.


因?yàn)橛袝r(shí)候需要hadoop這個(gè)用戶執(zhí)行一些高權(quán)限的命令,因此給予它sudo的權(quán)限,打開/etc/sudoers文件,找到“root    ALL=(ALL)       ALL”那一行,在下面添加一行:

hadoop    ALL=(ALL)       ALL

然后保存文件(記住如果是用vim等編輯器編輯,最終保存的時(shí)候要使用”:wq!”命令來強(qiáng)制保存到這個(gè)只讀文件)。修改的結(jié)果如下圖所示:

開發(fā)人員學(xué)Linux(14):CentOS7安裝配置大數(shù)據(jù)平臺(tái)Hadoop2.9.0 

4.2免登錄配置

雖然在本篇講述的是Hadoop的偽分布式部署,但是中間還有一些分布式的操作,這就要求能夠用ssh來登錄,注意這里的ssh不是Java里面的SSH(Servlet+Spring+Hibernate),這里講的SSH是Secure Shell 的縮寫,是用于Linux服務(wù)器之間遠(yuǎn)程登錄的服務(wù)協(xié)議。

如果當(dāng)前是用root用戶登錄,那么就要切換為hadoop用戶:

[root@hadoop hadoop]# su hadoop

[hadoop@hadoop ~]$ cd ~

[hadoop@hadoop ~]$ pwd

/home/hadoop

可以看出hadoop用戶的工作路徑為/home/hadoop,然后我們用ssh登錄本機(jī),第一次登錄的時(shí)候會(huì)提示是否繼續(xù)登錄,然后輸入”yes”,接著會(huì)提示我們輸入當(dāng)前用于ssh登錄的用戶(這里是hadoop)的在對(duì)應(yīng)服務(wù)器上的密碼(這里是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.

經(jīng)過上述操作后,創(chuàng)建了這個(gè)目錄/home/hadoop/.ssh和該目錄下的known_hosts文件。

這樣每次登錄都會(huì)提示輸入密碼,但在Hadoop運(yùn)行過程中會(huì)通過shell無交互的形式在遠(yuǎn)程服務(wù)器上執(zhí)行命令,因此需要設(shè)置成免密碼登錄才行。我們需要通過通過如下命令創(chuàng)建密鑰文件(一路回車即可):

[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 +           |

|==.              |

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

然后將密鑰文件的內(nèi)容添加到authorized_keys文件,同時(shí)授予600的權(quán)限。

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

[hadoop@hadoop .ssh]$ chmod 600 authorized_keys

這時(shí),再使用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篇關(guān)于git用戶免密碼登錄時(shí)也講到了類似的操作,而且當(dāng)時(shí)也講了git文件傳輸也是使用ssh協(xié)議的。

4.3hadoop的配置

4.3.1更改hadoop安裝目錄的所有者

首先檢查一下/usr/local/hadoop-2.9.0這個(gè)hadoop的安裝目錄的所有者和用戶組是否是hadoop,如果不是就需要通過chown來設(shè)置:

[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:

再次查看,就可以看到命令執(zhí)行成功了。

[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目錄下,主要有幾個(gè)配置文件:

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

其中,后兩個(gè)主要是跟YARN有關(guān)的配置。

將core-site.xml更改為如下內(nèi)容:

<configuration>

    <property>

        <name>fs.defaultFS</name>

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

    </property>

</configuration>

然后再將hdfs-site.xml更改為如下內(nèi)容:

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

</configuration>

5.檢驗(yàn)配置

5.1NameNode格式化

經(jīng)過上面的配置,Hadoop是配置成功了,但是并不能工作,還需要進(jìn)行初始化操作,因?yàn)槲覀円呀?jīng)配置了Hadoop的相關(guān)環(huán)境變量,因此我們可以直接執(zhí)行如下命令:

hdfs namenode –format

如果沒有問題的話,可以看到如下輸出:

開發(fā)人員學(xué)Linux(14):CentOS7安裝配置大數(shù)據(jù)平臺(tái)Hadoop2.9.0 

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

5.2開啟 NameNode 和 DataNode 守護(hù)進(jìn)程

通過start-dfs.sh命令開啟NameNode 和 DataNode 守護(hù)進(jìn),第一次執(zhí)行時(shí)會(huì)詢問是否連接,輸入”yes”即可(因?yàn)橐呀?jīng)配置了ssh免密碼登錄),如下所示(請(qǐng)注意一定要用創(chuàng)建的hadoop用戶來運(yùn)行,如果不是hadoop請(qǐng)記得用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這個(gè)java提供的工具來查看啟動(dòng)情況:

[hadoop@hadoop hadoop]$ jps

11441 Jps

11203 SecondaryNameNode

10903 NameNode

11004 DataNode

若啟動(dòng)成功會(huì)出現(xiàn)上述的進(jìn)程,如果沒有NameNode和DataNode進(jìn)程請(qǐng)檢查配置情況,或者通過/usr/local/hadoop-2.9.0/logs下的日志來查看配置錯(cuò)誤。

這時(shí)可以在瀏覽器中輸入http://localhost:50070/查看NameNode和DataNode的信息以及HDFS的信息,界面如下:

開發(fā)人員學(xué)Linux(14):CentOS7安裝配置大數(shù)據(jù)平臺(tái)Hadoop2.9.0 

如果虛擬機(jī)采用了橋接模式,也可以在虛擬機(jī)外查看,像本人所使用的CentOS7,需要注意兩點(diǎn):

1.在/etc/sysconfig/selinux文件中將“SELINUX=enforcing”改為” SELINUX=disabled”;

2.通過執(zhí)行systemctl disable firewalld來禁用防火墻。

5.3執(zhí)行WordCount程序

Hadoop中的WordCount如同其它編程語言中的Hello World程序一樣,就是通過一個(gè)簡(jiǎn)單的程序來程序是如何編寫的。

5.3.1 HDFS簡(jiǎn)介

要想運(yùn)行WordCount就需要使用HDFS,HDFS是Hadoop的基石。可以這么理解,Hadoop要處理大量的數(shù)據(jù)文件,這些數(shù)據(jù)文件需要一個(gè)可靠的方式來存儲(chǔ),在即使出現(xiàn)一些機(jī)器的硬盤損壞的情況下,數(shù)據(jù)文件中保存的數(shù)據(jù)仍然不會(huì)丟失。在數(shù)據(jù)量比較小的時(shí)候,磁盤陣列(Redundant Arrays of Independent Disks,RAID)可以做到這一點(diǎn),現(xiàn)在是HDFS用軟件的方式實(shí)現(xiàn)了這個(gè)功能。

HDFS也提供了一些命令用于對(duì)文件系統(tǒng)的操作,我們知道Linux本身提供了一些對(duì)文件系統(tǒng)的操作,比如mkdir、rm、mv等,HDFS中也提供同樣的操作,不過執(zhí)行方式上有一些變化,比如mkdir命令在HDFS中執(zhí)行應(yīng)該寫成 hdfs dfs –mkdir,同樣的,ls命令在HDFS下執(zhí)行要寫成hdfs dfs –ls。

下面是一些HDFS命令:

級(jí)聯(lián)創(chuàng)建HDFS目錄:hdfs dfs -mkdir -p /user/haddop

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

創(chuàng)建HDFS目錄:hdfs dfs -mkdir /input

查看HDFS目錄:hdfs dfs -ls /

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

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

級(jí)聯(lián)創(chuàng)建HDFS目錄:hdfs dfs -mkdir -p /user/hadoop/input

注意:在HDFS中創(chuàng)建的目錄也僅支持在HDFS中查看,在HDFS之外(比如在Linux系統(tǒng)中的命令行下)是看不到這些目錄存在的。重要的事情多重復(fù)幾遍:請(qǐng)按照本文中的3.2節(jié)提示將Hadoop安裝路徑信息配置到環(huán)境變量中。

5.3.2執(zhí)行WordCount程序

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

接著在HDFS中創(chuàng)建目錄:hdfs dfs -mkdir -p /user/hadoop/input

然后指定要分析的數(shù)據(jù)源,可以將一些文本數(shù)據(jù)放到剛剛創(chuàng)建的HDFS系統(tǒng)下的input目錄下,為了簡(jiǎn)單起見,這里就直接將hadoop安裝路徑下的一些用于配置的xml放在input目錄下:

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

這時(shí)可以通過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

當(dāng)然,也可以在Hadoop提供的Web界面下查看,在瀏覽器輸入網(wǎng)址http://localhost:50070/explorer.html然后輸入HDFS下的文件路徑,如下圖所示:

開發(fā)人員學(xué)Linux(14):CentOS7安裝配置大數(shù)據(jù)平臺(tái)Hadoop2.9.0 

然后執(zhí)行MapReduce作業(yè),命令如下:

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

這個(gè)作業(yè)的作用的將/user/hadoop/input/這個(gè)HDFS目錄下的文件中包含有dfs開頭的單詞找出來并統(tǒng)計(jì)出現(xiàn)的次數(shù),如果程序執(zhí)行沒有錯(cuò)誤,我們將會(huì)在/user/hadoop/output/這個(gè)HDFS目錄下看到兩個(gè)文件:

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文件系統(tǒng)中取出來放在本地:

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

上面的命令就是將HDFS文件路徑/user/hadoop/output中的所有內(nèi)容都拷貝到/home/hadoop/output下,這是就可以用熟悉的Linux命名查看文件內(nèi)容了。


注意:

1、在程序執(zhí)行時(shí),/user/hadoop/output這個(gè)HDFS目錄不能存在,否則再次執(zhí)行時(shí)會(huì)報(bào)錯(cuò),這是可以重新指定輸出目錄或者刪除這個(gè)目錄即可,如執(zhí)行hdfs dfs -rm -f -r /user/hadoop/output命令。

2、如果需要關(guān)閉Hadoop,請(qǐng)執(zhí)行stop-dfs.sh命名即可。

3、Hadoop的NameNode和DataNode節(jié)點(diǎn)的格式化成功執(zhí)行一次之后,下次執(zhí)行時(shí)不必執(zhí)行。

5.4啟用YARN模式

YARN,全稱是Yet Another Resource Negotiator,YARN是從 MapReduce 中分離出來的,負(fù)責(zé)資源管理與任務(wù)調(diào)度。YARN 運(yùn)行于 MapReduce 之上,提供了高可用性、高擴(kuò)展性。上述通過 tart-dfs.sh 啟動(dòng) Hadoop,僅僅是啟動(dòng)了 MapReduce 環(huán)境,我們可以啟動(dòng) YARN ,讓 YARN 來負(fù)責(zé)資源管理與任務(wù)調(diào)度。

要想使用YARN,首先要通過mapred-site.xml來配置,默認(rèn)情況在/usr/local/hadoop-2.9.0/etc/hadoop是不存在這個(gè)文件的,但是有一個(gè)名為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

然后修改文件內(nèi)容如下:

<configuration>

    <property>

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

        <value>yarn</value>

    </property>

</configuration>


同樣將同一目錄下的yarn-site.xml文件內(nèi)容修改如下:

<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來啟動(dòng)YARN和通過stop-yarn.sh來停止YARN了。


啟動(dòng)YARN:

請(qǐng)?jiān)诖_定已經(jīng)正確執(zhí)行過start-dfs.sh后再執(zhí)行執(zhí)行如下命令:

start-yarn.sh

為了能在Web中查看任務(wù)運(yùn)行情況,需要開啟歷史服務(wù)器,執(zhí)行如下命令:

mr-jobhistory-daemon.sh start historyserver

這時(shí)可通過jps查看啟動(dòng)情況:

[hadoop@hadoop ~]$ jps

7559 JobHistoryServer

8039 DataNode

8215 SecondaryNameNode

8519 NodeManager

8872 Jps

8394 ResourceManager

7902 NameNode

啟動(dòng)YARN之后是可以在Web界面中查看任務(wù)的執(zhí)行情況的,網(wǎng)址是http://localhost:8088/,界面如下:

開發(fā)人員學(xué)Linux(14):CentOS7安裝配置大數(shù)據(jù)平臺(tái)Hadoop2.9.0 

6.總結(jié)

本篇主要講述了如何在CentOS7下部署Hadoop,包括了Hadoop運(yùn)行的支持組件以及Hadoop的配置,并簡(jiǎn)單介紹了一下HDFS這個(gè)分布式文件系統(tǒng)的命令及用法,最后通過運(yùn)行簡(jiǎn)單的MapReduce示例來演示如何運(yùn)行MapReduce程序。


聲明:本文首發(fā)于本人個(gè)人微信訂閱號(hào):zhoujinqiaoIT,其后會(huì)同時(shí)在本人的CSDN、51CTO及oschina三處博客發(fā)布,本人會(huì)負(fù)責(zé)在此四處答疑。

開發(fā)人員學(xué)Linux(14):CentOS7安裝配置大數(shù)據(jù)平臺(tái)Hadoop2.9.0

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI