歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

hadoop的偽分布式模式配置與安裝

hadoop的偽分布式模式配置與安裝

上次對hadoop單機模式中已經介紹了hadoop的基本安裝,本次將講解hadoop的偽分布式模式進行對hadoop的基本模擬部署。

安裝軟件:

系統:Linux 2.6.32-358.el6.x86_64

JDK:jdk-7u7-linux-i586.tar.gz

Hadoop版本:hadoop-0.20.2-cdh3u4.tar.gz

硬件環境:

三台主機:分別為

gdy192 192.168.61.192

gdy194 192.168.61.194

gdy195 192.168.61.195

本次部署模型為:

gdy192上部署:NameNode和JobTracker

gdy194上部署:SecondaryNameNode

gdy195上部署:DateNode TaskTracker

首先配置三台主機的hosts文件,以便之後不用ip而直接用別名進行相互訪問

首先在gdy192上配置一份信息。

[root@gdy192 /]#vim /etc/hosts

\

wq保存退出

將已經配置好的文件分別拷貝一份到其他兩台主機上

拷貝文件到gdy194上

[root@gdy192 ~]#scp /etc/hosts root@gdy194:/etc/

\

輸入gdy194的root密碼

\

拷貝成功。

去gdy194上查看/etc/hosts驗證是否是叫我們剛才修改的文件

[root@gdy194 /]#cat /etc/hosts

\

可以看到拷貝成功。

同樣再次拷貝一份到gdy195

在gdy192上輸入:

[root@gdy192 ~]#scp /etc/hosts root@gdy195:/etc/

\

這裡就不驗證了。

在gdy192上創建jDK和Hadoop的安裝目錄gd

[root@gdy192 /]#mkdir /usr/gd/ -pv

\

在gdy194上創建JDK和Hadoop的安裝目錄gd

\

在gdy195上創建JDK和Hadoop的安裝目錄gd

\

分別在gdy192,gdy194,gdy195上創建hduser用戶並設置密碼

在gdy192上

[root@gdy192 /]#useradd hduser

[root@gdy192 /]#passwd hduser

\

在gdy194上

[root@gdy194 /]#useradd hduser

[root@gdy194 /]#passwd hduser

\

在gdy195上

[root@gdy195 /]#useradd hduser

[root@gdy195 /]#passwd hduser

\

將之前准備好的軟件包拷貝到gdy192上,

如下圖是我已經拷貝好的文件

\

將這兩個文件解壓到之前創建的目錄/usr/gd/下面

[root@gdy192ftpftp]# tar -xf jdk-7u7-linux-i586.tar.gz -C /usr/gd/

[root@gdy192ftpftp]# tar -xf hadoop-0.20.2-cdh3u4.tar.gz -C /usr/gd/

\

使用ls /usr/gd/可以查看解壓後的文件

為jdk和hadoop創建軟鏈接在/usr/gd目錄下面

[root@gdy192ftpftp]# ln -s /usr/gd/jdk1.7.0_07/ /usr/gd/java

[root@gdy192ftpftp]# ln -s /usr/gd/hadoop-0.20.2-cdh3u4/ /usr/gd/hadoop

[root@gdy192ftpftp]# ll /usr/gd/

\

配置java和hadoop的環境變量

配置java的環境變量

[root@gdy192 /]#vim /etc/profile.d/java.sh

\

添加如下信息:

JAVA_HOME=/usr/gd/java

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOMEPATH

\

wq保存退出

配置hadoop的環境變量

[root@gdy192 /]#vim /etc/profile.d/hadoop.sh

\

添加如下信息:

HADOOP_HOME=/usr/gd/hadoop

PATH=$HADOOP_HOME/bin:$PATH

export HADOOP_HOMEPATH

\

wq保存退出

使用scp分別將這兩個文件拷貝到gdy194和gdy195機器上的/etc/profile.d/目錄下面。

拷貝到gdy194上

[root@gdy192 /]#scp /etc/profile.d/java.sh root@gdy194:/etc/profile.d/

[root@gdy192 /]#scp /etc/profile.d/hadoop.sh root@gdy194:/etc/profile.d/

\

拷貝到gdy195上

[root@gdy192 /]#scp /etc/profile.d/java.sh root@gdy195:/etc/profile.d/

[root@gdy192 /]#scp /etc/profile.d/hadoop.sh root@gdy195:/etc/profile.d/

\

修改/usr/gd/目錄下的所有文件的屬主和屬組為hduser

[root@gdy192 /]#chown -R hduser.hduser /usr/gd

\

在gdy192上切換到hduser用戶下面

[root@gdy192 /]#su – hduser

\

使用ssh-keygen和ssh-copy-id為gdy192能無密碼直接訪問gdy194和gdy195下的hduser用戶

命令:

先制作秘鑰文件

[hduser@gdy192 ~]$ssh-keygen -t rsa -P ''

\

回車

\

使用ssh-copy-id拷貝生成的公秘到gdy194機器上的hduser下,使gdy192能無密碼訪問gdy194

[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy194

\

輸入yes

\

輸入gdy194上的hduser的用戶密碼

\

使用ssh-copy-id拷貝生成的公秘到gdy195機器上的hduser下,使gdy192能無密碼訪問gdy195

[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy195

\

使用ssh-copy-id拷貝生成的公秘到gdy192機器上的hduser下,使gdy192能無密碼訪問gdy192

注意:即使是hadoop中使用的是ip進行調度訪問,即使是訪問自己的機器,如果不配置無密碼訪問,訪問時,一樣需要輸入密碼。這裡和之前配置hadoop單機模式時一樣。需要配置無密碼訪問。

[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy192

\

驗證gdy192是否已經不用輸密碼自己訪問gdy194

[hduser@gdy192 ~]$ssh gdy194 'date'

能不需要輸入密碼就顯示gdy194上的日期,則證明配置成功。

\

驗證gdy192是否已經不用輸密碼自己訪問gdy195

[hduser@gdy192 ~]$ssh gdy195 'date'

\

驗證gdy192是否已經不用輸入訪問自己gdy192

[hduser@gdy192 ~]$ssh gdy192 'date'

\

查看三台機器上的系統世界是否一樣

[hduser@gdy192 ~]$ssh gdy194 'date';ssh gdy195 'date';ssh gdy192 'date'

同步三個節點上的時間:

注意:這裡由於hadoop沒有權限修改時間,需要配置root能無密碼訪問gdy194和gdy195,gdy192。然後在統一設定時間。或者你自己設計其他方法保證時間同步。不過,時間同步在正在部署的環境上是必須要有的。如果這步你不配置,對於本次的hadoop偽分布式模式也沒有多大影響。不過建議還是配置下。

配置代碼如下。

[hduser@gdy192 ~]$exit

先退出hduser用戶

[root@gdy192 /]#cd ~

進入root用戶的家目錄

\

制作秘鑰文件

[root@gdy192 ~]#ssh-keygen -t rsa -P ''

\

拷貝秘鑰文件到gdy194,gdy195

[root@gdy192 ~]# ssh-copy-id -i.ssh/id_rsa.pub root@gdy194

\

[root@gdy192 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@gdy195

\

由於root自己訪問自己,每次都需要確認一次yes,所以用root用戶配置無密碼訪問自己沒有用。再說這裡的配置只是為了完成三台電腦的時間同步。

先檢查三台電腦的時間:

[root@gdy192 ~]#ssh gdy194 'date';ssh gdy195 'date';date

\

將三台電腦的時間設為同一時間:

[root@gdy192 ~]#ssh gdy194 'date 0929235415';ssh gdy195 'date 0929235415';date 0929235415

\

再次查看時間

[root@gdy192 ~]#ssh gdy194 'date';ssh gdy195 'date';date

\

可以看到這裡的時間就已經同步了。

用gdy192切換到hduser用戶下

[root@gdy192 ~]#su - hduser

\

再來查看三台電腦的時間:

[hduser@gdy192 ~]$ssh gdy194 'date';ssh gdy195 'date';ssh gdy192 date

\

接下來就要開始配置hadoop的配置文件了

進程hadoop的文件目錄裡面

[hduser@gdy192hadoop]$ cd /usr/gd/hadoop/conf/

\

由於在hadoop單機模式配置裡面已經對重要文件做個解釋。這裡不再重復解釋,詳情請見日志《hadoop的單機模式配置與安裝》

編輯masters文件

[hduser@gdy192conf]$ vim masters

將原來的localhost修改為gdy194

\

wq保存退出

注意:在上面就已經說明gdy194是用來做SecondaryNameNode的名稱節點的。

而masters就是配置第二名稱節點的。

 

編輯slaves文件

[hduser@gdy192conf]$ vim slaves

將原來的localhost修改為gdy195

\

wq保存退出

同樣這裡定義的是數據節點。

 

編輯文件core-site.xml

[hduser@gdy192conf]$ vim core-site.xml

直接添加如下信息

hadoop.tmp.dir

/hadoop/temp

 

 

fs.default.name

hdfs://gdy192:8020

 

\

wq保存退出

注意:這裡的fs.default.name定義的是主節點。由於每個節點上配置文件都一樣,所以這裡要使用ip或者別名來定義主節點的位置。

由於這裡定義了一個hadoop的緩存文件目錄,所以我們需要在三台電腦上分別創建這個緩存文件目錄。

切換到root用戶。

[hduser@gdy192conf]$ su – root

\

創建/hadoop目錄

[root@gdy192 ~]#mkdir /hadoop/

\

修改hadoop目錄的屬主和屬主為hduser,讓hduser能在這個目錄下有寫權限。

[root@gdy192 ~]#chown -R hduser.hduser /hadoop

\

同樣在gdy194和gdy195上創建一個這樣的目錄,並賦予hadoop權限。

在gdy194上

[root@gdy194 /]#mkdir /hadoop

[root@gdy194 /]#chown -R hduser.hduser /hadoop

\

在gdy195上

[root@gdy195 /]#mkdir hadoop

[root@gdy195 /]#chown -R hduser.hduser /hadoop

\

 

使用gdy192

退出當前用戶,返回之前的hduser用戶

[root@gdy192 ~]#exit

\

注意:這裡由於剛剛是直接登錄,所以現在能退出返回到之前的hduser用戶和hduser操作的目錄下面。

編輯文件 mapred-site.xml

[root@gdy192conf]# vim mapred-site.xml

之間添加如下信息。

mapred.job.tracker

gdy192:8021

 

\

wq保存退出

同樣,由於這裡定義的是JobTracker,而我們上部署就已經說明gdy192上存放jobTracker

所以這裡在單機模式下的localhost就要改成ip或者是ip別名。

 

編輯文件:hdfs-site.xml

[root@gdy192conf]# vim hdfs-site.xml

之間添加如下信息。

dfs.replication

1

The actualnumber of replications can be specified when the file iscreated.

 

 

dfs.data.dir

/hadoop/data

ture

Thedirectories where the datanode stores blocks.

 

 

dfs.name.dir

/hadoop/name

ture

Thedirectories where the namenode stores its persistentmatadata.

 

 

fs.checkpoint.dir

/hadoop/namesecondary

ture

Thedirectories where the secondarynamenode stores checkpoints.

 

\

wq保存退出

注意:這裡是跟想象的定義了hadoop中其他目錄的位置,如果這裡不定義,將會默認使用core-site.xml文件裡面定義的默認緩存目錄。

到這裡hadoop的配置文件就已經配置完成了。

接下來分別在gdy194上和gdy195上解壓jdk-7u7-linux-i586.tar.gz和hadoop-0.20.2-cdh3u4.tar.gz軟件包到/etc/gd/文件夾下面。並分別創建連接文件。(向上面之前操作一樣)

這由於重復操作。不再做解釋。

接下來拷貝剛剛在gdy192上已經配置好的文件到gdy194和gdy195的對應位置。

方法如下:

在gdy192上使用root用戶

拷貝文件到gdy194和gdy195上

[hduser@gdy192hadoop]$ scp /usr/gd/hadoop/conf/* gdy194:/usr/gd/hadoop/conf/

[hduser@gdy192 hadoop]$ scp /usr/gd/hadoop/conf/*gdy195:/usr/gd/hadoop/conf/

\

\

在gdy194和gdy195上分別使用root用戶給予/usr/gd/hadoop文件夾賦予hduser用戶權限。

在gdy194上

[root@gdy194 /]#chown hduser.hduser /usr/gd/ -R

[root@gdy194 /]#ll /usr/gd/

\

在gdy195上

[root@gdy195 /]#chown hduser.hduser /usr/gd/ -R

[root@gdy195 /]#ll /usr/gd/

\

到這裡hadoop的偽分布式模式已經全部配置完成。

啟動hadoop偽分布式模式

使用gdy192主機。重新登錄root用戶

\

切換到hduser用戶

\

格式化hadoop的文件系統HDFS

[hduser@gdy192 ~]$hadoop namenode -format

\

啟動hadoop

[hduser@gdy192 ~]$start-all.sh

\

這裡已經看到gdy192上成功啟動了NameNode和JobTracker兩個節點

查看gdy194上是否已經成功啟動SecondaryNameNode

[hduser@gdy192 ~]$ssh gdy194 'jps'

\

看到已經成功啟動

查看gdy195上是否已經成功啟動DataNode和TaskTracker

[hduser@gdy192 ~]$ssh gdy195 'jps'

\

到這裡已經看到都成功啟動

使用

[hduser@gdy192 ~]$netstat –nlpt

可以查看hadoop的端口

\

其中50030端口為hadoop的對外web網址端口。可以查看hadoop的MapReduce作業的相關信息

50070為hadoop的Namenode節點信息。

查看hadoop的MapReduce作業信息

可以在浏覽器上訪問:http://192.168.61.192:50030/jobtracker.jsp

如下圖:

\

查看hadoop的NameNode節點信息

可以在浏覽器上訪問:http://192.168.61.192:50070/dfshealth.jsp

如下圖:

\

 

由於SecondaryNameNode部署在gdy194上。

查看gdy194上的Hadoop的進程端口信息。

[hduser@gdy192 ~]$ssh gdy194 'netstat -nlpt'

\

其中50090端口為hadoop的SecondaryNameNode的web對外端口

可以使用:http://192.168.61.194:50090/status.jsp

來訪問SecondaryNameNode的對外web端口。

\

 

同樣,由於DataNode和TaskTracker部署在gdy195上。

在gdy192上查看gdy195上的端口信息

[hduser@gdy192 ~]$ssh gdy195 'netstat -nlpt'

\

50060為hadoop的TaskTracker的節點信息

50075為hadoop的DateNoe的節點信息

分別通過以下地址可訪問:

http://192.168.61.195:50075/

http://192.168.61.195:50060/tasktracker.jsp

\

\

 

 

注意:在實際部署中以上web的訪問端口前的ip地址為你實際部署的ip地址,這裡我是按照我自己部署的ip地址列舉出來的。

 

在hadoop上做一次hadoop的單詞統計

使用機器gdy192

在hadoop的DNSF文件系統上新建一個text文件夾

\

查看已經建立好的文件夾

[hduser@gdy192 ~]$hadoop fs -ls /

\

上傳一個系統文件到test文件夾下

[hduser@gdy192 ~]$hadoop fs -put /etc/hosts /test

\

查看已經上傳的文件

[hduser@gdy192 ~]$hadoop fs -ls /test

\

對hadoop目錄中的test所有文件做單詞統計,統計結果輸出在word文件夾下

[hduser@gdy192 ~]$hadoop jar /usr/gd/hadoop/hadoop-examples-0.20.2-cdh3u4.jar wordcount /test /word

在這個過程中可以通過

http://192.168.61.192:50030/jobtracker.jsp來查看作業進行的情況。

\

下圖就是剛剛執行的作業完成後的顯示

\

查看單詞統計結果輸出目錄

[hduser@gdy192 ~]$hadoop fs -ls /word

\

查看結果輸出文件part-r-00000可以看到剛才對test目錄下的文件做單詞統計的統計結果

[hduser@gdy192 ~]$hadoop fs -cat /word/part-r-00000

\

這就是剛才統計的的統計結果。

到本文檔位置hadoop的單機模式和hadoop的偽分布模式安裝和部署就已經完成了。

其實hadoop的單獨安裝後一般都會再安裝hbase來原理hadoop。這樣好方便存儲數據,和管理。對於在hadoop的單機模式上怎麼部署hbase和在hadoop的偽分布式模式下如何部署hbase。將在之後陸續公布。

Copyright © Linux教程網 All Rights Reserved