hadoop2.4.1搭建完全分布式集群
準備工具
1.32位ubuntu14.04.4虛擬機
2.jdk1.7版本和hadoop2.4版本(注意jdk的版本位數必須和ubuntu的系統位數相同,hadoop在官網下載的是版本從2.5起都是64位的,這里使用的是32位的系統,所以請下載2.5版本之前的版本,hadoop歷史版本的下載地址:https://archive.apache.org/dist/hadoop/core/)
3.ubuntu系統安裝ssh
sudo apt-get install openssh-server
開始搭建
1.創建hadoop用戶
sudo addgroup hadoop #創建hadoop用戶組
sudo adduser -ingroup hadoop hadoop #創建hadoop用戶
sudo vim /etc/sudoers #給hadoop用戶添加權限,打開/etc/sudoers文件
#在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL
2.安裝JDK1.7和hadoop-2.4.1
1.將下載好的jdk1.7解壓到/home/hadoop目錄下,并重命名文件夾為jdk1.7
2.將下載好的hadoop解壓到/home/hadoop目錄下,并重命名文件夾為hadoop-2.4.1,在hadoop2.4.1文件夾下新建一個名為tmp的文件夾,用于NameNode、DataNode、JournalNode等存放數據的公共目錄。
3.配置jdk和hadoop的環境變量
gedit ~/.bashrc
#追加以下內容到.bashrc中
export JAVA_HOME=/home/hadoop/jdk1.7
export JRE_HOME=$JAVA_HOME/jre
export HADOOP_HOME=/home/hadoop/hadoop-2.4.1
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
###查看hadoop位數的方法:
cd $HADOOP_HOME/lib/native
file libhadoop.so.1.0.0
###此時可以從輸出內容看到hadoop的位數
4.保存退出,執行下列命令使之生效
source /etc/profile
5.檢測jdk和hadoop是否安裝成功
java -version #顯示出版本信息則表示安裝成功
hadoop version #顯示出版本信息則表示安裝成功
###如果出現類似找不到java命令的錯誤,請重新配置環境變量,確保文件的路徑都正確
###如果出現一些不可描述的錯誤,請確認你的jdk,hadoop,ubuntu都是相同的位數版本
3.配置hadoop
hadoop配置文件目錄為/home/hadoop/hadoop-2.4.1/etc/hadoop/
1.在yarn-env.sh 和hadoop-env.sh文件中加上JDK路徑
cd /home/hadoop/hadoop-2.4.1/etc/hadoop #切換到配置文件目錄
gedit hadoop-env.sh #添加JDK路徑 export JAVA_HOME=/home/hadoop/jdk1.7
gedit yarn-env.sh #添加JDK路徑 export JAVA_HOME=/home/hadoop/jdk1.7
2.配置 core-site.xml
#master為主機名,可以根據具體情況更改,只要是Master主機的主機名就ok
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
<final>true</final>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop-2.4.1/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
3.配置hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop-2.4.1/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop-2.4.1/dfs/data</value>
</property>
<property>
<name>dfs.replication</name> #數據副本數量,默認3,我們是兩臺設置2
<value>2</value>
</property>
</configuration>
4.配置yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
4.配置mapred-site.xml,該目錄下沒有該文件,存在一個名為mapred-site.xml.template的文件,該文件是mapred-site.xml的模板,復制該文件并重命名為mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
##編輯mapred-site.xml配置以下內容
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
5.設置slaves
gedit slaves
#輸入每個slave的主機名,也可設置ip地址,建議填寫主機名,因為在具體環境中ip地址可能不固定,導致修改工作頻繁
slave1
slave2
4.將該主機復制兩份作為slave1和slave2,原主機為master,虛擬機請使用橋接模式聯網。
5.配置對應Hosts記錄,關閉iptables
1.關閉iptables
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
#若出現不可描述的錯誤,請百度ubuntu如何關閉防火墻
2.主機間相互ping通,請百度自行解決,該步驟必須完成才可進行之后的步驟
2.修改主機名
sudo gedit /etc/hostname
#將主機名改為master,其他兩臺分別改為slave1,slave2,!!!嚴格區分大小寫。
#注銷重新登陸使其生效
3.修改/etc/hosts
#第一行的127.0.0.1 localhost不修改,之后添加
master主機IP master
slave1主機IP slave1
slave2主機IP slave2
6.配置SSH無密碼登錄(注:master本地也要實現無密碼登錄)
su - hadoop
ssh-keygen -t rsa
cd /home/hadoop/.ssh/
#登陸兩臺slave創建.ssh目錄 mkdir /home/hadoop/.ssh
#返回master將id_rsa.pub傳輸到兩個slave下的/home/hadoop/.ssh文件夾下
scp /home/hadoop/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop/.ssh/ #傳輸給slave1
scp /home/hadoop/.ssh/id_rsa.pub hadoop@slave2:/home/hadoop/.ssh/ #傳輸給slave2
#以下為每臺主機都要進行的配置
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys #兩臺slave都執行該操作
chmod 600 /home/hadoop/.ssh/authorized_keys #兩臺slave都執行該操作
chmod 700 /home/hadoop/.ssh/ ##目錄權限必須設置700,兩臺slave都執行該操作
sudo gedit /etc/ssh/sshd_config ##開啟RSA認證,兩臺slave都執行該操作
#將文件中出現的以下語句前的注釋符#號去掉,保存
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
service ssh restart
#測試無密碼登陸
#在master主機上操作
#本地登錄 ssh hadoop@master ##未出現錯誤則表示成功,出錯可能是主機名為修改為master,請用hostname命令查看主機名,若主機名正確,則是未正確安裝ssh,執行 sudo apt-get install openssh-server
#登陸slave1 ssh hadoop@slave1 ##登陸成功終端會顯示當前用戶是hadoop@slave1 退出命令 exit()
#登陸slave2 ssh hadoop@slave2 ##同上
格式化文件系統并啟動
1.格式化新的分布式文件系統
hdfs namenode -format
2.啟動HDFS文件系統并使用jps檢查守護進程是否啟動
start-dfs.sh #會輸出各節點的啟動信息
jps #可以看到master已經啟動NameNode和SecondaryNameNode進程,slave已經啟動DataNode進程
3.啟動新mapreduce架構(YARN)
start-yarn.sh
jps #可以看到master已經啟動ResourceManger進程,slave已經啟動NodeManager
4.查看集群狀態
hdfs dfsadmin -report
5.通過web查看資源(http://master:8088) or (http://master的IP:8088)
6.查看HDFS狀態(http://master:50070)or (http://master的IP:50070)
Ubuntu配置和修改IP地址
修改配置文件/etc/network/interfaces
#auto eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.120.130
gateway 192.168.120.2
netmask 255.255.255.0
dns-nameservers 192.168.120.2
.重啟網絡,使配置生效
sudo /etc/init.d/networking restart