天天看點

Hadoop完全分布式環境搭建

本次環境搭建使用Ubuntu虛拟機完成

在搭建Hadoop環境之前需要安裝VMware和Ubuntu虛拟機,這邊就不再贅述,在本文中使用了Ubuntu16.04作為虛拟機,一共四台虛拟機,其中一台作為NameNode其他三台作為DataNode,因為有很多配置都是重複的,是以我們先在一台機器上配置完成之後,采用複制虛拟機的方式完成所有機器的環境配置

安裝JDK

NameNode也就是master節點的ip 是192.168.88.130,在這台機器上首先安裝JDK,JDK版本是1.8.0_151,下載下傳JDK之後進行解壓,

tar -zxvf jdk-8u151-linux-x64.tar.gz

然後将解壓出來的檔案夾放到/usr/local/下(需要root權限)

sudo mv jdk1.8.0_151 /usr/local/

在 /etc/profile 檔案中設定環境變量

#set Java environment
export JAVA_HOME=/usr/local/jdk1._151
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
           
source /etc/profile 讓環境變量生效

使用java -version進行驗證

安裝Hadoop

首先從官網上下載下傳Hadoop壓縮包 hadoop-2.6.5.tar.gz 進行解壓

tar -zxvf hadoop-2.6.5.tar.gz

同樣的使用mv 指令将解壓完的檔案夾放到 /usr/local/目錄下

修改/usr/local/hadoop-2.6.5/etc/hadoop/hadoop-env.sh檔案中的jdk安裝位址為

export JAVA_HOME=/usr/local/jdk1.8.0_151

修改/etc/profile 檔案,添加Hadoop環境變量,修改後如下所示

export JAVA_HOME=/usr/local/jdk1._151
export HADOOP_HOME=/usr/local/hadoop-.
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
           

運作hadoop version 如下圖所示

Hadoop完全分布式環境搭建

Hadoop 有三種運作模式:

  • 第一種是獨立模式不會建立守護程序适合開發的時候進行調試,獨立模式下會使用本地檔案系統,運作本地MapReduce Job
  • 第二種是僞分布式模式,所有的守護程序都在同一個機器中運作,也就是在本機上模拟分布式環境
  • 第三種是完全分布式模式,守護程序運作在不同的實體主機上

三種模式的不同點如下圖所示

Hadoop完全分布式環境搭建

如果不做其他的配置預設會在獨立模式下運作,本文主要介紹的是完全分布式模式下的運作,所有還需要做下面的一些配置項

僞分布模式配置

為了在機器上同時存在多個模式的配置,首先通過下面的指令拷貝配置檔案所在檔案夾并生成一個軟連結

cp -r /usr/local/hadoop-2.6.5/etc/hadoop /usr/local/hadoop-2.6.5/etc/hadoop_pseudo

cd /usr/local/hadoop-2.6.5/etc/

ln -s hadoop_pseudo hadoop

修改hadoop_pseudo中的配置檔案,如下所示,一共四個檔案,其中mapred-site.xml可以通過複制mapred-site.xml.template檔案得到,修改以下四個檔案就完成了基本的配置,其中

  • core-site.xml是核心配置檔案,用來說明HDFS的NameNode
  • hdfs-site.xml是用來配置HDFS的副本數量的,副本數量和DataNode的數量一緻
  • mapred-site.xml用來說明mapreduce使用的架構
  • yarn-site.xml用來說明yarn架構的RM節點是誰
<!-- core-site.xml -->
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost/</value>
    </property>
</configuration>

<!-- hdfs-site.xml -->
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

<!-- mapred-site.xml -->
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

<!-- yarn-site.xml -->
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>localhost</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
</configuration>
           

此外還需要安裝SSH,節點之間的通信需要SSH的支援

sudo apt-get install ssh

ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

使用 ssh localhost測試是否完成

格式化HDFS檔案系統

hdfs namenode -format

啟動守護程序

start-dfs.sh

start-yarn.sh

或者可以使用start-all.sh啟動所有的守護程序,但是這個方法被廢棄了,推薦使用一個個啟動的方式,啟動完成之後,使用jps指令檢視java程序,如下圖所示

Hadoop完全分布式環境搭建

完全分布模式配置

将上面配置完成的虛拟機再複制三個,

master ip 192.168.88.130

s1 ip 192.168.88.131

s2 ip 192.168.88.132

s3 ip 192.168.88.133

修改主機名稱

修改每台虛拟機的/etc/hostname 檔案,依次改為master,s1 ,s2,s3

為配置檔案夾建立軟連結

和僞分布式一樣,可以采用軟連結的形式,避免在指令行中加–config參數,直接複制一份僞分布式的配置檔案

cd /usr/local/hadoop-2.6.5/etc/

cp -r hadoop_pseudo hadoop_cluster

ln -s hadoop_cluster hadoop

修改/etc/hosts檔案,每一台機器都需要一緻,可以使用scp指令進行遠端拷貝或者一台一台進行修改

Hadoop完全分布式環境搭建

修改master節點的hadoop配置檔案

  • core-site.xml
<configuration>
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master/</value>
    </property>
</configuration>
           
  • hdfs-site.xml
<configuration>
    <property>
      <name>dfs.replication</name>
      <value>2</value>
    </property>
</configuration>
           
  • mapred-site.xml
<configuration>
   <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
   </property>
</configuration>
           
  • yarn-site.xml
<configuration>
    <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>master</value>
    </property>
    <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
    </property>
</configuration>
           

修改slaves檔案,添加兩行

s1
s2
           

根據上述配置,目前master這台機器是作為NameNode和RM,另外三台機器中的兩台是DataNode,另一台可以作為SecondaryNameNode(在上面的配置中沒有進行配置)在完成上面的配置後,需要将上述的配置同步到所有的節點,同樣的可以使用scp遠端拷貝同步到不同的節點上去

cd /usr/local/hadoop-2.6.5/

scp -r ./etc/ [email protected]:/usr/local/hadoop-2.6.5/

scp -r ./etc/ [email protected]:/usr/local/hadoop-2.6.5/

scp -r ./etc/ [email protected]:/usr/local/hadoop-2.6.5/

重新格式化檔案系統

hadoop namenode -format

啟動hadoop

start-all.sh
Hadoop完全分布式環境搭建

結尾

通過上面的幾個步驟,就完成了Hadoop的完全分布模式配置

參考資料

[1]Hadoop The Definitive Guide 4th Edition

[2]Hadoop 官方文檔

繼續閱讀