精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hadoop集群系列5:Hadoop安裝配置

開(kāi)發(fā) 開(kāi)發(fā)工具 大數(shù)據(jù) Hadoop
本文為Hadoop集群系列第五篇,SecureCRT是一款支持SSH(SSH1和SSH2)的終端仿真程序,同時(shí)支持Telnet和rlogin協(xié)議。

1、集群部署介紹

1.1 Hadoop簡(jiǎn)介

  Hadoop是Apache軟件基金會(huì)旗下的一個(gè)開(kāi)源分布式計(jì)算平臺(tái)。以Hadoop分布式文件系統(tǒng)(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的開(kāi)源實(shí)現(xiàn))為核心的Hadoop為用戶(hù)提供了系統(tǒng)底層細(xì)節(jié)透明的分布式基礎(chǔ)架構(gòu)。

  對(duì)于Hadoop的集群來(lái)講,可以分成兩大類(lèi)角色:Master和Salve。一個(gè)HDFS集群是由一個(gè)NameNode和若干個(gè)DataNode組成的。其中NameNode作為主服務(wù)器,管理文件系統(tǒng)的命名空間和客戶(hù)端對(duì)文件系統(tǒng)的訪(fǎng)問(wèn)操作;集群中的DataNode管理存儲(chǔ)的數(shù)據(jù)。MapReduce框架是由一個(gè)單獨(dú)運(yùn)行在主節(jié)點(diǎn)上的JobTracker和運(yùn)行在每個(gè)集群從節(jié)點(diǎn)的TaskTracker共同組成的。主節(jié)點(diǎn)負(fù)責(zé)調(diào)度構(gòu)成一個(gè)作業(yè)的所有任務(wù),這些任務(wù)分布在不同的從節(jié)點(diǎn)上。主節(jié)點(diǎn)監(jiān)控它們的執(zhí)行情況,并且重新執(zhí)行之前的失敗任務(wù);從節(jié)點(diǎn)僅負(fù)責(zé)由主節(jié)點(diǎn)指派的任務(wù)。當(dāng)一個(gè)Job被提交時(shí),JobTracker接收到提交作業(yè)和配置信息之后,就會(huì)將配置信息等分發(fā)給從節(jié)點(diǎn),同時(shí)調(diào)度任務(wù)并監(jiān)控TaskTracker的執(zhí)行。

  從上面的介紹可以看出,HDFS和MapReduce共同組成了Hadoop分布式系統(tǒng)體系結(jié)構(gòu)的核心。HDFS在集群上實(shí)現(xiàn)分布式文件系統(tǒng),MapReduce在集群上實(shí)現(xiàn)了分布式計(jì)算和任務(wù)處理。HDFS在MapReduce任務(wù)處理過(guò)程中提供了文件操作和存儲(chǔ)等支持,MapReduce在HDFS的基礎(chǔ)上實(shí)現(xiàn)了任務(wù)的分發(fā)、跟蹤、執(zhí)行等工作,并收集結(jié)果,二者相互作用,完成了Hadoop分布式集群的主要任務(wù)。

1.2 環(huán)境說(shuō)明

  集群中包括4個(gè)節(jié)點(diǎn):1個(gè)Master,3個(gè)Salve,節(jié)點(diǎn)之間局域網(wǎng)連接,可以相互ping通,具體集群信息可以查看"Hadoop集群(第2期)"。節(jié)點(diǎn)IP地址分布如下:

機(jī)器名稱(chēng)

IP地址

Master.Hadoop

192.168.1.2

Salve1.Hadoop 

192.168.1.3 

Salve2.Hadoop 

192.168.1.4 

Salve3.Hadoop 

192.168.1.5 

  四個(gè)節(jié)點(diǎn)上均是CentOS6.0系統(tǒng),并且有一個(gè)相同的用戶(hù)hadoop。Master機(jī)器主要配置NameNode和JobTracker的角色,負(fù)責(zé)總管分布式數(shù)據(jù)和分解任務(wù)的執(zhí)行;3個(gè)Salve機(jī)器配置DataNode和TaskTracker的角色,負(fù)責(zé)分布式數(shù)據(jù)存儲(chǔ)以及任務(wù)的執(zhí)行。其實(shí)應(yīng)該還應(yīng)該有1個(gè)Master機(jī)器,用來(lái)作為備用,以防止Master服務(wù)器宕機(jī),還有一個(gè)備用馬上啟用。后續(xù)經(jīng)驗(yàn)積累一定階段后補(bǔ)上一臺(tái)備用Master機(jī)器。

1.3 網(wǎng)絡(luò)配置

  Hadoop集群要按照1.2小節(jié)表格所示進(jìn)行配置,我們?cè)?quot;Hadoop集群(第1期)"的CentOS6.0安裝過(guò)程就按照提前規(guī)劃好的主機(jī)名進(jìn)行安裝和配置。如果實(shí)驗(yàn)室后來(lái)人在安裝系統(tǒng)時(shí),沒(méi)有配置好,不要緊,沒(méi)有必要重新安裝,在安裝完系統(tǒng)之后仍然可以根據(jù)后來(lái)的規(guī)劃對(duì)機(jī)器的主機(jī)名進(jìn)行修改。

  下面的例子我們將以Master機(jī)器為例,即主機(jī)名為"Master.Hadoop",IP為"192.168.1.2"進(jìn)行一些主機(jī)名配置的相關(guān)操作。其他的Slave機(jī)器以此為依據(jù)進(jìn)行修改。

  1)查看當(dāng)前機(jī)器名稱(chēng)

  用下面命令進(jìn)行顯示機(jī)器名稱(chēng),如果跟規(guī)劃的不一致,要按照下面進(jìn)行修改。

hostname

  上圖中,用"hostname"查"Master"機(jī)器的名字為"Master.Hadoop",與我們預(yù)先規(guī)劃的一致。

  2)修改當(dāng)前機(jī)器名稱(chēng)

  假定我們發(fā)現(xiàn)我們的機(jī)器的主機(jī)名不是我們想要的,通過(guò)對(duì)"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值,改成我們規(guī)劃的名稱(chēng)。

  這個(gè)"/etc/sysconfig/network"文件是定義hostname和是否利用網(wǎng)絡(luò)的不接觸網(wǎng)絡(luò)設(shè)備的對(duì)系統(tǒng)全體定義的文件。

  設(shè)定形式:設(shè)定值=值

  "/etc/sysconfig/network"的設(shè)定項(xiàng)目如下:

 

  1. NETWORKING 是否利用網(wǎng)絡(luò) 
  2. GATEWAY 默認(rèn)網(wǎng)關(guān) 
  3. IPGATEWAYDEV 默認(rèn)網(wǎng)關(guān)的接口名 
  4. HOSTNAME 主機(jī)名 
  5. DOMAIN 域名 

 

  用下面命令進(jìn)行修改當(dāng)前機(jī)器的主機(jī)名(備注:修改系統(tǒng)文件一般用root用戶(hù))

vim /etc/sysconfig/network

  通過(guò)上面的命令我們從"/etc/sysconfig/network"中找到"HOSTNAME"進(jìn)行修改,查看內(nèi)容如下:

    3)修改當(dāng)前機(jī)器IP

    假定我們的機(jī)器連IP在當(dāng)時(shí)安裝機(jī)器時(shí)都沒(méi)有配置好,那此時(shí)我們需要對(duì)"ifcfg-eth0"文件進(jìn)行配置,該文件位于"/etc/sysconfig/network-scripts"文件夾下。

  在這個(gè)目錄下面,存放的是網(wǎng)絡(luò)接口(網(wǎng)卡)的制御腳本文件(控制文件),ifcfg- eth0是默認(rèn)的第一個(gè)網(wǎng)絡(luò)接口,如果機(jī)器中有多個(gè)網(wǎng)絡(luò)接口,那么名字就將依此類(lèi)推ifcfg-eth1,ifcfg-eth2,ifcfg- eth3,……。

  這里面的文件是相當(dāng)重要的,涉及到網(wǎng)絡(luò)能否正常工作。

  設(shè)定形式:設(shè)定值=值

  設(shè)定項(xiàng)目項(xiàng)目如下:

DEVICE 接口名(設(shè)備,網(wǎng)卡)

BOOTPROTO IP的配置方法(static:固定IP, dhcpHCP, none:手動(dòng))

HWADDR MAC地址

ONBOOT 系統(tǒng)啟動(dòng)的時(shí)候網(wǎng)絡(luò)接口是否有效(yes/no)

TYPE 網(wǎng)絡(luò)類(lèi)型(通常是Ethemet)

NETMASK 網(wǎng)絡(luò)掩碼

IPADDR IP地址

IPV6INIT IPV6是否有效(yes/no)

GATEWAY 默認(rèn)網(wǎng)關(guān)IP地址

  查看"/etc/sysconfig/network-scripts/ifcfg-eth0"內(nèi)容,如果IP不復(fù)核,就行修改。

  如果上圖中IP與規(guī)劃不相符,用下面命令進(jìn)行修改:

vim /etc/sysconfig/network-scripts/ifcgf-eth0

  修改完之后可以用"ifconfig"進(jìn)行查看。

  4)配置hosts文件(必須)

  "/etc/hosts"這個(gè)文件是用來(lái)配置主機(jī)將用的DNS服務(wù)器信息,是記載LAN內(nèi)接續(xù)的各主機(jī)的對(duì)應(yīng)[HostName和IP]用的。當(dāng)用戶(hù)在進(jìn)行網(wǎng)絡(luò)連接時(shí),首先查找該文件,尋找對(duì)應(yīng)主機(jī)名(或域名)對(duì)應(yīng)的IP地址。

  我們要測(cè)試兩臺(tái)機(jī)器之間知否連通,一般用"ping 機(jī)器的IP",如果想用"ping 機(jī)器的主機(jī)名"發(fā)現(xiàn)找不見(jiàn)該名稱(chēng)的機(jī)器,解決的辦法就是修改"/etc/hosts"這個(gè)文件,通過(guò)把LAN內(nèi)的各主機(jī)的IP地址和HostName的一一對(duì)應(yīng)寫(xiě)入這個(gè)文件的時(shí)候,就可以解決問(wèn)題。

  例如:機(jī)器為"Master.Hadoop:192.168.1.2"對(duì)機(jī)器為"Salve1.Hadoop:192.168.1.3"用命令"ping"記性連接測(cè)試。測(cè)試結(jié)果如下:

   從上圖中的值,直接對(duì)IP地址進(jìn)行測(cè)試,能夠ping通,但是對(duì)主機(jī)名進(jìn)行測(cè)試,發(fā)現(xiàn)沒(méi)有ping通,提示"unknown host——未知主機(jī)",這時(shí)查看"Master.Hadoop"的"/etc/hosts"文件內(nèi)容。

  發(fā)現(xiàn)里面沒(méi)有"192.168.1.3 Slave1.Hadoop"內(nèi)容,故而本機(jī)器是無(wú)法對(duì)機(jī)器的主機(jī)名為"Slave1.Hadoop" 解析。

  在進(jìn)行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有機(jī)器的IP與主機(jī)名,這樣Master與所有的Slave機(jī)器之間不僅可以通過(guò)IP進(jìn)行通信,而且還可以通過(guò)主機(jī)名進(jìn)行通信。所以在所有的機(jī)器上的"/etc/hosts"文件末尾中都要添加如下內(nèi)容:

192.168.1.2 Master.Hadoop

192.168.1.3 Slave1.Hadoop

192.168.1.4 Slave2.Hadoop

192.168.1.5 Slave3.Hadoop

  用以下命令進(jìn)行添加:

vim /etc/hosts

  添加結(jié)果如下:

  現(xiàn)在我們?cè)谶M(jìn)行對(duì)機(jī)器為"Slave1.Hadoop"的主機(jī)名進(jìn)行ping通測(cè)試,看是否能測(cè)試成功。

  從上圖中我們已經(jīng)能用主機(jī)名進(jìn)行ping通了,說(shuō)明我們剛才添加的內(nèi)容,在局域網(wǎng)內(nèi)能進(jìn)行DNS解析了,那么現(xiàn)在剩下的事兒就是在其余的Slave機(jī)器上進(jìn)行相同的配置。然后進(jìn)行測(cè)試。(備注:當(dāng)設(shè)置SSH無(wú)密碼驗(yàn)證后,可以"scp"進(jìn)行復(fù)制,然后把原來(lái)的"hosts"文件執(zhí)行覆蓋即可。)

1.4 所需軟件

1)JDK軟件

    下載地址:http://www.oracle.com/technetwork/java/javase/index.html

    JDK版本:jdk-6u31-linux-i586.bin

2)Hadoop軟件

    下載地址:http://hadoop.apache.org/common/releases.html

    Hadoop版本:hadoop-1.0.0.tar.gz

1.5 VSFTP上傳

  在"Hadoop集群(第3期)"講了VSFTP的安裝及配置,如果沒(méi)有安裝VSFTP可以按照該文檔進(jìn)行安裝。如果安裝好了,就可以通過(guò)FlashFXP.exe軟件把我們下載的JDK6.0和Hadoop1.0軟件上傳到"Master.Hadoop:192.168.1.2"服務(wù)器上。

  剛才我們用一般用戶(hù)(hadoop)通過(guò)FlashFXP軟件把所需的兩個(gè)軟件上傳了跟目下,我們通過(guò)命令查看下一下是否已經(jīng)上傳了。

    從圖中,我們的所需軟件已經(jīng)準(zhǔn)備好了。

2、SSH無(wú)密碼驗(yàn)證配置

  Hadoop運(yùn)行過(guò)程中需要管理遠(yuǎn)端Hadoop守護(hù)進(jìn)程,在Hadoop啟動(dòng)以后,NameNode是通過(guò)SSH(Secure Shell)來(lái)啟動(dòng)和停止各個(gè)DataNode上的各種守護(hù)進(jìn)程的。這就必須在節(jié)點(diǎn)之間執(zhí)行指令的時(shí)候是不需要輸入密碼的形式,故我們需要配置SSH運(yùn)用無(wú)密碼公鑰認(rèn)證的形式,這樣NameNode使用SSH無(wú)密碼登錄并啟動(dòng)DataName進(jìn)程,同樣原理,DataNode上也能使用SSH無(wú)密碼登錄到NameNode。

2.1 安裝和啟動(dòng)SSH協(xié)議

  在"Hadoop集群(第1期)"安裝CentOS6.0時(shí),我們選擇了一些基本安裝包,所以我們需要兩個(gè)服務(wù):ssh和rsync已經(jīng)安裝了。可以通過(guò)下面命令查看結(jié)果顯示如下:

rpm –qa | grep openssh

rpm –qa | grep rsync

  假設(shè)沒(méi)有安裝ssh和rsync,可以通過(guò)下面命令進(jìn)行安裝。

yum install ssh 安裝SSH協(xié)議

yum install rsync (rsync是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過(guò)LAN/WAN快速同步多臺(tái)主機(jī)間的文件)

service sshd restart 啟動(dòng)服務(wù)

  確保所有的服務(wù)器都安裝,上面命令執(zhí)行完畢,各臺(tái)機(jī)器之間可以通過(guò)密碼驗(yàn)證相互登。

2.2 配置Master無(wú)密碼登錄所有Salve

  1)SSH無(wú)密碼原理

  Master(NameNode | JobTracker)作為客戶(hù)端,要實(shí)現(xiàn)無(wú)密碼公鑰認(rèn)證,連接到服務(wù)器Salve(DataNode | Tasktracker)上時(shí),需要在Master上生成一個(gè)密鑰對(duì),包括一個(gè)公鑰和一個(gè)私鑰,而后將公鑰復(fù)制到所有的Slave上。當(dāng)Master通過(guò)SSH連接Salve時(shí),Salve就會(huì)生成一個(gè)隨機(jī)數(shù)并用Master的公鑰對(duì)隨機(jī)數(shù)進(jìn)行加密,并發(fā)送給Master。Master收到加密數(shù)之后再用私鑰解密,并將解密數(shù)回傳給Slave,Slave確認(rèn)解密數(shù)無(wú)誤之后就允許Master進(jìn)行連接了。這就是一個(gè)公鑰認(rèn)證過(guò)程,其間不需要用戶(hù)手工輸入密碼。重要過(guò)程是將客戶(hù)端Master復(fù)制到Slave上。

  2)Master機(jī)器上生成密碼對(duì)

   在Master節(jié)點(diǎn)上執(zhí)行以下命令:

ssh-keygen –t rsa –P ''

  這條命是生成其無(wú)密碼密鑰對(duì),詢(xún)問(wèn)其保存路徑時(shí)直接回車(chē)采用默認(rèn)路徑。生成的密鑰對(duì):id_rsa和id_rsa.pub,默認(rèn)存儲(chǔ)在"/home/hadoop/.ssh"目錄下。

  查看"/home/hadoop/"下是否有".ssh"文件夾,且".ssh"文件下是否有兩個(gè)剛生產(chǎn)的無(wú)密碼密鑰對(duì)。

  接著在Master節(jié)點(diǎn)上做如下配置,把id_rsa.pub追加到授權(quán)的key里面去。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  在驗(yàn)證前,需要做兩件事兒。第一件事兒是修改文件"authorized_keys"權(quán)限(權(quán)限的設(shè)置非常重要,因?yàn)椴话踩脑O(shè)置安全設(shè)置,會(huì)讓你不能使用RSA功能),另一件事兒是用root用戶(hù)設(shè)置"/etc/ssh/sshd_config"的內(nèi)容。使其無(wú)密碼登錄有效。

  1)修改文件"authorized_keys"

    

chmod 600 ~/.ssh/authorized_keys

   備注:如果不進(jìn)行設(shè)置,在驗(yàn)證時(shí),扔提示你輸入密碼,在這里花費(fèi)了將近半天時(shí)間來(lái)查找原因。在網(wǎng)上查到了幾篇不錯(cuò)的文章,把作為"Hadoop集群_第5期副刊_JDK和SSH無(wú)密碼配置"來(lái)幫助額外學(xué)習(xí)之用。

    2)設(shè)置SSH配置

  用root用戶(hù)登錄服務(wù)器修改SSH配置文件"/etc/ssh/sshd_config"的下列內(nèi)容。

RSAAuthentication yes # 啟用 RSA 認(rèn)證

PubkeyAuthentication yes # 啟用公鑰私鑰配對(duì)認(rèn)證方式

AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

  設(shè)置完之后記得重啟SSH服務(wù),才能使剛才設(shè)置有效。

service sshd restart

    

  退出root登錄,使用hadoop普通用戶(hù)驗(yàn)證是否成功。

ssh localhost

   

  從上圖中得知無(wú)密碼登錄本級(jí)已經(jīng)設(shè)置完畢,接下來(lái)的事兒是把公鑰復(fù)制所有的Slave機(jī)器上。使用下面的命令格式進(jìn)行復(fù)制公鑰:

scp ~/.ssh/id_rsa.pub 遠(yuǎn)程用戶(hù)名@遠(yuǎn)程服務(wù)器IP:~/

  例如:

scp ~/.ssh/id_rsa.pub hadoop@192.168.1.3:~/

  上面的命令是復(fù)制文件"id_rsa.pub"到服務(wù)器IP為"192.168.1.3"的用戶(hù)為"hadoop"的"/home/hadoop/"下面。

  下面就針對(duì)IP為"192.168.1.3"的Slave1.Hadoop的節(jié)點(diǎn)進(jìn)行配置。

  1)把Master.Hadoop上的公鑰復(fù)制到Slave1.Hadoop上

  從上圖中我們得知,已經(jīng)把文件"id_rsa.pub"傳過(guò)去了,因?yàn)椴](méi)有建立起無(wú)密碼連接,所以在連接時(shí),仍然要提示輸入輸入Slave1.Hadoop服務(wù)器用戶(hù)hadoop的密碼。為了確保確實(shí)已經(jīng)把文件傳過(guò)去了,用SecureCRT登錄Slave1.Hadoop:192.168.1.3服務(wù)器,查看"/home/hadoop/"下是否存在這個(gè)文件。

  從上面得知我們已經(jīng)成功把公鑰復(fù)制過(guò)去了。

  2)在"/home/hadoop/"下創(chuàng)建".ssh"文件夾

  這一步并不是必須的,如果在Slave1.Hadoop的"/home/hadoop"已經(jīng)存在就不需要?jiǎng)?chuàng)建了,因?yàn)槲覀冎安](méi)有對(duì)Slave機(jī)器做過(guò)無(wú)密碼登錄配置,所以該文件是不存在的。用下面命令進(jìn)行創(chuàng)建。(備注:用hadoop登錄系統(tǒng),如果不涉及系統(tǒng)文件修改,一般情況下都是用我們之前建立的普通用戶(hù)hadoop進(jìn)行執(zhí)行命令。)

mkdir ~/.ssh

  然后是修改文件夾".ssh"的用戶(hù)權(quán)限,把他的權(quán)限修改為"700",用下面命令執(zhí)行:

chmod 700 ~/.ssh

  備注:如果不進(jìn)行,即使你按照前面的操作設(shè)置了"authorized_keys"權(quán)限,并配置了"/etc/ssh/sshd_config",還重啟了sshd服務(wù),在Master能用"ssh localhost"進(jìn)行無(wú)密碼登錄,但是對(duì)Slave1.Hadoop進(jìn)行登錄仍然需要輸入密碼,就是因?yàn)?quot;.ssh"文件夾的權(quán)限設(shè)置不對(duì)。這個(gè)文件夾".ssh"在配置SSH無(wú)密碼登錄時(shí)系統(tǒng)自動(dòng)生成時(shí),權(quán)限自動(dòng)為"700",如果是自己手動(dòng)創(chuàng)建,它的組權(quán)限和其他權(quán)限都有,這樣就會(huì)導(dǎo)致RSA無(wú)密碼遠(yuǎn)程登錄失敗。

  對(duì)比上面兩張圖,發(fā)現(xiàn)文件夾".ssh"權(quán)限已經(jīng)變了。

  3)追加到授權(quán)文件"authorized_keys"

  到目前為止Master.Hadoop的公鑰也有了,文件夾".ssh"也有了,且權(quán)限也修改了。這一步就是把Master.Hadoop的公鑰追加到Slave1.Hadoop的授權(quán)文件"authorized_keys"中去。使用下面命令進(jìn)行追加并修改"authorized_keys"文件權(quán)限:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

  4)用root用戶(hù)修改"/etc/ssh/sshd_config"

  具體步驟參考前面Master.Hadoop的"設(shè)置SSH配置",具體分為兩步:第1是修改配置文件;第2是重啟SSH服務(wù)。

  5)用Master.Hadoop使用SSH無(wú)密碼登錄Slave1.Hadoop

  當(dāng)前面的步驟設(shè)置完畢,就可以使用下面命令格式進(jìn)行SSH無(wú)密碼登錄了。

ssh 遠(yuǎn)程服務(wù)器IP

  從上圖我們主要3個(gè)地方,第1個(gè)就是SSH無(wú)密碼登錄命令,第2、3個(gè)就是登錄前后"@"后面的機(jī)器名變了,由"Master"變?yōu)榱?quot;Slave1",這就說(shuō)明我們已經(jīng)成功實(shí)現(xiàn)了SSH無(wú)密碼登錄了。

  最后記得把"/home/hadoop/"目錄下的"id_rsa.pub"文件刪除掉。

rm –r ~/id_rsa.pub

  到此為止,我們經(jīng)過(guò)前5步已經(jīng)實(shí)現(xiàn)了從"Master.Hadoop"到"Slave1.Hadoop"SSH無(wú)密碼登錄,下面就是重復(fù)上面的步驟把剩余的兩臺(tái)(Slave2.Hadoop和Slave3.Hadoop)Slave服務(wù)器進(jìn)行配置。這樣,我們就完成了"配置Master無(wú)密碼登錄所有的Slave服務(wù)器"。

2.3 配置所有Slave無(wú)密碼登錄Master

  和Master無(wú)密碼登錄所有Slave原理一樣,就是把Slave的公鑰追加到Master的".ssh"文件夾下的"authorized_keys"中,記得是追加(>>)。

  為了說(shuō)明情況,我們現(xiàn)在就以"Slave1.Hadoop"無(wú)密碼登錄"Master.Hadoop"為例,進(jìn)行一遍操作,也算是鞏固一下前面所學(xué)知識(shí),剩余的"Slave2.Hadoop"和"Slave3.Hadoop"就按照這個(gè)示例進(jìn)行就可以了。

  首先創(chuàng)建"Slave1.Hadoop"自己的公鑰和私鑰,并把自己的公鑰追加到"authorized_keys"文件中。用到的命令如下:

ssh-keygen –t rsa –P ''

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  接著是用命令"scp"復(fù)制"Slave1.Hadoop"的公鑰"id_rsa.pub"到"Master.Hadoop"的"/home/hadoop/"目錄下,并追加到"Master.Hadoop"的"authorized_keys"中。

  1)在"Slave1.Hadoop"服務(wù)器的操作

  用到的命令如下:

scp ~/.ssh/id_rsa.pub     hadoop@192.168.1.2:~/

  

  2)在"Master.Hadoop"服務(wù)器的操作

  用到的命令如下:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

  然后刪除掉剛才復(fù)制過(guò)來(lái)的"id_rsa.pub"文件。

    

  最后是測(cè)試從"Slave1.Hadoop"到"Master.Hadoop"無(wú)密碼登錄。

  從上面結(jié)果中可以看到已經(jīng)成功實(shí)現(xiàn)了,再試下從"Master.Hadoop"到"Slave1.Hadoop"無(wú)密碼登錄。

  至此"Master.Hadoop"與"Slave1.Hadoop"之間可以互相無(wú)密碼登錄了,剩下的就是按照上面的步驟把剩余的"Slave2.Hadoop"和"Slave3.Hadoop"與"Master.Hadoop"之間建立起無(wú)密碼登錄。這樣,Master能無(wú)密碼驗(yàn)證登錄每個(gè)Slave,每個(gè)Slave也能無(wú)密碼驗(yàn)證登錄到Master。

3、Java環(huán)境安裝

  所有的機(jī)器上都要安裝JDK,現(xiàn)在就先在Master服務(wù)器安裝,然后其他服務(wù)器按照步驟重復(fù)進(jìn)行即可。安裝JDK以及配置環(huán)境變量,需要以"root"的身份進(jìn)行。

3.1 安裝JDK

  首先用root身份登錄"Master.Hadoop"后在"/usr"下創(chuàng)建"java"文件夾,再把用FTP上傳到"/home/hadoop/"下的"jdk-6u31-linux-i586.bin"復(fù)制到"/usr/java"文件夾中。

mkdir /usr/java

cp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java

  接著進(jìn)入"/usr/java"目錄下通過(guò)下面命令使其JDK獲得可執(zhí)行權(quán)限,并安裝JDK。

chmod    +x     jdk-6u31-linux-i586.bin

./jdk-6u31-linux-i586.bin

  按照上面幾步進(jìn)行操作,最后點(diǎn)擊"Enter"鍵開(kāi)始安裝,安裝完會(huì)提示你按"Enter"鍵退出,然后查看"/usr/java"下面會(huì)發(fā)現(xiàn)多了一個(gè)名為"jdk1.6.0_31"文件夾,說(shuō)明我們的JDK安裝結(jié)束,刪除"jdk-6u31-linux-i586.bin"文件,進(jìn)入下一個(gè)"配置環(huán)境變量"環(huán)節(jié)。

3.2 配置環(huán)境變量

  編輯"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"內(nèi)容。

  1)編輯"/etc/profile"文件

vim     /etc/profile

  2)添加Java環(huán)境變量

  在"/etc/profile"文件的尾部添加以下內(nèi)容:

 

  1. # set java environment 
  2. export JAVA_HOME=/usr/java/jdk1.6.0_31/ 
  3. export JRE_HOME=/usr/java/jdk1.6.0_31/jre 
  4. export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib 
  5. export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 

 

  或者

 

  1. # set java environment 
  2. export JAVA_HOME=/usr/java/jdk1.6.0_31 
  3. export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 
  4. export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin 

 

   以上兩種意思一樣,那么我們就選擇第2種來(lái)進(jìn)行設(shè)置。

  3)使配置生效

  保存并退出,執(zhí)行下面命令使其配置立即生效。

source /etc/profile

3.3 驗(yàn)證安裝成功

  配置完畢并生效后,用下面命令判斷是否成功。

java -version

  從上圖中得知,我們以確定JDK已經(jīng)安裝成功。

3.4 安裝剩余機(jī)器

  這時(shí)用普通用戶(hù)hadoop通過(guò)下面命令格式把"Master.Hadoop"文件夾"/home/hadoop/"的JDK復(fù)制到其他Slave的"/home/hadoop/"下面,剩下的事兒就是在其余的Slave服務(wù)器上按照上圖的步驟安裝JDK。

scp /home/hadoop/jdk-6u31-linux-i586.bin 遠(yuǎn)程用戶(hù)名@遠(yuǎn)程服務(wù)器IP:~/

  或者

scp ~/jdk-6u31-linux-i586.bin 遠(yuǎn)程用戶(hù)名@遠(yuǎn)程服務(wù)器IP:~/

  備注:"~"代表當(dāng)前用戶(hù)的主目錄,當(dāng)前用戶(hù)為hadoop,所以"~"代表"/home/hadoop"。

  例如:把JDK從"Master.Hadoop"復(fù)制到"Slave1.Hadoop"的命令如下。

scp ~/jdk-6u31-linux-i586 hadoop@192.168.1.3:~/

  然后查看"Slave1.Hadoop"的"/home/hadoop"查看是否已經(jīng)復(fù)制成功了。

  從上圖中得知,我們已經(jīng)成功復(fù)制了,現(xiàn)在我們就用最高權(quán)限用戶(hù)root進(jìn)行安裝了。其他的與這個(gè)一樣。

#p#

4、Hadoop集群安裝

  所有的機(jī)器上都要安裝hadoop,現(xiàn)在就先在Master服務(wù)器安裝,然后其他服務(wù)器按照步驟重復(fù)進(jìn)行即可。安裝和配置hadoop需要以"root"的身份進(jìn)行。

4.1 安裝hadoop

  首先用root用戶(hù)登錄"Master.Hadoop"機(jī)器,查看我們之前用FTP上傳至"/home/Hadoop"上傳的"hadoop-1.0.0.tar.gz"。

  接著把"hadoop-1.0.0.tar.gz"復(fù)制到"/usr"目錄下面。

cp /home/hadoop/hadoop-1.0.0.tar.gz /usr

  下一步進(jìn)入"/usr"目錄下,用下面命令把"hadoop-1.0.0.tar.gz"進(jìn)行解壓,并將其命名為"hadoop",把該文件夾的讀權(quán)限分配給普通用戶(hù)hadoop,然后刪除"hadoop-1.0.0.tar.gz"安裝包。

cd /usr #進(jìn)入"/usr"目錄

tar –zxvf hadoop-1.0.0.tar.gz #解壓"hadoop-1.0.0.tar.gz"安裝包

mv hadoop-1.0.0 hadoop #將"hadoop-1.0.0"文件夾重命名"hadoop"

chown –R hadoop:hadoop hadoop #將文件夾"hadoop"讀權(quán)限分配給hadoop用戶(hù)

rm –rf hadoop-1.0.0.tar.gz                 #刪除"hadoop-1.0.0.tar.gz"安裝包

  解壓后,并重命名。

  把"/usr/hadoop"讀權(quán)限分配給hadoop用戶(hù)(非常重要)

  刪除"hadoop-1.0.0.tar.gz"安裝包

  最后在"/usr/hadoop"下面創(chuàng)建tmp文件夾,把Hadoop的安裝路徑添加到"/etc/profile"中,修改"/etc/profile"文件(配置java環(huán)境變量的文件),將以下語(yǔ)句添加到末尾,并使其有效:

# set hadoop path

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

    1)在"/usr/hadoop"創(chuàng)建"tmp"文件夾

mkdir /usr/hadoop/tmp

    2)配置"/etc/profile"

vim /etc/profile

  配置后的文件如下:

    

3)重啟"/etc/profile"

source /etc/profile

4.2 配置hadoop

  1)配置hadoop-env.sh

  該"hadoop-env.sh"文件位于"/usr/hadoop/conf"目錄下。

  在文件的末尾添加下面內(nèi)容。

# set java environment

export JAVA_HOME=/usr/java/jdk1.6.0_31

  Hadoop配置文件在conf目錄下,之前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。由于Hadoop發(fā)展迅速,代碼量急劇增加,代碼開(kāi)發(fā)分為了core,hdfs和map/reduce三部分,配置文件也被分成了三個(gè)core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。

  2)配置core-site.xml文件

  修改Hadoop核心配置文件core-site.xml,這里配置的是HDFS的地址和端口號(hào)。

<configuration>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/usr/hadoop/tmp</value>

        (備注:請(qǐng)先在 /usr/hadoop 目錄下建立 tmp 文件夾)

 

  1.         <description>A base for other temporary directories.</description> 
  2.     </property> 
  3. <!-- file system properties --> 
  4.     <property> 
  5.         <name>fs.default.name</name> 
  6.         <value>hdfs://192.168.1.2:9000</value> 
  7.     </property> 
  8. </configuration> 

 

  備注:如沒(méi)有配置hadoop.tmp.dir參數(shù),此時(shí)系統(tǒng)默認(rèn)的臨時(shí)目錄為:/tmp/hadoo-hadoop。而這個(gè)目錄在每次重啟后都會(huì)被干掉,必須重新執(zhí)行format才行,否則會(huì)出錯(cuò)。

    用下面命令進(jìn)行編輯:

    編輯結(jié)果顯示如下:

  3)配置hdfs-site.xml文件

  修改Hadoop中HDFS的配置,配置的備份方式默認(rèn)為3。

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

        (備注:replication 是數(shù)據(jù)副本數(shù)量,默認(rèn)為3,salve少于3臺(tái)就會(huì)報(bào)錯(cuò))

    </property>

<configuration>

  用下面命令進(jìn)行編輯:

  編輯結(jié)果顯示如下:

  4)配置mapred-site.xml文件

  修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

 

  1. <configuration> 
  2.     <property> 
  3.         <name>mapred.job.tracker</name> 
  4.         <value>http://192.168.1.2:9001</value> 
  5.     </property> 
  6. </configuration> 

 

  用下面命令進(jìn)行編輯:

  編輯結(jié)果顯示如下:

  5)配置masters文件

  有兩種方案:

    (1)第一種

        修改localhost為Master.Hadoop

    (2)第二種

        去掉"localhost",加入Master機(jī)器的IP:192.168.1.2

  為保險(xiǎn)起見(jiàn),啟用第二種,因?yàn)槿f(wàn)一忘記配置"/etc/hosts"局域網(wǎng)的DNS失效,這樣就會(huì)出現(xiàn)意想不到的錯(cuò)誤,但是一旦IP配對(duì),網(wǎng)絡(luò)暢通,就能通過(guò)IP找到相應(yīng)主機(jī)。

  用下面命令進(jìn)行修改:

  編輯結(jié)果顯示如下:

    6)配置slaves文件(Master主機(jī)特有)

    有兩種方案:

    (1)第一種

去掉"localhost",每行只添加一個(gè)主機(jī)名,把剩余的Slave主機(jī)名都填上。

        例如:添加形式如下

Slave1.Hadoop

Slave2.Hadoop

Slave3.Hadoop

    (2)第二種

        去掉"localhost",加入集群中所有Slave機(jī)器的IP,也是每行一個(gè)。

        例如:添加形式如下

192.168.1.3

192.168.1.4

192.168.1.5

  原因和添加"masters"文件一樣,選擇第二種方式。

  用下面命令進(jìn)行修改:

  編輯結(jié)果如下:

  現(xiàn)在在Master機(jī)器上的Hadoop配置就結(jié)束了,剩下的就是配置Slave機(jī)器上的Hadoop。

  一種方式是按照上面的步驟,把Hadoop的安裝包在用普通用戶(hù)hadoop通過(guò)"scp"復(fù)制到其他機(jī)器的"/home/hadoop"目錄下,然后根據(jù)實(shí)際情況進(jìn)行安裝配置,除了第6步,那是Master特有的。用下面命令格式進(jìn)行。(備注:此時(shí)切換到普通用戶(hù)hadoop)

scp ~/hadoop-1.0.0.tar.gz hadoop@服務(wù)器IP:~/

    例如:從"Master.Hadoop"到"Slave1.Hadoop"復(fù)制Hadoop的安裝包。

    另一種方式是將 Master上配置好的hadoop所在文件夾"/usr/hadoop"復(fù)制到所有的Slave的"/usr"目錄下(實(shí)際上Slave機(jī)器上的slavers文件是不必要的, 復(fù)制了也沒(méi)問(wèn)題)。用下面命令格式進(jìn)行。(備注:此時(shí)用戶(hù)可以為hadoop也可以為root)

scp -r /usr/hadoop root@服務(wù)器IP:/usr/

    例如:從"Master.Hadoop"到"Slave1.Hadoop"復(fù)制配置Hadoop的文件。

    上圖中以root用戶(hù)進(jìn)行復(fù)制,當(dāng)然不管是用戶(hù)root還是hadoop,雖然Master機(jī)器上的"/usr/hadoop"文件夾用戶(hù)hadoop有權(quán)限,但是Slave1上的hadoop用戶(hù)卻沒(méi)有"/usr"權(quán)限,所以沒(méi)有創(chuàng)建文件夾的權(quán)限。所以無(wú)論是哪個(gè)用戶(hù)進(jìn)行拷貝,右面都是"root@機(jī)器IP"格式。因?yàn)槲覀冎皇墙⑵鹆薶adoop用戶(hù)的SSH無(wú)密碼連接,所以用root進(jìn)行"scp"時(shí),扔提示讓你輸入"Slave1.Hadoop"服務(wù)器用戶(hù)root的密碼。

    查看"Slave1.Hadoop"服務(wù)器的"/usr"目錄下是否已經(jīng)存在"hadoop"文件夾,確認(rèn)已經(jīng)復(fù)制成功。查看結(jié)果如下:

  從上圖中知道,hadoop文件夾確實(shí)已經(jīng)復(fù)制了,但是我們發(fā)現(xiàn)hadoop權(quán)限是root,所以我們現(xiàn)在要給"Slave1.Hadoop"服務(wù)器上的用戶(hù)hadoop添加對(duì)"/usr/hadoop"讀權(quán)限。

  以root用戶(hù)登錄"Slave1.Hadoop",執(zhí)行下面命令。

chown -R hadoop:hadoop(用戶(hù)名:用戶(hù)組) hadoop(文件夾)

  

  接著在"Slave1 .Hadoop"上修改"/etc/profile"文件(配置 java 環(huán)境變量的文件),將以下語(yǔ)句添加到末尾,并使其有效(source /etc/profile):

# set hadoop environment

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

  如果不知道怎么設(shè)置,可以查看前面"Master.Hadoop"機(jī)器的"/etc/profile"文件的配置,到此為此在一臺(tái)Slave機(jī)器上的Hadoop配置就結(jié)束了。剩下的事兒就是照葫蘆畫(huà)瓢把剩余的幾臺(tái)Slave機(jī)器按照《從"Master.Hadoop"到"Slave1.Hadoop"復(fù)制Hadoop的安裝包。》這個(gè)例子進(jìn)行部署Hadoop。

4.3 啟動(dòng)及驗(yàn)證

  1)格式化HDFS文件系統(tǒng)

  在"Master.Hadoop"上使用普通用戶(hù)hadoop進(jìn)行操作。(備注:只需一次,下次啟動(dòng)不再需要格式化,只需 start-all.sh)

hadoop namenode -format

  某些書(shū)上和網(wǎng)上的某些資料中用下面命令執(zhí)行。

  我們?cè)诳春枚辔臋n包括有些書(shū)上,按照他們的hadoop環(huán)境變量進(jìn)行配置后,并立即使其生效,但是執(zhí)行發(fā)現(xiàn)沒(méi)有找見(jiàn)"bin/hadoop"這個(gè)命令。

  其實(shí)我們會(huì)發(fā)現(xiàn)我們的環(huán)境變量配置的是"$HADOOP_HOME/bin",我們已經(jīng)把bin包含進(jìn)入了,所以執(zhí)行時(shí),加上"bin"反而找不到該命令,除非我們的hadoop壞境變量如下設(shè)置。

# set hadoop path

export HADOOP_HOME=/usr/hadoop

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

  這樣就能直接使用"bin/hadoop"也可以直接使用"hadoop",現(xiàn)在不管哪種情況,hadoop命令都能找見(jiàn)了。我們也沒(méi)有必要重新在設(shè)置hadoop環(huán)境變量了,只需要記住執(zhí)行Hadoop命令時(shí)不需要在前面加"bin"就可以了。

    

  從上圖中知道我們已經(jīng)成功格式話(huà)了,但是美中不足就是出現(xiàn)了一個(gè)警告,從網(wǎng)上的得知這個(gè)警告并不影響hadoop執(zhí)行,但是也有辦法解決,詳情看后面的"常見(jiàn)問(wèn)題FAQ"。

    

  2)啟動(dòng)hadoop

  在啟動(dòng)前關(guān)閉集群中所有機(jī)器的防火墻,不然會(huì)出現(xiàn)datanode開(kāi)后又自動(dòng)關(guān)閉。

service iptables stop

  使用下面命令啟動(dòng)。

start-all.sh

  執(zhí)行結(jié)果如下:

  可以通過(guò)以下啟動(dòng)日志看出,首先啟動(dòng)namenode 接著啟動(dòng)datanode1,datanode2,…,然后啟動(dòng)secondarynamenode。再啟動(dòng)jobtracker,然后啟動(dòng)tasktracker1,tasktracker2,…。

  啟動(dòng) hadoop成功后,在 Master 中的 tmp 文件夾中生成了 dfs 文件夾,在Slave 中的 tmp 文件夾中均生成了 dfs 文件夾和 mapred 文件夾。

  查看Master中"/usr/hadoop/tmp"文件夾內(nèi)容

  查看Slave1中"/usr/hadoop/tmp"文件夾內(nèi)容。

  3)驗(yàn)證hadoop

  (1)驗(yàn)證方法一:用"jps"命令

  在Master上用 java自帶的小工具jps查看進(jìn)程。

  在Slave1上用jps查看進(jìn)程。

  如果在查看Slave機(jī)器中發(fā)現(xiàn)"DataNode"和"TaskTracker"沒(méi)有起來(lái)時(shí),先查看一下日志的,如果是"namespaceID"不一致問(wèn)題,采用"常見(jiàn)問(wèn)題FAQ6.2"進(jìn)行解決,如果是"No route to host"問(wèn)題,采用"常見(jiàn)問(wèn)題FAQ6.3"進(jìn)行解決。

  (2)驗(yàn)證方式二:用"hadoop dfsadmin -report"

  用這個(gè)命令可以查看Hadoop集群的狀態(tài)。

  Master服務(wù)器的狀態(tài):

  Slave服務(wù)器的狀態(tài)

4.4 網(wǎng)頁(yè)查看集群

  1)訪(fǎng)問(wèn)"http:192.168.1.2:50030"

  2)訪(fǎng)問(wèn)"http:192.168.1.2:50070"

5、常見(jiàn)問(wèn)題FAQ

5.1 關(guān)于 Warning: $HADOOP_HOME is deprecated.

  hadoop 1.0.0版本,安裝完之后敲入hadoop命令時(shí),老是提示這個(gè)警告:

Warning: $HADOOP_HOME is deprecated.

  經(jīng)查hadoop-1.0.0/bin/hadoop腳本和"hadoop-config.sh"腳本,發(fā)現(xiàn)腳本中對(duì)HADOOP_HOME的環(huán)境變量設(shè)置做了判斷,筆者的環(huán)境根本不需要設(shè)置HADOOP_HOME環(huán)境變量。

  解決方案一:編輯"/etc/profile"文件,去掉HADOOP_HOME的變量設(shè)定,重新輸入hadoop fs命令,警告消失。

  解決方案二:編輯"/etc/profile"文件,添加一個(gè)環(huán)境變量,之后警告消失:

export HADOOP_HOME_WARN_SUPPRESS=1

  解決方案三:編輯"hadoop-config.sh"文件,把下面的"if - fi"功能注釋掉。

  我們這里本著不動(dòng)Hadoop原配置文件的前提下,采用"方案二",在"/etc/profile"文件添加上面內(nèi)容,并用命令"source /etc/profile"使之有效。

  1)切換至root用戶(hù)

  2)添加內(nèi)容

  3)重新生效

5.2 解決"no datanode to stop"問(wèn)題

  當(dāng)我停止Hadoop時(shí)發(fā)現(xiàn)如下信息:

  原因:每次namenode format會(huì)重新創(chuàng)建一個(gè)namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的數(shù)據(jù),但是沒(méi)有清空datanode下的數(shù)據(jù),導(dǎo)致啟動(dòng)時(shí)失敗,所要做的就是每次fotmat前,清空tmp一下的所有目錄。

  第一種解決方案如下:

  1)先刪除"/usr/hadoop/tmp"

rm -rf /usr/hadoop/tmp

  2)創(chuàng)建"/usr/hadoop/tmp"文件夾

mkdir /usr/hadoop/tmp

  3)刪除"/tmp"下以"hadoop"開(kāi)頭文件

rm -rf /tmp/hadoop*

  4)重新格式化hadoop

hadoop namenode -format

  5)啟動(dòng)hadoop

start-all.sh

  使用第一種方案,有種不好處就是原來(lái)集群上的重要數(shù)據(jù)全沒(méi)有了。假如說(shuō)Hadoop集群已經(jīng)運(yùn)行了一段時(shí)間。建議采用第二種。

  第二種方案如下:

  1)修改每個(gè)Slave的namespaceID使其與Master的namespaceID一致。

  或者

  2)修改Master的namespaceID使其與Slave的namespaceID一致。

  該"namespaceID"位于"/usr/hadoop/tmp/dfs/data/current/VERSION"文件中,前面藍(lán)色的可能根據(jù)實(shí)際情況變化,但后面紅色是不變的。

  例如:查看"Master"下的"VERSION"文件

  本人建議采用第二種,這樣方便快捷,而且還能防止誤刪。

5.3 Slave服務(wù)器中datanode啟動(dòng)后又自動(dòng)關(guān)閉

  查看日志發(fā)下如下錯(cuò)誤。

  ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to ... failed on local exception: java.net.NoRouteToHostException: No route to host

  解決方案是:關(guān)閉防火墻

service iptables stop

5.4 從本地往hdfs文件系統(tǒng)上傳文件

  出現(xiàn)如下錯(cuò)誤:

  INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink

  INFO hdfs.DFSClient: Abandoning block blk_-1300529705803292651_37023

  WARN hdfs.DFSClient: DataStreamer Exception: java.io.IOException: Unable to create new block.

  解決方案是:

  1)關(guān)閉防火墻

service iptables stop

  2)禁用selinux

    編輯 "/etc/selinux/config"文件,設(shè)置"SELINUX=disabled"

5.5 安全模式導(dǎo)致的錯(cuò)誤

  出現(xiàn)如下錯(cuò)誤:

  org.apache.hadoop.dfs.SafeModeException: Cannot delete ..., Name node is in safe mode

  在分布式文件系統(tǒng)啟動(dòng)的時(shí)候,開(kāi)始的時(shí)候會(huì)有安全模式,當(dāng)分布式文件系統(tǒng)處于安全模式的情況下,文件系統(tǒng)中的內(nèi)容不允許修改也不允許刪除,直到安全模式結(jié)束。安全模式主要是為了系統(tǒng)啟動(dòng)的時(shí)候檢查各個(gè)DataNode上數(shù)據(jù)塊的有效性,同時(shí)根據(jù)策略必要的復(fù)制或者刪除部分?jǐn)?shù)據(jù)塊。運(yùn)行期通過(guò)命令也可以進(jìn)入安全模式。在實(shí)踐過(guò)程中,系統(tǒng)啟動(dòng)的時(shí)候去修改和刪除文件也會(huì)有安全模式不允許修改的出錯(cuò)提示,只需要等待一會(huì)兒即可。

  解決方案是:關(guān)閉安全模式

hadoop dfsadmin -safemode leave

5.6 解決Exceeded MAX_FAILED_UNIQUE_FETCHES

  出現(xiàn)錯(cuò)誤如下:

  Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out

  程序里面需要打開(kāi)多個(gè)文件,進(jìn)行分析,系統(tǒng)一般默認(rèn)數(shù)量是1024,(用ulimit -a可以看到)對(duì)于正常使用是夠了,但是對(duì)于程序來(lái)講,就太少了。

  解決方案是:修改2個(gè)文件。

  1)"/etc/security/limits.conf"

vim /etc/security/limits.conf

  加上:

soft nofile 102400

hard nofile 409600

  2)"/etc/pam.d/login"

vim /etc/pam.d/login

  添加:

session required /lib/security/pam_limits.so

  針對(duì)第一個(gè)問(wèn)題我糾正下答案:

  這是reduce預(yù)處理階段shuffle時(shí)獲取已完成的map的輸出失敗次數(shù)超過(guò)上限造成的,上限默認(rèn)為5。引起此問(wèn)題的方式可能會(huì)有很多種,比如網(wǎng)絡(luò)連接不正常,連接超時(shí),帶寬較差以及端口阻塞等。通常框架內(nèi)網(wǎng)絡(luò)情況較好是不會(huì)出現(xiàn)此錯(cuò)誤的。

5.7 解決"Too many fetch-failures"

  出現(xiàn)這個(gè)問(wèn)題主要是結(jié)點(diǎn)間的連通不夠全面。

  解決方案是:

  1)檢查"/etc/hosts"

  要求本機(jī)ip 對(duì)應(yīng) 服務(wù)器名

  要求要包含所有的服務(wù)器ip +服務(wù)器名

  2)檢查".ssh/authorized_keys"

  要求包含所有服務(wù)器(包括其自身)的public key

5.8 處理速度特別的慢

  出現(xiàn)map很快,但是reduce很慢,而且反復(fù)出現(xiàn)"reduce=0%"。

  解決方案如下:

  結(jié)合解決方案5.7,然后修改"conf/hadoop-env.sh"中的"export HADOOP_HEAPSIZE=4000"

5.9解決hadoop OutOfMemoryError問(wèn)題

  出現(xiàn)這種異常,明顯是jvm內(nèi)存不夠得原因。

  解決方案如下:要修改所有的datanode的jvm內(nèi)存大小。

Java –Xms 1024m -Xmx 4096m

  一般jvm的最大內(nèi)存使用應(yīng)該為總內(nèi)存大小的一半,我們使用的8G內(nèi)存,所以設(shè)置為4096m,這一值可能依舊不是最優(yōu)的值。

5.10 Namenode in safe mode

  解決方案如下:

bin/hadoop dfsadmin -safemode leave

5.11 IO寫(xiě)操作出現(xiàn)問(wèn)題

  0-1246359584298, infoPort=50075, ipcPort=50020):Got exception while serving blk_-5911099437886836280_1292 to /172.16.100.165:

  java.net.SocketTimeoutException: 480000 millis timeout while waiting for channel to be ready for write. ch : java.nio.channels.SocketChannel[connected local=/

  172.16.100.165:50010 remote=/172.16.100.165:50930]

  at org.apache.hadoop.net.SocketIOWithTimeout.waitForIO(SocketIOWithTimeout.java:185)

  at org.apache.hadoop.net.SocketOutputStream.waitForWritable(SocketOutputStream.java:159)

  ……

  It seems there are many reasons that it can timeout, the example given in HADOOP-3831 is a slow reading client.

    解決方案如下:

  在hadoop-site.xml中設(shè)置dfs.datanode.socket.write.timeout=0

5.12 status of 255 error

  錯(cuò)誤類(lèi)型:

  java.io.IOException: Task process exit with nonzero status of 255.

  at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:424)

  錯(cuò)誤原因:

  Set mapred.jobtracker.retirejob.interval and mapred.userlog.retain.hours to higher value. By default, their values are 24 hours. These might be the reason for failure, though I'm not sure restart.

  解決方案如下:?jiǎn)蝹€(gè)datanode

  如果一個(gè)datanode 出現(xiàn)問(wèn)題,解決之后需要重新加入cluster而不重啟cluster,方法如下:

bin/hadoop-daemon.sh start datanode

bin/hadoop-daemon.sh start jobtracker

6、用到的Linux命令

6.1 chmod命令詳解

  使用權(quán)限:所有使用者

  使用方式:chmod [-cfvR] [--help] [--version] mode file...

  說(shuō)明:

  Linux/Unix 的檔案存取權(quán)限分為三級(jí) : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。

  mode :權(quán)限設(shè)定字串,格式如下 :[ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個(gè)群體(group)者,o 表示其他以外的人,a 表示這三者皆是。

+ 表示增加權(quán)限、- 表示取消權(quán)限、= 表示唯一設(shè)定權(quán)限。

r 表示可讀取,w 表示可寫(xiě)入,x 表示可執(zhí)行,X 表示只有當(dāng)該檔案是個(gè)子目錄或者該檔案已經(jīng)被設(shè)定過(guò)為可執(zhí)行。

-c : 若該檔案權(quán)限確實(shí)已經(jīng)更改,才顯示其更改動(dòng)作

-f : 若該檔案權(quán)限無(wú)法被更改也不要顯示錯(cuò)誤訊息

-v : 顯示權(quán)限變更的詳細(xì)資料

-R : 對(duì)目前目錄下的所有檔案與子目錄進(jìn)行相同的權(quán)限變更(即以遞回的方式逐個(gè)變更)

--help : 顯示輔助說(shuō)明

--version : 顯示版本

  范例:

  將檔案 file1.txt 設(shè)為所有人皆可讀取

chmod ugo+r file1.txt

  將檔案 file1.txt 設(shè)為所有人皆可讀取

chmod a+r file1.txt

  將檔案 file1.txt 與 file2.txt 設(shè)為該檔案擁有者,與其所屬同一個(gè)群體者可寫(xiě)入,但其他以外的人則不可寫(xiě)入

chmod ug+w,o-w file1.txt file2.txt

  將 ex1.py 設(shè)定為只有該檔案擁有者可以執(zhí)行

chmod u+x ex1.py

  將目前目錄下的所有檔案與子目錄皆設(shè)為任何人可讀取

chmod -R a+r *

  此外chmod也可以用數(shù)字來(lái)表示權(quán)限如 chmod 777 file

  語(yǔ)法為:chmod abc file

  其中a,b,c各為一個(gè)數(shù)字,分別表示User、Group、及Other的權(quán)限。

  r=4,w=2,x=1

  若要rwx屬性則4+2+1=7;

  若要rw-屬性則4+2=6;

  若要r-x屬性則4+1=7。

  范例:

  chmod a=rwx file 和 chmod 777 file 效果相同

  chmod ug=rwx,o=x file 和 chmod 771 file 效果相同

  若用chmod 4755 filename可使此程式具有root的權(quán)限

6.2 chown命令詳解

  使用權(quán)限:root

  使用方式:chown [-cfhvR] [--help] [--version] user[:group] file...

  說(shuō)明:

  Linux/Unix 是多人多工作業(yè)系統(tǒng),所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來(lái)說(shuō),這個(gè)指令只有是由系統(tǒng)管理者(root)所使用,一般使用者沒(méi)有權(quán)限可以改變別人的檔案擁有者,也沒(méi)有權(quán)限可以自己的檔案擁有者改設(shè)為別人。只有系統(tǒng)管理者(root)才有這樣的權(quán)限。

user : 新的檔案擁有者的使用者

IDgroup : 新的檔案擁有者的使用者群體(group)

-c : 若該檔案擁有者確實(shí)已經(jīng)更改,才顯示其更改動(dòng)作

-f : 若該檔案擁有者無(wú)法被更改也不要顯示錯(cuò)誤訊息

-h : 只對(duì)于連結(jié)(link)進(jìn)行變更,而非該 link 真正指向的檔案

-v : 顯示擁有者變更的詳細(xì)資料

-R : 對(duì)目前目錄下的所有檔案與子目錄進(jìn)行相同的擁有者變更(即以遞回的方式逐個(gè)變更)

--help : 顯示輔助說(shuō)明

--version : 顯示版本

  范例:

  將檔案 file1.txt 的擁有者設(shè)為 users 群體的使用者 jessie

chown jessie:users file1.txt

  將目前目錄下的所有檔案與子目錄的擁有者皆設(shè)為 users 群體的使用者 lamport

chown -R lamport:users *

-rw------- (600) -- 只有屬主有讀寫(xiě)權(quán)限。

-rw-r--r-- (644) -- 只有屬主有讀寫(xiě)權(quán)限;而屬組用戶(hù)和其他用戶(hù)只有讀權(quán)限。

-rwx------ (700) -- 只有屬主有讀、寫(xiě)、執(zhí)行權(quán)限。

-rwxr-xr-x (755) -- 屬主有讀、寫(xiě)、執(zhí)行權(quán)限;而屬組用戶(hù)和其他用戶(hù)只有讀、執(zhí)行權(quán)限。

-rwx--x--x (711) -- 屬主有讀、寫(xiě)、執(zhí)行權(quán)限;而屬組用戶(hù)和其他用戶(hù)只有執(zhí)行權(quán)限。

-rw-rw-rw- (666) -- 所有用戶(hù)都有文件讀、寫(xiě)權(quán)限。這種做法不可取。

-rwxrwxrwx (777) -- 所有用戶(hù)都有讀、寫(xiě)、執(zhí)行權(quán)限。更不可取的做法。

  以下是對(duì)目錄的兩個(gè)普通設(shè)定:

drwx------ (700) - 只有屬主可在目錄中讀、寫(xiě)。

drwxr-xr-x (755) - 所有用戶(hù)可讀該目錄,但只有屬主才能改變目錄中的內(nèi)容

  suid的代表數(shù)字是4,比如4755的結(jié)果是-rwsr-xr-x

  sgid的代表數(shù)字是2,比如6755的結(jié)果是-rwsr-sr-x

  sticky位代表數(shù)字是1,比如7755的結(jié)果是-rwsr-sr-t

6.3 scp命令詳解

  scp是 secure copy的縮寫(xiě),scp是linux系統(tǒng)下基于ssh登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令。linux的scp命令可以在linux服務(wù)器之間復(fù)制文件和目錄。

  scp命令的用處:

  scp在網(wǎng)絡(luò)上不同的主機(jī)之間復(fù)制文件,它使用ssh安全協(xié)議傳輸數(shù)據(jù),具有和ssh一樣的驗(yàn)證機(jī)制,從而安全的遠(yuǎn)程拷貝文件。

  scp命令基本格式:

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]

[-l limit] [-o ssh_option] [-P port] [-S program]

[[user@]host1:]file1 [...] [[user@]host2:]file2

  scp命令的參數(shù)說(shuō)明:

-1    強(qiáng)制scp命令使用協(xié)議ssh1

-2    強(qiáng)制scp命令使用協(xié)議ssh2

-4    強(qiáng)制scp命令只使用IPv4尋址

-6    強(qiáng)制scp命令只使用IPv6尋址

-B    使用批處理模式(傳輸過(guò)程中不詢(xún)問(wèn)傳輸口令或短語(yǔ))

-C    允許壓縮。(將-C標(biāo)志傳遞給ssh,從而打開(kāi)壓縮功能)

-p 保留原文件的修改時(shí)間,訪(fǎng)問(wèn)時(shí)間和訪(fǎng)問(wèn)權(quán)限。

-q    不顯示傳輸進(jìn)度條。

-r    遞歸復(fù)制整個(gè)目錄。

-v 詳細(xì)方式顯示輸出。scp和ssh(1)會(huì)顯示出整個(gè)過(guò)程的調(diào)試信息。這些信息用于調(diào)試連接,驗(yàn)證和配置問(wèn)題。

-c cipher    以cipher將數(shù)據(jù)傳輸進(jìn)行加密,這個(gè)選項(xiàng)將直接傳遞給ssh。

-F ssh_config    指定一個(gè)替代的ssh配置文件,此參數(shù)直接傳遞給ssh。

-i identity_file        從指定文件中讀取傳輸時(shí)使用的密鑰文件,此參數(shù)直接傳遞給ssh。

-l limit    限定用戶(hù)所能使用的帶寬,以Kbit/s為單位。

-o ssh_option    如果習(xí)慣于使用ssh_config(5)中的參數(shù)傳遞方式,

-P port 注意是大寫(xiě)的P, port是指定數(shù)據(jù)傳輸用到的端口號(hào)

-S program    指定加密傳輸時(shí)所使用的程序。此程序必須能夠理解ssh(1)的選項(xiàng)。

  scp命令的實(shí)際應(yīng)用

  1)從本地服務(wù)器復(fù)制到遠(yuǎn)程服務(wù)器    

  (1) 復(fù)制文件:

  命令格式:

scp local_file remote_username@remote_ip:remote_folder

  或者

scp local_file remote_username@remote_ip:remote_file

  或者

scp local_file remote_ip:remote_folder

  或者

scp local_file remote_ip:remote_file

  第1,2個(gè)指定了用戶(hù)名,命令執(zhí)行后需要輸入用戶(hù)密碼,第1個(gè)僅指定了遠(yuǎn)程的目錄,文件名字不變,第2個(gè)指定了文件名

  第3,4個(gè)沒(méi)有指定用戶(hù)名,命令執(zhí)行后需要輸入用戶(hù)名和密碼,第3個(gè)僅指定了遠(yuǎn)程的目錄,文件名字不變,第4個(gè)指定了文件名

  實(shí)例:

scp /home/linux/soft/scp.zip root@www.mydomain.com:/home/linux/others/soft

scp /home/linux/soft/scp.zip root@www.mydomain.com:/home/linux/others/soft/scp2.zip

scp /home/linux/soft/scp.zip www.mydomain.com:/home/linux/others/soft

scp /home/linux/soft/scp.zip www.mydomain.com:/home/linux/others/soft/scp2.zip

  (2) 復(fù)制目錄:

  命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder

  或者

scp -r local_folder remote_ip:remote_folder

  第1個(gè)指定了用戶(hù)名,命令執(zhí)行后需要輸入用戶(hù)密碼;

  第2個(gè)沒(méi)有指定用戶(hù)名,命令執(zhí)行后需要輸入用戶(hù)名和密碼;

  例子:

scp -r /home/linux/soft/ root@www.mydomain.com:/home/linux/others/

scp -r /home/linux/soft/ www.mydomain.com:/home/linux/others/

  上面 命令 將 本地 soft 目錄 復(fù)制 到 遠(yuǎn)程 others 目錄下,即復(fù)制后遠(yuǎn)程服務(wù)器上會(huì)有/home/linux/others/soft/ 目錄。

  2)從遠(yuǎn)程服務(wù)器復(fù)制到本地服務(wù)器

  從遠(yuǎn)程復(fù)制到本地的scp命令與上面的命令雷同,只要將從本地復(fù)制到遠(yuǎn)程的命令后面2個(gè)參數(shù)互換順序就行了。

  例如:

scp root@www.mydomain.com:/home/linux/soft/scp.zip /home/linux/others/scp.zip

scp www.mydomain.com:/home/linux/soft/ -r /home/linux/others/

  linux系統(tǒng)下scp命令中很多參數(shù)都和ssh1有關(guān),還需要看到更原汁原味的參數(shù)信息,可以運(yùn)行man scp 看到更細(xì)致的英文說(shuō)明。

【編輯推薦】

  1. Hadoop集群系列1:CentOS安裝配置
  2. Hadoop集群系列2:機(jī)器信息分布表
  3. Hadoop集群系列3:VSFTP安裝配置
  4. Hadoop集群系列4:SecureCRT使用
  5. Hadoop集群系列5:Hadoop安裝配置
  6. Hadoop完全分布模式安裝實(shí)現(xiàn)詳解
責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2012-06-19 15:51:22

集群系列2

2012-06-13 09:56:53

2012-06-20 09:19:19

Hadoop集群

2012-07-05 10:51:57

Hadoop集群

2012-06-29 10:58:27

Hadoop集群

2012-07-03 08:37:24

Hadoop集群

2012-06-19 09:28:33

Hadoop集群

2013-11-28 09:44:00

2011-04-21 10:05:35

Hadoop集群lzo

2013-06-08 14:34:42

Hadoop 2.0

2010-06-04 09:43:47

hadoop應(yīng)用

2010-05-24 14:59:29

Hadoop集群

2010-06-07 09:14:55

Hadoop集群

2011-12-07 16:11:50

Hadoop集群搭建

2016-10-27 09:37:10

Hadoop集群配置

2010-06-04 10:35:14

2012-11-28 10:37:25

Linux集群安裝配置

2012-09-10 15:18:11

云梯淘寶大數(shù)據(jù)

2012-09-18 09:55:44

Hadoop 2.0

2010-06-04 10:01:26

Hadoop安裝
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久日免费视频| 男人天堂成人在线| 欧美一区二区三区黄片| 久久aⅴ国产紧身牛仔裤| 国产亚洲欧美aaaa| 激情久久综合网| 中文字幕在线看片| 亚洲日本va午夜在线影院| 国产精品一区二区三区精品| 日韩综合在线观看| 国产精品v欧美精品v日本精品动漫| 日韩风俗一区 二区| 九九热99视频| 韩国主播福利视频一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 亚洲影院在线看| 精品久久久久久久久久久久久久久久久久| 欧美在线二区| 一二美女精品欧洲| 屁屁影院国产第一页| 亚洲一区二区av| 一本大道av一区二区在线播放| 干日本少妇视频| 丁香在线视频| 97国产精品videossex| 成人在线国产精品| 成年人视频免费| 99国产精品自拍| 欧美高清在线观看| 男人av资源站| 精品国产一区二区三区噜噜噜 | 日本精品久久久久| 久久机这里只有精品| 欧美综合在线观看| 国产中文字幕免费| 午夜精品久久| 久久夜色精品国产欧美乱| 手机看片福利视频| 久久不见久久见免费视频7| 精品黑人一区二区三区久久| 久久精品国产99久久99久久久| 日韩欧美一区二区三区在线观看| 婷婷一区二区三区| 欧美久久在线观看| 国内在线免费视频| 亚洲激情图片小说视频| 熟女熟妇伦久久影院毛片一区二区| 精品999视频| 久久影院电视剧免费观看| 国产一区二区三区四区五区加勒比 | 91国偷自产一区二区三区观看| 日韩精品 欧美| 看黄在线观看| 懂色av影视一区二区三区| 国产69精品久久久久999小说| 欧美人与性动交α欧美精品济南到 | 超碰资源在线| 狠狠做深爱婷婷久久综合一区 | 九九**精品视频免费播放| 国产精品视频午夜| 中文字幕乱码中文字幕| 美国一区二区三区在线播放| 国产精品一区二区三| 中文字幕一区二区三区波野结 | 91这里只有精品| 亚洲国产精品成人久久综合一区| 日韩一区二区电影在线观看| а√天堂中文在线资源bt在线| 亚洲国产成人在线| 三年中文高清在线观看第6集| 久久综合之合合综合久久| 亚洲精品久久久蜜桃| 国产性生活免费视频| 第一福利在线视频| 色播五月激情综合网| 波多结衣在线观看| 精品一区二区三区中文字幕视频| 欧美成人性战久久| 色综合久久五月| 精品久久视频| 久久视频国产精品免费视频在线| 丰满少妇高潮久久三区| 99riav国产精品| 国产精品高潮粉嫩av| 国产精品国产一区二区三区四区 | 国产模特精品视频久久久久| 国产精品www| 国产高潮流白浆喷水视频| 99视频精品全部免费在线| 日本一区视频在线| 亚洲按摩av| 欧美日韩一区二区免费视频| 国产精品一区二区小说| www.国产精品一区| 亚洲网址你懂得| 永久看片925tv| 性感少妇一区| 亚洲bt天天射| 国产在线小视频| 一区二区在线观看av| 国产黄视频在线| 91亚洲精品在看在线观看高清| 亚洲国产精品字幕| 91精品少妇一区二区三区蜜桃臀| 亚洲人成毛片在线播放女女| 国产久一一精品| 午夜福利一区二区三区| 自拍偷拍国产精品| 日日摸日日碰夜夜爽av| 成人乱码手机视频| 国产一区二区三区18| 国产在线观看成人| 精品夜夜嗨av一区二区三区| 久久国产精品一区二区三区四区 | 亚洲国产成人va在线观看天堂| 亚洲综合欧美激情| 日本中文字幕在线一区| 美女福利视频一区| 中文字幕有码视频| 91丝袜呻吟高潮美腿白嫩在线观看| a级网站在线观看| 久久xxx视频| 日韩高清av一区二区三区| 欧美爱爱小视频| 久久电影网电视剧免费观看| 欧美精品一区二区三区久久| 波多野结衣在线播放| 这里只有精品99re| 99成人在线观看| 日本特黄久久久高潮| 精品国产_亚洲人成在线| 污污在线观看| 欧美一区二区三区不卡| 久久av红桃一区二区禁漫| 日韩经典一区二区| 日本电影一区二区三区| 在线天堂新版最新版在线8| 亚洲国产欧美在线成人app| 国产亚洲第一页| 国产91色综合久久免费分享| 日韩一级特黄毛片| 日本一区二区三区播放| 欧美成人精品激情在线观看| 96亚洲精品久久久蜜桃| 国产精品久久久久久亚洲毛片| 91淫黄看大片| 欧美日韩激情在线一区二区三区| 欧美性视频网站| 四虎影院在线域名免费观看| 精品久久久久久中文字幕| av网页在线观看| 国产日韩欧美在线播放不卡| 久久久久久欧美精品色一二三四| 性欧美freesex顶级少妇| 亚洲美女精品成人在线视频| 亚洲精品午夜国产va久久成人| 99久久精品99国产精品| 国产 福利 在线| 妖精视频一区二区三区免费观看| 欧美怡春院一区二区三区| 男女污视频在线观看| 日本高清免费不卡视频| 99精品欧美一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 一区二区三视频| 亚洲精品在线国产| 97色在线视频观看| 国产在线视频网| 在线不卡a资源高清| 欧美日韩在线国产| 白白色亚洲国产精品| 国产男女无遮挡| 欧美韩日一区| av一区二区三区四区电影| av资源网在线播放| 国产亚洲精品日韩| 国产精品无码免费播放| 亚洲线精品一区二区三区八戒| 国产精品无码网站| 久久精品国产999大香线蕉| 青草全福视在线| 日韩三级视频| 国产精品揄拍一区二区| 人交獸av完整版在线观看| 亚洲久久久久久久久久| 91精品国产色综合久久不8| 一级日本不卡的影视| 国产精品无码久久久久久| 九色综合国产一区二区三区| 久草视频这里只有精品| 国产最新精品| 成人av资源网| 福利一区视频| 久久久久久久国产精品视频| 成人福利在线| 亚洲第一中文字幕在线观看| 久久国产香蕉视频| 亚洲午夜久久久久久久久电影网 | 亚洲柠檬福利资源导航| 女人被狂躁c到高潮| 国产麻豆精品theporn| 一本大道熟女人妻中文字幕在线 | 国产精品欧美综合在线| 国产 xxxx| 国产精品一品二品| 午夜免费高清视频| 亚洲精品色图| www.黄色网址.com| 欧美呦呦网站| 免费av在线一区二区| 国产一区二区三区免费在线| 国产成人精品免费久久久久| 韩国日本一区| 欧美成人一区二区三区电影| а天堂8中文最新版在线官网| 日韩成人av网| 亚洲精品久久久久久久久久 | 成人黄色在线播放| 成人软件在线观看| 国语对白做受69| 91麻豆免费在线视频| 色偷偷9999www| 韩国中文免费在线视频| 亚洲大胆人体视频| 亚洲av无码一区二区乱子伦| 欧美精选午夜久久久乱码6080| 九九热在线免费观看| 亚洲成av人片在线| 久久久久亚洲av无码专区| 亚洲男人的天堂在线aⅴ视频| 久久视频精品在线观看| 久久久久久综合| 日韩精品卡通动漫网站| 成人免费视频一区| 欧美一级大片免费看| 国产伦精品一区二区三区免费| 色一情一区二区三区| 蜜桃视频一区二区| av污在线观看| 久久福利视频一区二区| 久国产精品视频| 激情五月激情综合网| 不卡的av中文字幕| 九九**精品视频免费播放| 天堂av8在线| 精品中文字幕一区二区小辣椒| 小明看看成人免费视频| 久久草av在线| 毛片毛片毛片毛| 国产精品一区二区在线播放| 国产成人精品一区二区在线小狼| 国产成人av网站| 国产日韩视频一区| 北条麻妃国产九九精品视频| 精品人妻少妇嫩草av无码| 国产性做久久久久久| 日本一卡二卡在线播放| 国产精品午夜在线| 三级在线观看免费大全| 一区二区三区丝袜| 精品成人久久久| 91国产成人在线| 一级片在线观看视频| 日韩精品中文字幕一区二区三区| 丰满人妻一区二区三区免费| 亚洲国产精品福利| 黄色免费在线播放| 久久精品国产2020观看福利| 调教一区二区| 欧美亚洲日本网站| 精品久久久网| 国产精品乱子乱xxxx| 爽爽窝窝午夜精品一区二区| 亚洲高清视频一区二区| 欧美va天堂| 日本一本二本在线观看| 久久69国产一区二区蜜臀| 亚洲熟妇一区二区| 久久久久久免费网| 多男操一女视频| 亚洲国产成人精品视频| 国产成人av免费| 欧美大片免费久久精品三p| 日韩欧美在线观看一区二区| 中文字幕日韩欧美| 国产乱妇乱子在线播视频播放网站| 日韩av大片免费看| 欧美久久亚洲| 欧美日韩日本网| 欧美fxxxxxx另类| 国产福利一区视频| 国产a久久麻豆| 免费看黄色三级| 亚洲高清不卡在线观看| 一级做a爱片久久毛片| 亚洲精品福利视频| 九色porny丨首页在线| 国产97人人超碰caoprom| 亚洲国产欧美在线观看| 天堂精品一区二区三区| 99香蕉国产精品偷在线观看| 日韩va在线观看| 久久综合久久综合久久综合| 99热精品免费| 欧美日韩免费视频| 天天在线女人的天堂视频| 欧美人与性动交| 国产原创一区| 免费一区二区三区| 欧美日韩天堂| 特级黄色片视频| 中文字幕免费不卡在线| 日日夜夜综合网| 精品久久人人做人人爱| 久久久久久国产精品免费无遮挡| 国产999在线观看| 欧美毛片免费观看| 高清无码视频直接看| 国产自产v一区二区三区c| 少妇太紧太爽又黄又硬又爽小说| 精品动漫一区二区三区| 国产高清免费观看| 日韩一区二区久久久| 日本综合视频| 欧美资源一区| 欧美中文字幕| 人妻熟女aⅴ一区二区三区汇编| 亚洲第一激情av| 亚洲第一免费视频| 欧美成人精品三级在线观看| 天天综合91| 中文字幕一区二区三区四区五区六区| 三级欧美韩日大片在线看| 亚洲av无码一区二区二三区| 天天操天天综合网| 五月天激情开心网| 97国产suv精品一区二区62| 97青娱国产盛宴精品视频| 777久久精品一区二区三区无码| 国产一区二区影院| 欧美三级在线免费观看| 欧美va亚洲va香蕉在线| 先锋成人av| 国产精品久久波多野结衣| 精品电影一区| 成人性生活免费看| 欧美性xxxx| 成a人v在线播放| 国产欧美精品一区二区三区-老狼| 精品视频久久| 黄色小视频免费网站| 亚洲人成影院在线观看| 精品国产999久久久免费| 久久久久久久久久久人体| 激情小说亚洲图片| 国产日产欧美视频| 国产精品三级在线观看| 国产一区二区麻豆| 欧美俄罗斯乱妇| 日本在线中文字幕一区| 一区二区三区国产免费| 国产精品美女久久久久久久久 | 在线观看不卡的av| 久久色精品视频| 国产精品任我爽爆在线播放| 青青青国产在线观看| 国产日韩欧美精品在线| 国产精品自偷自拍| 国内偷自视频区视频综合| 中日韩免视频上线全都免费| 天堂网在线免费观看| 亚洲精品久久久蜜桃| 天堂a中文在线| 成人在线一区二区| 亚洲黄色精品| 天堂网av2018| 精品国产91久久久久久久妲己| 国产欧美一区二区三区精品酒店| 性欧美18一19内谢| 99久久国产综合精品女不卡| 国产99久久久久久免费看| 久久99国产精品久久久久久久久| 欧美精品国产白浆久久久久| 久久婷婷综合色| 亚洲丶国产丶欧美一区二区三区| 国产三级视频在线播放线观看| 91久久久在线| 久久青草久久| 免费一级黄色大片| 亚洲色图激情小说| ccyy激情综合| 天天操天天爱天天爽| 亚洲国产精品嫩草影院| 在线看黄色av| 久久综合狠狠综合久久综青草| 国产在线日韩欧美| 天天爱天天做天天爽| 久久久久久国产精品| 四虎成人精品永久免费av九九| 北岛玲一区二区|