hadoop2.4.1搭建完全分布式集群

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容