基於CentOS6.5系統Hadoop2.7.3完全分散式叢集搭建詳細步驟
前言:本次搭建hadoop叢集使用虛擬機器克隆方式克隆slave節點,這樣做可以省去很多不必要的操作,來縮短我們的搭建時間。
一、所需硬體,軟體要求
使用 VMWare構建三臺虛擬機器模擬真實物理環境
作業系統:CentOS6.5
二、必備條件
hadoop搭建需要在三臺機器上進行,並且不能是root使用者,我們需要建立普通使用者,進行下面的操作,三臺機器分別都要建立普通使用者,而且三臺機器上的使用者名稱稱是相同的。
注意:以下操作除了修改/etc目錄下檔案內容,和建立使用者等使用root許可權,其他所有操作均使用普通使用者許可權
a.建立使用者並設定密碼
$>useradd scott $>passwd scott
三、設定靜態ip
1.關閉DHCP
開啟:VMWare-->編輯-->虛擬網路編輯器-->選中VMB--關閉DHCP
2.開啟虛擬機器,修改相關網路檔案
修改eth0檔案【/etc/sysconfig/network-scripts/ifcfg-eth0】
$>gedit /etc/sysconfig/network-scripts/ifcfg-eth0
修改內容,沒有的選項請補充:
BOOTPROTO=static #設定網絡卡獲得ip地址的方式,可能的選項為static,dhcp或bootp,分別對應靜態指定的 ip地址,通過dhcp協議獲得的ip地址,通過bootp協議獲得的ip地址 ONBOOT=yes #對應的子網廣播地址,保持在同一個網段,末尾是255 BROADCAST=192.168.111.255 #設定自己喜歡的ip地址,保持在同一個網段 IPADDR=192.168.111.152 #網絡卡對應的網路掩碼 NETMASK=255.255.255.0 #保持在同一網段,末尾設定為2 GATEWAY=192.168.111.2 #子網 NETWORK=192.168.111.0 #DNS1伺服器地址,保持在同一個網段,末尾設定為2 DNS1=192.168.111.2 這兩個GATEWAY,DNS必須按照上面的規則設定,否則是無法ping通的.
3.生效網路
$>service network restart
4.修改主機名和ip對映
$>su
$>vi /etc/hosts
追加內容:
192.168.111.151 master
重啟生效:
$>reboot
5.windows設定靜態ip
修改windows中的VMWare8的網路地址為靜態ip,否則windows系統會ping不通虛擬機器,也沒有辦法使用遠端工具
四、關閉防火牆,Selinux服務
說明:不關閉這兩個我們的外部網路是不可以訪問虛擬機器CentOS系統的
1.關閉防火牆
永久關閉防火牆命令:
$>chkconfig iptables off
$>chkconfig ip6tables off
檢視防火牆狀態:
$>chkconfig iptables --list
$>chkconfig ip6tables --list
2.關閉selinux
$>vi /etc/sysconfig/selinux
修改內容:
【
找到:selinux=enforcing
更改為:selinux=disabled
】
3.重啟系統,生效
$>su
$>reboot
五、解壓JDK/HADOOP軟體,並配置環境變數
可以使用SSH遠端工具把軟體上傳到我們的虛擬機器上,
SSH使用方法請參考部落格:
https://blog.csdn.net/lg_49/article/details/80199602
1.解壓相關軟體
$>tar -zxvf jdk.xxx.tar.gz
$>tar -zxvf hadoop.2.7.3.tar.gz ~/soft
2.建立軟連結
建立軟連結便於我們以後的版本切換
$>ln -s jdk.xxx/ jdk
$>ln -s hadoop.xxx/ hadoop
4.配置環境變數
$>cd ~
$>vi .bash_profile 或使用:gedit
在檔案最後追加一下內容:
#jdk install
export JAVA_HOME=/home/hyxy/soft/jdk
export PATH=$JAVA_HOME/bin:$PATH
#hadoop install
export HADOOP_HOME=/home/hyxy/soft/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
讓環境變數生效:
$>source .bash_profile
說明:
1.我們這檔案.bash_profile配置的環境變數,只有當前普通使用者組的使用者可以使用
2.重新整理完之後,只有當前會話可用,建議reboot(重啟),使用命令:
$>su
$>reboot
六、配置SSH免密登入
1.修改主機名稱
$>su
$>vi /etc/sysconfig/network
修改內容:【HOSTNAME=master】
重啟生效:
$>reboot
2.生成金鑰
$>ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
說明:
-t:設定生成金鑰的演算法,採用rsa演算法
-P:設定密碼,預設為空
-f:設定金鑰生成的檔案位置,~/.ssh
3.生成認證庫
$>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4.修改認證庫(authorized_keys)的許可權為600
$>chmod 600 ~/.ssh/authorized_keys
5.免密登入成功
ssh master
七、克隆兩個節點
虛擬機器克隆參考部落格:
https://blog.csdn.net/lg_49/article/details/80412192
注意:三臺機器上的ip地址都應是不同的,所以修改
/etc/sysconfig/network-scripts/ifcfg-eth0檔案中的IPADDR為相同ip段不同ip地址
$>su
$>vi /etc/sysconfig/network-scripts/ifcfg-eth0
八、修改主機名【master(主)、slave1(從)、slave2(從)】
$>su
$>vi /etc/sysconfig/network
修改內容格式例:【HOSTNAME=slave1】
九、修改ip和主機名的對映:【/etc/hosts】
$>su
$>vi /etc/hosts
追加內容:
192.168.111.151 master
192.168.111.152 slave1
192.168.111.153 slave2
主機和克隆機這個檔案都要追加
十、修改hadoop配置檔案
進入~/soft/hadoop/etc/hadoop
使用命令:
cd ~/soft/hadoop/etc/hadoop
1.vi core-site.xml
新增內容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hyxy/tmp/hadoop</value>
</property>
</configuration>
2.vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>
預設塊複製。副本數
建立檔案時可以指定實際的複製次數。
如果在建立時未指定複製,則使用預設值。
</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>
3.vi mapred-site.xml
增加內容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>用於執行MapReduce作業的執行時框架。
可以是local,classic或yarn之一。
</description>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
<description>MapReduce JobHistory伺服器IPC主機:埠</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
<description>MapReduce JobHistory伺服器Web UI主機:埠</description>
</property>
< /configuration>
注:發現我們沒有這個檔案,我們需要把mapred-site.xml .template複製一份,命名成mapred-site.xml ,
執行命令:
cp mapred-site.xml.template mapred-site.xml
4.vi yarn-site.xml
增加內容:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
<description>RM的主機名。</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>以逗號分隔的服務名稱應該僅限於服務名稱列表
包含a-zA-Z0-9_並且不能以數字開頭</description>
</property>
</configuration>
5.vi slaves
把原來的localhost刪除,新增:
slave1
slave2
注意:這裡是初學者比較糾結的事情,所以不用糾結不管是主機還是從機內容都是一樣的,這裡也可以是從機的ip地址,因為我們配置了/etc/hosts這個檔案,所以我們可以使用名稱來找到對應的ip地址。
6.vi hadoop-env.sh
找到這個位置,並修改
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
修改內容:
export JAVA_HOME=/home/llg/soft/jdk
jdk的安裝路徑
7.vi yarn-env.sh
新增JAVA_HOME
我們需要改變的檔案為下面幾個:
注意:
1)將hosts檔案分發到所有節點
$>scp /etc/hosts [email protected]:/etc/
2) 將hadoop目錄分發到所有從節點
$>scp -r ~/soft/hadoop/etc/hadoop [email protected]:~/soft/hadoop/etc
十一、格式化
a. 刪除hadoop.tmp.dir路徑下的所有檔案(所有節點)
b. 刪除HADOOP_LOG_DIR設定路徑下的日誌檔案(所有節點)
c. 格式化:
$>hdfs namenode -format(主節點)
注:
1.這個是命令使用普通使用者執行的,不能使用root許可權,會報錯,並且是在主節點上執行的
2.如果你的hadoop叢集搭建成功了,這個格式化只需要執行一次,你想再格式化之前,請把上面a、b兩個檔案刪除乾淨
十二、開啟完全分散式:
$>start-all.sh
使用命令檢視工作程序
$>jps
瀏覽器上輸入:http://192.168.111.151:50070/,出現:
並且可以檢視到有兩個存活節點,表示搭建成功,如果不成功不要氣餒,檢視日誌檔案~/soft/hadoop/logs找到錯誤
我們可以使用命令:
$>hadoop fs -put ./test.txt /
上傳檔案到我們hadoop根目錄
檢視我們是否上傳成功:
出現:
十三、關閉完全分散式:
$>stop-all.sh
到此我們的hadoop環境就搭建成功了!!!
十四、補充知識:
1.解決CentOS6.5sudo不可用問題
修改/etc/sudoers檔案
$>su
$>visudo
在
root ALL=(ALL) ALL
下插入:
hyxy ALL=(ALL) ALL
2.補充命令:
安全模式解除指令:
$>hadoop dfsadmin -safemode leave
刪除hadoop叢集檔案指令:
$>hadoop fs -rm /test.txt