Apache Hadoop 分佈式集羣搭建和部署

 
環境:Windows 10 VMWare Workstation 12 上兩個Centos 6版本的虛擬機。
軟件:SecureCRT / WinSCP。
 
步驟:
(1) 安裝jdk。
從Oracle官網下載jdk包,解壓到任意目錄如/usr/local/java。
輸入vi /etc/profile回車,末尾追加:
 
export JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
 
要驗證安裝成功,輸入java -version回車,輸出是下載的版本就對了,如我的輸出:
java version "1.8.0_151"
SE Runtime Environment (build 1.8.0_151-b12)
64-Bit Server VM (build 25.151-b12, mixed mode)
(2) 修改網絡、主機名相關配置。
編輯Windows下C:\Windows\System32\drivers\etc\hosts文件。假定兩臺主機名分別爲host1/host2,IP分別爲IP1/IP2,那麼需要在hosts文件末尾追加:
IP1        host1
IP2        host2
分別進入兩臺虛擬機修改主機名。以host1爲例,執行vi /etc/sysconfig/network,設定HOSTNAME=host1,執行寫入;然後執行vi /etc/hosts,末尾追加兩行
IP1        host1
IP2        host2
執行寫入。重新啓動Centos,發現登陸時主機名已經變更。
設置NAT聯網。設置虛擬機的網絡適配器使用NAT模式。
獲取vmnet8適配器IP地址。從Windows主機查看vmnet8適配器IP,位置是設置->網絡和Internet->以太網->VMware Network Adapter VMnet8。
設置虛擬機網絡。進入Centos圖形化界面,上方任務欄有個網絡圖標,右鍵單擊選Edit Connections,選擇System eth0並單擊Edit,進行網絡配置。設置IPv4連接方式爲手動、地址爲自定義、掩碼爲255.255.255.0,網關和DNS服務器爲vmnet8適配器IP地址
重啓網絡服務。在虛擬機中執行service network restart,重啓網絡,此時應該通過SecureCRT/Putty等工具連接到虛擬機了。
 
(3) 配置SSH無密碼登錄。
host1/host2中生成公鑰。執行ssh-keygen -t rsa,會在~/.ssh/生成兩個文件id_rsa/id_rsa.pub分別對應私鑰和公鑰。
將host1的公鑰發送到host2。在host1輸入cd ~/.ssh/回車,執行cat id_rsa.pub > authorized_keys,執行scp authorized_keys host2:~/.ssh/authorized_keys_new,按照提示輸入密碼。
在host2合併公鑰。輸入cd ~/.ssh/回車,執行cat authorized_keys_new >> authorized_keys,然後刪除剛纔收到的文件rm -f authorized_keys_new。
將host2的authorized_keys發送到host1。在host2執行scp authorized_keys host1:~/.ssh/,按照提示輸入密碼,完成發送。
配置結束,可以輸入ssh host1/host2進行測試了,如果無需密碼即可登錄表示配置成功了。
 
(4) 部署Apache Hadoop集羣。
從Hadoop 官網下載hadoop-2.7.5.tar.gz。使用WinSCP發送到兩臺虛擬機中。
使用tar -zxvf 命令解壓文件到/usr/local/hadoop路徑下,然後鍵入cd /usr/local/hadoop/etc/hadoop回車,準備配置Hadoop集羣。集羣內各主機配置應當保持一致,首先對master進行配置。
配置hadoop-env.sh。vi hadoop-env.sh,在末尾追加以下變量。
export JAVA_HOME=/usr/local/java/
export HADOOP_PID_DIR=/usr/local/hadoop/piddir/

 
配置core-site.xml。vi core-site.xml,在configuration標籤中加入以下屬性:
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://192.168.137.200:9000</value>
 </property>
 <property>
  <name>io.file.buffer.size</name>
  <value>131072</value>
 </property>

 <property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hadoop/tmpdir</value>
 </property>
配置hdfs-site.xml。vi hdfs-site.xml,在configuration標籤中加入以下屬性:
 <!--for namenode-->
 <property>
  <name>dfs.namenode.name.dir</name>
  <value>file:///usr/local/hadoop/dir_namenode</value>
 </property>
 <property>
  <name>dfs.hosts</name>
  <value>/usr/local/hadoop/etc/hadoop/dfs.hosts.conf</value>
 </property>
 <property>
  <name>dfs.blocksize</name>
  <value>268435456</value>
 </property>
 <property>
  <name>dfs.namenode.handler.count</name>
  <value>100</value>
 </property>
 <!--for datanode-->
 <property>
  <name>dfs.datanode.data.dir</name>
  <value>file:///usr/local/hadoop/dir_datanode</value>
 </property>

 <property>
  <name>dfs.http.address</name>
  <value>192.168.137.200:9008</value>
 </property>
 <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>192.168.137.201:9008</value>
 </property>
配置yarn-site.xml。加入以下屬性:
 <!--for resourcemgr and nodemgr-->
 <property>
  <name>yarn.acl.enable</name>
  <value>false</value>
 </property>
 <property>
  <name>yarn.admin.acl</name>
  <value>*</value>
 </property>
 <property>
  <name>yarn.log-aggregation-enable</name>
  <value>false</value>
 </property>
 
 <!--for resourcemgr-->
 <property>
  <name>yarn.resourcemanager.address</name>
  <value>192.168.137.200:9001</value>
 </property>
 <property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>192.168.137.200:9002</value>
 </property>
 <property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>192.168.137.200:9003</value>
 </property>
 <property>
  <name>yarn.resourcemanager.admin.address</name>
  <value>192.168.137.200:9004</value>
 </property>
 <property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>192.168.137.200:9005</value>
 </property>
 <property>
  <name>yarn.resourcemanager.hostname</name>
  <value>192.168.137.200</value>
 </property>
 <property>
  <name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
 </property>
 
 <property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>256</value>
 </property>
 <property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>768</value>
 </property>

 <!--for nodemgr-->
 <property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>768</value>
 </property>
 <property>
  <name>yarn.nodemanager.local-dirs</name>
  <value>file:///usr/local/hadoop/dir_yarn_nodemanager/localdir1,file:///usr/local/hadoop/dir_yarn_nodemanager/localdir2,file:///usr/local/hadoop/dir_yarn_nodemanager/localdir3</value> 
 </property>
 <property>
  <name>yarn.nodemanager.log-dirs</name>
  <value>file:///usr/local/hadoop/dir_yarn_nodemanager/logdir1,file:///usr/local/hadoop/dir_yarn/nodemanager/logdir2,file:///usr/local/hadoop/dir_yarn_nodemanager/logdir3</value>
 </property>
 <property>
  <name>yarn.nodemanager.log.retain-seconds</name>
  <value>10800</value>
 </property>
 <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
 </property>
配置mapred-site.xml。加入以下屬性:
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>
 <property>
  <name>mapreduce.map.memory.mb</name>
  <value>768</value>
 </property>
 <property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx768M</value>
 </property>
 <property>
  <name>mapreduce.reduce.memory.mb</name>
  <value>768</value>
 </property>
 <property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx768M</value>
 </property>
 <property>
  <name>mapreduce.task.io.sort.mb</name>
  <value>512</value>
 </property>
 <property>
  <name>mapreduce.task.io.sort.factor</name>
  <value>100</value>
 </property>
 <property>
  <name>mapreduce.reduce.shuffle.parallelcopies</name>
  <value>50</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.address</name>
  <value>192.168.137.200:9006</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>192.168.137.200:9007</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.intermediate-done-dir</name>
  <value>file:///usr/local/hadoop/mr-history/tmp</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.done-dir</name>
  <value>file:///usr/local/hadoop/mr-history/done</value>
 </property>
master配置完成後,將配置文件通過scp命令發送到datanode主機中,確保集羣內配置一致,這樣Hadoop集羣已經完成配置。
 
(5) 啓動Hadoop集羣。
初次啓動要進行一次格式化。切換到/usr/local/hadoop目錄下,執行bin/hdfs namenode -format 指令。如果格式化出現問題需要重新格式化,應當先將hdfs-site.xml中指定的dfs.name.dir/dfs.data.dir以及core-site.xml中指定的hadoop.tmp.dir目錄全部刪除。
格式化完成後,執行指令sbin/start-all.sh即可啓動集羣。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章