精品欧美一区二区三区在线观看 _久久久久国色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)

九九综合九九综合| 午夜精品爽啪视频| 国产精品网站入口| 精品国产av色一区二区深夜久久 | 日韩精品第二页| 亚洲欧美在线观看| 俄罗斯精品一区二区| 色哟哟一一国产精品| 久久的色偷偷| 午夜欧美视频在线观看| 欧美一区二区三区电影在线观看| 天堂网一区二区| 羞羞色午夜精品一区二区三区| 欧美一区二区视频在线观看| 男女日批视频在线观看| 亚洲aaa在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 午夜免费一区二区| 97在线观看免费观看高清| 国产毛片精品一区| 4p变态网欧美系列| 国产精品18在线| 风间由美性色一区二区三区四区| 一本久久a久久精品亚洲| 亚洲欧美日韩精品在线| 五月天婷婷社区| 久久99国产精品久久99果冻传媒| 久久全球大尺度高清视频| 受虐m奴xxx在线观看| 久久综合给合| 欧美性猛交xxxx乱大交退制版| 97超碰免费观看| 久久电影中文字幕| 国产成人99久久亚洲综合精品| 欧洲一区二区视频| 久久久久99精品成人片毛片| 国产探花一区| 亚洲精品一区二区三区蜜桃下载 | 欧美激情久久久久| 亚洲一区 欧美| 成人直播在线观看| 欧美日本在线看| 情侣黄网站免费看| 欧美v亚洲v| 亚洲欧美乱综合| 国产在线一区二区三区播放| 国产一区二区三区成人| 老牛国产精品一区的观看方式| 欧美大片第1页| 国产精品成人在线视频| 天堂av一区二区三区在线播放| 91麻豆精品国产91久久久久久久久| 黄色免费福利视频| 丁香花在线高清完整版视频| 国产精品成人免费在线| 亚洲精品国产精品国自产观看| 日本激情一区二区| 成人网在线播放| 91视频免费进入| 中文字幕一二三四| 日本欧美一区二区三区| 97精品久久久中文字幕免费| 亚洲色图综合区| 婷婷精品进入| 久久久精品国产一区二区| 强伦人妻一区二区三区| 夜色77av精品影院| 日韩成人高清在线| 中文字幕精品视频在线| 国产精品久久久久国产a级| 天天操夜夜操视频| 亚洲资源av| 欧美一级片一区| 日本少妇高清视频| 午夜精彩国产免费不卡不顿大片| 久久在线免费视频| 黄视频网站免费看| 成人国产一区二区| 少妇一级淫免费观看| 欧洲大片精品免费永久看nba| 欧美经典一区| 91精品国产综合久久国产大片 | 日韩一级片免费在线观看| 国产91丝袜在线播放| 99电影网电视剧在线观看| 97在线公开视频| 国产精品一区在线观看乱码| 97超级碰碰| 亚洲在线观看av| 狠狠色丁香久久婷婷综合丁香| 91亚洲国产成人精品性色| 国产日韩欧美视频在线观看| 精品亚洲国产成人av制服丝袜 | 亚洲黄色网址在线观看| 96av在线| 欧美午夜电影在线播放| 国产女主播在线播放| 欧美日韩有码| 久久青草精品视频免费观看| 中文字幕av网站| www.色精品| 中文字幕一区二区三区5566| 高清毛片在线观看| 欧美丰满少妇xxxxx高潮对白| 亚洲自拍偷拍精品| 国产精品麻豆久久| 国产91成人在在线播放| 国产视频aaa| 久久久www成人免费毛片麻豆| 日本福利视频在线观看| 亚洲伦乱视频| 亚洲国产精品小视频| 天堂av免费在线| 老鸭窝亚洲一区二区三区| 亚洲一区二区三区在线免费观看| 免费看男男www网站入口在线| 亚洲影院在线观看| 国产精品一区二区小说| 日韩在线黄色| 欧美精品videos| 国产免费黄色录像| 亚洲国产精品99久久久久久久久| 亚洲美免无码中文字幕在线 | 久久国产视频精品| 秋霞午夜鲁丝一区二区老狼| 欧美日本一道本| 制服丝袜第一页在线观看| 天天操夜夜操国产精品| 国产脚交av在线一区二区| 欧美自拍偷拍第一页| 亚洲另类色综合网站| 天堂网在线免费观看| 亚洲人成网亚洲欧洲无码| 久久久久久久久网站| 国产女主播福利| 国产精品国产馆在线真实露脸 | 黄色片在线观看网站| 日韩精品一级中文字幕精品视频免费观看 | 91麻豆国产精品久久| 天堂8在线天堂资源bt| 国产精品日本一区二区不卡视频| 日韩在线视频国产| 中文字幕在线日亚洲9| 国产日产欧美一区二区三区| 无码精品a∨在线观看中文| 福利电影一区| 久久噜噜噜精品国产亚洲综合 | 国产精品88久久久久久妇女| 99久久久成人国产精品| 日韩性生活视频| 97精品人妻一区二区三区香蕉| 国产精品沙发午睡系列990531| 久久精品免费网站| 成人看的视频| 91精品久久久久久久| 久久黄色美女电影| 欧美一级欧美三级在线观看| 欧美日韩在线视频免费| 国产成人午夜精品影院观看视频| 草草草视频在线观看| 一区中文字幕电影| 海角国产乱辈乱精品视频| 隣の若妻さん波多野结衣| 亚洲成年人影院| 丰满少妇一区二区三区| 老**午夜毛片一区二区三区| 神马一区二区影院| 精品视频在线播放一区二区三区 | 国产老妇另类xxxxx| 欧洲美女和动交zoz0z| 日韩视频在线直播| 午夜欧美大片免费观看| 欧美一区二区三区少妇| 欧美性受极品xxxx喷水| 任我爽在线视频| 国产成人精品综合在线观看 | 精品中文av资源站在线观看| 欧美大片免费播放| 青青久久av| 国产精品三级在线| 1024在线播放| 亚洲欧美在线免费观看| 88av在线视频| 午夜一区二区三区视频| 在线视频第一页| 国产经典欧美精品| 男人的天堂99| 一区二区三区毛片免费| 久久久久久久久久码影片| 成人免费视频观看| 国内成人精品一区| 99视频在线观看地址| 日韩精品在线一区二区| 亚洲综合久久网| 亚洲精选在线视频| 精品少妇人妻一区二区黑料社区| 久久97超碰色| 日韩视频第二页| 欧美精品色网| 欧洲精品久久| 美国成人xxx| 成人写真视频福利网| av电影在线地址| 久久精品亚洲94久久精品| 偷拍25位美女撒尿视频在线观看| 国产精品久久久久毛片大屁完整版 | 91精品91久久久中77777| 久久精品视频18| 国产成人一区二区精品非洲| 国产麻花豆剧传媒精品mv在线| 欧美日韩专区| 亚洲欧美日韩精品综合在线观看| 欧美wwwwww| 国产精品第100页| 欧美三根一起进三p| 91麻豆精品在线观看| 91人妻一区二区三区| 日韩有码一区二区三区| 欧美成人午夜精品免费| 我不卡影院28| 日韩高清国产精品| 欧美aaaaaaaa牛牛影院| 999在线观看免费大全电视剧| 日韩毛片无码永久免费看| 国产精品一区免费视频| 天堂中文视频在线| 国产精品综合色区在线观看| 成年丰满熟妇午夜免费视频| 成人午夜av| 欧美精品成人一区二区在线观看| 国产成人tv| 91在线免费看片| 天天综合91| 国产狼人综合免费视频| 成人日韩精品| 国产成人亚洲精品| 亚洲少妇视频| 国内免费久久久久久久久久久| 成年人黄视频在线观看| 精品国产一区av| 欧美激情免费| 精品国产一区二区三区久久狼5月| 国产资源在线看| 亚洲欧美成人网| 欧美伦理影视网| 亚洲偷熟乱区亚洲香蕉av| 日本成人一区| 亚洲一区二区黄| 国产在线小视频| 伊人成人开心激情综合网| 波多野结衣一区二区| 一区二区三区黄色| 2019中文字幕在线视频| 日韩一区二区三区在线播放| 在线激情小视频| 日韩三级影视基地| 四虎影视国产在线视频| 欧美国产精品人人做人人爱| 日韩123区| 国外成人在线视频| 丝袜美腿一区| 国产精品美女999| 成人豆花视频| aaa级精品久久久国产片| 加勒比色综合久久久久久久久| 激情伦成人综合小说| 国产在线观看91一区二区三区| 日韩久久在线| 亚洲一区二区日韩| 国产一二三在线视频| 噜噜噜久久亚洲精品国产品小说| 男人的天堂99| 国产真实乱偷精品视频免| 2025中文字幕| 久久久91精品国产一区二区三区| 91麻豆精品国产91久久久久久久久| 91香蕉一区二区三区在线观看| 中文字幕亚洲欧美在线不卡| 欧美毛片在线观看| 岛国av在线不卡| 国产又粗又猛又黄又爽| 精品sm在线观看| 阿v免费在线观看| 欧美高清videos高潮hd| 成人性生交大片免费观看网站| 国产精品尤物福利片在线观看| 婷婷视频一区二区三区| 欧美成人在线免费观看| 亚洲一级淫片| 欧美女人性生活视频| 国内精品久久久久影院一蜜桃| 久久久久成人精品无码中文字幕| 国产日韩影视精品| 久久黄色免费视频| 在线免费不卡电影| 亚洲不卡免费视频| 在线a欧美视频| 2021中文字幕在线| 91精品久久久久久久久青青| 欧美三级电影在线| 国产免费一区二区三区四在线播放| 99视频一区| 特级黄色片视频| 日本一区二区三区久久久久久久久不| 老妇女50岁三级| 欧美综合久久久| 天天操天天干天天舔| 北条麻妃99精品青青久久| 亚洲校园激情春色| 国产成人亚洲欧美| 99久久精品网站| 亚洲人成无码www久久久| 国产成a人亚洲| 亚洲熟女毛茸茸| 在线免费av一区| 青青操在线视频| 欧美激情极品视频| 国产精品va视频| 婷婷久久伊人| 久久亚洲视频| 亚洲av片不卡无码久久| 亚洲一区中文在线| 国内老熟妇对白hdxxxx| 少妇久久久久久| 巨胸喷奶水www久久久| 麻豆视频成人| 亚洲欧美成人| 国产精品成人99一区无码| 亚洲色图欧美在线| 97精品人妻一区二区三区香蕉| 亚洲偷欧美偷国内偷| 另类专区亚洲| 欧美日韩在线不卡一区| 欧美亚洲视频| 魔女鞋交玉足榨精调教| 精品电影在线观看| 人妻91麻豆一区二区三区| 久做在线视频免费观看| 7777女厕盗摄久久久| 国产小视频免费在线网址| 91sa在线看| 欧美五码在线| 无码人妻丰满熟妇区96| 99久久精品99国产精品| 国产精品a成v人在线播放| 精品久久国产97色综合| 污的网站在线观看| 99re国产视频| 亚洲福利久久| 少妇饥渴放荡91麻豆| 懂色aⅴ精品一区二区三区蜜月| 手机看片1024国产| 欧美在线观看视频| 久久不见久久见中文字幕免费| 欧美综合在线观看视频| 国产人成亚洲第一网站在线播放| 波多野结衣日韩| 中文字幕成人精品久久不卡| 国产黄色精品| 国产一二三四区在线观看| 国产成人亚洲综合色影视| 日本三级黄色大片| 精品视频在线观看日韩| 日韩三区免费| 色爽爽爽爽爽爽爽爽| 成人爽a毛片一区二区免费| 中文字幕亚洲精品一区| 亚洲无限av看| 91精品国产一区二区在线观看| 97av中文字幕| 26uuu欧美| 精品国产综合区久久久久久| 欧美在线三级| 亚洲精品国产成人av在线| 日韩欧美一区视频| 日本www在线| 精品1区2区| 男人的j进女人的j一区| 极品久久久久久| 亚洲精品福利在线| 朝桐光一区二区| 亚洲天堂第一区| 久久综合色天天久久综合图片| 中文区中文字幕免费看| 欧美大尺度在线观看| 日本成人a网站| 丁香花在线影院观看在线播放| 伊人久久婷婷| 老牛影视av老牛影视av| 欧美三级日韩三级| 牛牛精品在线视频| 欧洲精品久久| xxxx成人| 国产亚洲情侣一区二区无| 三级不卡在线观看| 日韩欧美中文字幕视频| 亚洲欧美中文另类| 一区视频网站| 777一区二区| 色偷偷88欧美精品久久久|