1. 程式人生 > >Hadoop叢集環境搭建(雲伺服器,虛擬機器都適用)

Hadoop叢集環境搭建(雲伺服器,虛擬機器都適用)

  1. 為了配置方便,為每臺電腦配置一個主機名:
    • vim /etc/hostname
    • 各個節點中,主節點寫入:master , 其他從節點寫入:slavexx
    • 如果這樣修改不能生效,則繼續如下操作
    • vim /etc/cloud/cloud.cfg 做preserve_hostname: true 修改
    • reboot重啟,這時應該就修改過來了
  2. 主機名稱與ip的繫結:(雲伺服器配置這裡有大坑
    • vim /etc/hosts 新增如下資訊
    • 本機ip 本機hostname
    • 其他節點xx的ip 其他節點xx的hostname
    • 需要注意的是,如果是雲伺服器搭建,一般買來的伺服器會提供一個內網ip,一個公網ip,這裡配置時,其他節點ip是公網ip,本機ip是ifconfig得到的內網ip
  3. 上面配置生效可能要reboot重啟
  4. 設定ssh免登入處理,也就是master節點無密碼登入各個slave節點:
    • 根目錄中,檢視是否有.ssh的配置檔案,有就要先刪除: rm -rf ~/.ssh
    • 在master的節點上生成ssh key: ssh-keygen -t rsa 一路回車
    • 將公鑰資訊儲存到另一個檔案:
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      
    • 將公鑰資訊複製到id_rsa_master.pub:
      cp .ssh/id_rsa.pub ~/id_rsa_master.pub
      
    • 將此id_rsa_master.pub檔案,複製到各個slave節點的~/.ssh目錄中去(可以通過secureCRT提供的ftp功能)
    • 免登入測試:ssh [email protected] 此時就進入了從節點slavexx的終端,退出可以用exit
  5. 在/usr/local/hadoop 中建立如下目錄:mkdir hdfs hdfs/tmp hdfs/data hdfs/name。 如果hadoop出問題,需要重新配置時,這些檔案記得徹底刪除再重新建立
  6. 進入 cd /usr/local/hadoop/etc/hadoop ,準備對如下四個檔案進行配置:
  7. 配置core-site.xml檔案,在標籤中新增如下程式碼,注意hadoop.tmp.dir的value目錄與剛剛建立的tmp目錄要一致
    	<property>
                <
    name
    >
    hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/hdfs/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property>
  8. 配置 hadoop-env.sh檔案
    # The java implementation to use.
    export JAVA_HOME=/usr/local/jdk
    
  9. 配置 yarn-env.sh檔案
    # some Java parameters
    export JAVA_HOME=/usr/local/jdk
    
  10. 配置hdfs-site.xml,在標籤中新增如下程式碼。注意其中dfs.namenode.name.dir和dfs.datanode.data.dir的value和之前建立的/hdfs/name和/hdfs/data路徑一致;因為我只有一個從節點slave1,所以dfs.replication設定為1
    	<property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/hdfs/name</value>
                <final>true</final>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/hdfs/data</value>
                <final>true</final>
        </property>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>master:9001</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>true</value>
        </property>
    
  11. 複製mapred-site.xml.template模板檔案:cp mapred-site.xml.template mapred-site.xml ,然後在標籤中新增如下程式碼:
    	<property>
    		<name>mapreduce.framework.name</name>
    		<value>yarn</value>
    	</property>
    
  12. 配置yarn-site.xml,在標籤中新增如下程式碼:
    	<property>
    		<name>yarn.resourcemanager.address</name>
    	 	<value>master:18040</value>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.scheduler.address</name>
    		<value>master:18030</value>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.webapp.address</name>
    		<value>master:18088</value>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.resource-tracker.address</name>
    		<value>master:18025</value>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.admin.address</name>
    		<value>master:18141</value>
    	</property>
    	<property>
    		<name>yarn.nodemanager.aux-services</name>
    		<value>mapreduce_shuffle</value>
    	</property>
    	<property>
     		<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
     		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
    	</property>
    
  13. 配置slaves 檔案:vim slaves 新增所有從節點的hostname,然後儲存退出
  14. 配置masters檔案:vim masters 新增主節點的hostname,然後儲存退出
  15. 要確保所有節點的防火牆已經關閉,以防出現一下錯誤:(雲伺服器配置這裡有大坑
    • could only be replicated to 0 nodes instead of minReplication (=1). There are …
    • ubuntu中的防火牆是ufw防火牆:狀態檢視:ufw status 開啟:ufw enable 關閉:ufw disable
    • 需要注意的是,如果是雲伺服器搭建,有的雲服務平臺會預設開啟一些埠的防火牆,比如阿里雲的伺服器就預設開啟了三個埠的防火牆,此時要想在不同節點之間成功傳輸資料,就要:1,把ubuntu裡的防火牆關了 2,把阿里雲伺服器上提供的防火牆埠全部開啟。
  16. 各個節點都要進行如上配置
  17. 在master節點格式化系統: hdfs namenode -format
  18. 終端輸入:jps 命令,若主節點出現如下程序:
    5664 SecondaryNameNode
    14392 Jps
    5821 ResourceManager
    5439 NameNode
    
    從節點出現如下程序:
    21557 NodeManager
    21432 DataNode
    24558 Jps
    
    則說明配置成功
  19. 接下來可以試著編寫一個hadoop界的“hello world”程式:wordcount,來測試一下配置好的叢集了。