1. 程式人生 > >Hadoop2.0分布式集群的平臺搭建

Hadoop2.0分布式集群的平臺搭建

id_rsa 讀寫 blog -a sha frame shared urn net

一、Hadoop集群安裝前的準備
基礎環境

四臺Centos6.5
IP地址:
192.168.174.128
192.168.174.129
192.168.174.130
192.168.174.131
四臺主機新建hadoop用戶並實現ssh免密登陸
iptables關閉和selinux為disabled

1.修改主機名和ip地址映射
為了後面操作方便,修改主機名分別為hadoop01、hadoop02、hadoop03、hadoop04。修改主機名只需修改/etc/sysconfig/network文件hostname行即可,這裏博主不再復述。然後修改/etc/hosts文件,將ip地址和主機名的映射寫入進去,這樣,後面其它主機就可根據主機名去對應ip地址。

技術分享圖片
2.安裝JDK
Hadoop的核心組成之一MapReduce是基於java的,因此需要配置基本的java環境。JDK安裝十分簡單,前面也多次提到。下載jdk安裝包,解壓jdk到指定目錄。

tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/java

修改環境變量,進入/etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin

重新加載環境變量生效。JDK需在四個節點都安裝配置
3.Zookeeper安裝配置
Zookeeper是負責協調Hadoop一致性,是Hadoop實現HA的不可或缺的組件。根據Zookeeper的工作機制,需要在奇數個節點安裝Zookeeper。本文在hadoop01、hadoop02、hadoop03三個節點安裝Zookeeper。

下載zookeeper安裝包,解壓zookeeper安裝包
技術分享圖片
設置環境變量,修改/etc/profile

export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

重新加載環境變量生效
進入zookeeper解壓目錄下的conf目錄下,修改配置文件zoo.cfg,一開始並沒有zoo.cfg文件,拷貝zoo_sample.cfg文件重命名為zoo.cfg即可。
技術分享圖片
創建相應的data目錄及datalog目錄

mkdir  -p /opt/zookeeper/datalog

在每個data目錄下新建myid文件,hadoop01的myid文件寫入1,hadoop02的myid文件寫入2,即server.後的數字。另外註意給/opt/zookeeper目錄及其子目錄給hadoop用戶讀寫操作權限,因為後面使用zookeeper時是以hadoop用戶使用的。
到這裏zookeeper基本安裝配置完成,以hadoop用戶啟動zookeeper服務

zkServer.sh start

查看zookeeper狀態

zkServer.sh status

二、Hadoop安裝配置
下載hadoop安裝包,解壓hadoop安裝包
技術分享圖片
註意解壓後的目錄user和group應該為hadoop,道理與前面zookeeper一樣,在Hadoop使用過程中使用者是hadoop用戶。
設置環境變量,修改配置文件/etc/profile

export HADOOP_HOME=/usr/local/hadoop-2.6.4
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

註意hadoop需要配置bin和sbin,不然後面許多命令無法使用。重新加載環境變量生效。
然後就是修改hadoop的配置文件,進入hadoop安裝目錄下的etc/hadoop目錄下,修改配置文件:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml,其中配置文件mapred-site.xml在該目錄下有一個樣本mapred-site.xml.template,復制該文件重命名為mapred-site.xml即可。
修改配置文件hadoop-env.sh。主要是配置java目錄
技術分享圖片
修改配置文件core-site.xml

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://jsj/</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hdpdata</value>
</property>
<property>
  <name>ha.zookeeper.quorum</name>
  <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>

修改配置文件hdfs-site.xml,從配置文件名也可知這是關於HDFS的配置。

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
  <name>dfs.nameservices</name>
  <value>jsj</value>
</property>
<property>
  <name>dfs.ha.namenodes.jsj</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.jsj.nn1</name>
  <value>hadoop01:9000</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.jsj.nn2</name>
  <value>hadoop02:9000</value>
</property>
<property>
  <name>dfs.namenode.http-address.jsj.nn1</name>
  <value>hadoop01:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.jsj.nn2</name>
  <value>hadoop02:50070</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/jsj</value>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/usr/local/journaldata</value>
</property>
<property>
  <name>dfs.ha.automatic-failover.enabled</name>
  <value>true</value>
</property>
<property>
  <name>dfs.client.failover.proxy.provider.jsj</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>
  sshfence
  shell(/bin/true)
  </value>
</property>
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
  <name>dfs.ha.fencing.ssh.connect-timeout</name>
  <value>30000</value>
</property>
</configuration>

修改配置文件mapred-site.xml,即MapReduce相關配置。

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>
<property>
   <name>mapreduce.jobhistory.address</name>
   <value>hadoop03:10020</value>
</property>
<property>
   <name>mapreduce.jobhistory.webapp.address</name>
   <value>hadoop03:19888</value>
</property>
</configuration>

修改配置文件yarn-site.xml。yarn平臺的相關配置

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
   <name>yarn.log-aggregation-enable</name>
   <value>true</value>
</property>
<property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
</property>
<property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>abc</value>
</property>
<property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
</property>
<property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>hadoop01</value>
</property>
<property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>hadoop02</value>
</property>
<property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
</configuration>

最後修改slaves文件

hadoop02
hadoop03
hadoop04

至此,Hadoop集群相關配置文件配置完成,在hadoop01、hadoop02、hadoop03、hadoop04四個節點都完成相關配置。
配置文件修改完成並不代表Hadoop安裝結束,還需要幾個操作才能正常使用。
在hadoop01、hadoop02、hadoop03啟動zookeeper服務。

zkServer.sh start

在hadoop01、hadoop02、hadoop03啟動journalnode

hadoop-daemon.sh start journalnode

格式化hdfs,hadoop01執行

hdfs namenode -format

然後查看hadoop安裝目錄確保hdpdata和journaldata在hadoop01和hadoop02都有。沒有從一個節點拷貝到另一個節點。
在hadoop01啟動namenode

hadoop-daemon.sh start namenode

在Hadoop02執行

hdfs namenode -bootstrapStandby

格式化zkfc,Hadoop01執行

hdfs zkfc -formatZk

在hadoop01啟動HDFS

start-dfs.sh

完成以上操作後,Hadoop應該可以正常對外做出服務。在瀏覽器輸入hadoop01的ip地址,端口號為50070,查看HDFS的web界面是否正常對外做出服務。
技術分享圖片
在hadoop01和hadoop02啟動yarn平臺

start-yarn.sh

訪問hadoop01的ip地址的8088端口,查看yarn平臺是否正常對外做出服務。
技術分享圖片
Hadoop安裝配置完成,關於配置文件的解釋後期有時間再加上去。本文使用的安裝包是在學習過程老師給的,Hadoop是開源的,相信相關安裝包不難找到。

Hadoop2.0分布式集群的平臺搭建