天天看點

Hadoop配置—完全分布式

Hadoop分為三種配置模式:獨立模式(standalone|local),僞分布模式(Pseudodistributed mode),完全分布式(full distributed)
說在前面
  • 工作環境:VMware® Workstation 12 Pro 12.5.6 build-5528349
  • linux版本:CentOS-7-x86_64-Minimal-1611.iso
  • JDK版本:jdk-8u65-linux-x64.tar.gz
  • Hadoop版本:hadoop-2.7.6.tar.gz

溫馨提示: 配置完全分布式前請先嘗試配置僞分布式,這會對配置完全分布式很有用!

準備工作
說明一:配置完全分布式需要四台主機(至少需要四台,以後可以追加),是以需要準備足夠大的磁盤空間(每台虛拟機20G,100G左右差不多,因為到後面估計還要擴容)。由于在僞分布模式的時候已經配置了一台,是以其他三台就從這台克隆就可以了(注意:該文檔中的完全分布式配置是基于僞分布模式配置的,是以請先配置僞分布模式!!!當然也可以自行配置,隻需要在下面步驟中對僞分布模式的一些修改跳過即可)

一. 修改主機名

說明(我自己的虛拟機情況):

  • 主機1ip : 192.168.32.201
//修改主機名為201
$> sudo nano /etc/hostname

//修改hosts檔案
$> sudo nano /etc/hosts
127.0.0.1 localhost
192.168.32.201 s201   //主機1 IP 和 主機名 s201
192.168.32.202 s202   //主機2 IP 和 主機名 s202
192.168.33.203 s203   //主機3 IP 和 主機名 s203
192.168.32.204 s204   //主機4 IP 和 主機名 s204
           
  • 主機1用于存放名稱節點(namebnode),其他三台主機用于存放資料節點(datanode)

克隆主機

  • 克隆三台主機:右鍵主機1——>管理——>克隆——>克隆自虛拟機目前狀态——>建立完整克隆 … 完成(以此方式克隆出另外兩台主機)
  • 啟用共享檔案夾(VMware克隆出來的主機已經預設啟用了共享檔案夾,共享檔案夾和主機1相同,如果沒有啟用,選擇設定進行啟用就可以了)
  • 修改hostname和ip位址(hostanme同上)
//隻需要将IPADDR改為靜态ip就行
$> sudo nano /etc/sysconfig/network-scripts/ifcfg-ethxxxx

//如下,隻需要将IPADDR修改為192.168.32.202,其他設定不用變
    iTYPE=Ethernet
    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=no
    IPV6_AUTOCONF=no
    IPV6_DEFROUTE=no
    IPV6_PEERDNS=no
    IPV6_PEERROUTES=no
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=1c4e0233-8fca-47f7-9cf5-5aa94e0319fa
    DEVICE=ens33
    ONBOOT=yes
    
    IPADDR=192.168.32.202
    NETMASK=255.255.255.0
    GATEWAY=192.168.32.2
    DNS1=8.8.8.8
    DNS2=8.8.4.4

           
  • 重新開機網絡服務
$> service network restart

重新開機後 ping s201 和 ping www.baidu.com

如果成功,則ip配置沒有問題,網絡連接配接也沒有問題!
           
配置完全分布式
上面已經準備好了四台能上網的主機,原料已經備齊,現在就可以動手配置了。

一. 配置SSH(讓s201能夠無密登入其他三台主機,配置兩種使用者:本機使用者和root使用者,配置方式相同)

  • 删除所有主機上的 ./ssh 下的所有檔案
$> rm -rf /home/centosmin0/.ssh/*
           
  • 在s201主機上重新生成秘鑰對
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
           
Hadoop配置—完全分布式
  • 主機s201:追加公鑰到~/.ssh/authorized_keys檔案中,并修改檔案的權限為644
$>cd ~/.ssh
$>cat id_rsa.pub >> authorized_keys
$>chmod 644 authorized_keys
           
Hadoop配置—完全分布式
  • 将s201的公鑰檔案id_rsa.pub遠端複制到202 ~ 204主機上。并放置在/home/centos/.ssh/authorized_keys下
$>scp id_rsa.pub [email protected]:/home/centosmin0/.ssh/authorized_keys
$>scp id_rsa.pub [email protected]:/home/centosmin0/.ssh/authorized_keys
$>scp id_rsa.pub [email protected]:/home/centosmin0/.ssh/authorized_keys
           
Hadoop配置—完全分布式

配置成功後,直接可以在主機s201上通過 ssh + 主機名 + 指令 的方式通路其他主機

Hadoop配置—完全分布式

二. 配置(核心)

  • 修改${hadoop_home}/etc/hadoop/ 下的幾個配置檔案
    • 修改core-site.xml配置檔案(将hdfs://localhost/ 改為 hdfs://s201/)
    //s201為主機名,代表存放名稱節點的主機,由其管理其他資料節點
    <?xml version="1.0" encoding="UTF-8"?>
    	<?xml-stylesheet type="text/xsl" href="configuration.xsl" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" ?>
    	<configuration>
    			<property>
    					<name>fs.defaultFS</name>
    					<value>hdfs://s201/</value>
    			</property>
    	</configuration>
               
    Hadoop配置—完全分布式
    • 修改core-site.xml配置檔案(将value值改為3,有三台存放資料節點的主機)
    <?xml version="1.0" encoding="UTF-8"?>
    	<?xml-stylesheet type="text/xsl" href="configuration.xsl" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" ?>
    	<configuration>
    			<property>
    					<name>dfs.replication</name>
    					<value>3</value>
    			</property>
    	</configuration>
               
    Hadoop配置—完全分布式
    • mapred-site.xml檔案不用修改,修改yarn-site.xml(将value值改為主機s201,即儲存名稱節點的主機)
    <?xml version="1.0"?>
    	<configuration>
    			<property>
    					<name>yarn.resourcemanager.hostname</name>
    					<value>s201</value>
    			</property>
    			<property>
    					<name>yarn.nodemanager.aux-services</name>
    					<value>mapreduce_shuffle</value>
    			</property>
    	</configuration>
               
    Hadoop配置—完全分布式
    • 修改slaves檔案和hadoop-env.sh檔案(slaves檔案裡面記錄的是叢集裡所有DataNode的主機名)
    $> nano slaves
    添加:s202
    	  s203
    	  s204
    
    $> nano hadoop-env.sh
    export JAVA_HOME=/soft/jdk
               
    • 将以上所有的修改均配置設定到其他三台主機(s202, s203, s204)
    $>cd /soft/hadoop/etc/
    $>scp -r full [email protected]:/soft/hadoop/etc/
    $>scp -r full [email protected]:/soft/hadoop/etc/
    $>scp -r full [email protected]:/soft/hadoop/etc/
               
    Hadoop配置—完全分布式
  • 删除符号連結(在僞分布模式的時候建立了符号連結hadoop,讓其指向了僞分布模式的配置,現在需要将其删除,如果沒有配置僞分布模式,可以不用管此步驟,直接跳到下一步)
$>cd /soft/hadoop/etc
$>rm hadoop
$>ssh s202 rm /soft/hadoop/etc/hadoop
$>ssh s203 rm /soft/hadoop/etc/hadoop
$>ssh s204 rm /soft/hadoop/etc/hadoop
           
Hadoop配置—完全分布式
  • 建立符号連結
$>cd /soft/hadoop/etc/
$>ln -s full hadoop
$>ssh s202 ln -s /soft/hadoop/etc/full /soft/hadoop/etc/hadoop
$>ssh s203 ln -s /soft/hadoop/etc/full /soft/hadoop/etc/hadoop
$>ssh s204 ln -s /soft/hadoop/etc/full /soft/hadoop/etc/hadoop
           
Hadoop配置—完全分布式
Hadoop配置—完全分布式
  • 删除臨時目錄檔案和hadoop日志
//删除臨時目錄檔案
$>cd /tmp
$>rm -rf hadoop-centosmin0
$>ssh s202 rm -rf /tmp/hadoop-centosmin0
$>ssh s203 rm -rf /tmp/hadoop-centosmin0
$>ssh s204 rm -rf /tmp/hadoop-centosmin0

//删除hadoop日志
$>cd /soft/hadoop/logs
$>rm -rf *
$>ssh s202 rm -rf /soft/hadoop/logs/*
$>ssh s203 rm -rf /soft/hadoop/logs/*
$>ssh s204 rm -rf /soft/hadoop/logs/*
           
  • 格式化檔案系統
$>hadoop namenode -format
           
  • 啟動hadoop程序
$>start-all.sh
           

如下圖:s201成功啟動了namenode程序,s202 ~ s204 成功啟動了datanode程序

Hadoop配置—完全分布式

如下圖:在web端檢視(192.168.32.201:50070)

Hadoop配置—完全分布式

OK,大功告成!!!

調試
如果不幸出錯,請按以下步驟進行調試
  • 檢視日志檔案(名稱節點檢視主機s201,資料節點就去對應的資料節點主機檢視)
$> cat /soft/hadoop/logs

//假如出現程序被占用的情況,則找到該程序,并殺死該程序

$>netstat -apno | grep 端口

//列出目前程序
$>jps

$> kill -9 程序号
           
Hadoop配置—完全分布式
  • 删除臨時目錄檔案和hadoop日志
//删除臨時目錄檔案
$>cd /tmp
$>rm -rf hadoop-centosmin0
$>ssh s202 rm -rf /tmp/hadoop-centosmin0
$>ssh s203 rm -rf /tmp/hadoop-centosmin0
$>ssh s204 rm -rf /tmp/hadoop-centosmin0

//删除hadoop日志
$>cd /soft/hadoop/logs
$>rm -rf *
$>ssh s202 rm -rf /soft/hadoop/logs/*
$>ssh s203 rm -rf /soft/hadoop/logs/*
$>ssh s204 rm -rf /soft/hadoop/logs/*
           
  • 格式化檔案系統
$>hadoop namenode -format
           
  • 啟動hadoop程序
$>start-all.sh
           
  • 對應還有關閉hadoop程序
$>stop-all.sh
           
Hadoop配置—完全分布式

提示:善于檢視hadoop日志是調試的關鍵!!!

上一篇: PAT乙級1041
下一篇: PAT乙級1023