Hadoop安裝配置

友情提示:如發現有錯誤歡迎指出,真心感謝,新手上路。

配置所需工具

Hadoop部署準備 本地VMware安裝Linux系統家族中Ubuntu 16.04
Java對應版本jdk-8u73-linux-x64.tar.gz
Hadoop版本hadoop-2.8.0.tar.gz

VMware虛擬機建議使用 NAT 網絡設置,因爲在配置 Hadoop 環境過程中如果IP地址發生改變,則配置失效。

網絡配置

僞分佈式安裝配置

修改主機相關配置

1.首先使用VMware安裝Ubuntu系統,所有的操作都要在root下進行。修改主機名,由於創建的是僞分佈式即單機版,修改主機名:
修改hostname文件:vim /etc/hostname ,修改內容如下:

hadoop-alone

2./etc/hosts 文件裏註冊修改的主機名稱,如果此處不進行修改操作,Hadoop服務啓動會報錯,使用命令 vim /etc/hosts修改hosts文件,修改完成之後,重啓主機使修改配置文件生效,可以使用 reboot 命令。

127.0.0.1       localhost
127.0.1.1       localhost
127.0.0.1       hadoop-alone

hosts文件

免密登錄授權配置

  • 刪除已有的 ssh 配置,使用命令 rm -r ~/.ssh 進行刪除 ;
  • 生成新的 ssh-key ,使用命令 ssh-keygen -t rsa
    -爲本機進行公鑰的註冊:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

僞分佈式配置

Hadoop配置

1.首先安裝配置JDK,解壓jdk文件到/usr/local 目錄下:

tar -xzvf /srv/ftp/jdk-8u73-linux-x64.tar.gz -C /usr/local/
move /usr/local/jdk1.8.0_73  /usr/local/jdk

2.配置jdk環境屬性,編輯 /etc/profle 文件,使用命令 vim /etc/profle

export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin:

編輯完成之後保存退出,使用 source /etc/profile 使配置文件立即生效。
完成之後,可以查看安裝的jdk詳情:

JDK版本信息
3.配置hadoop

tar xzvf /srv/ftp/hadoop-2.8.0.tar.gz -C /usr/local/
mv /usr/local/hadoop-2.8.0/ /usr/local/hadoop

4.修改 /etc/profile 配置文件,打開profile配置文件:vim /etc/profile 具體配置如下:

export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存退出後使配置立即生效:source /etc/profile

5.Hadoop依賴於Java的開發包(JAVA_HOME),雖然現在已經在profile文件裏面定義了JAVA_HOME,但是很多時候Hadoop找不到這個配置,所以建議在整個的配置之中手工配置一下要使用的JDK
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
手工配置要使用的JAVA_HOME環境:

export JAVA_HOME=/usr/local/jdk

hadoop-env

6.Hadoop安裝完成之後它直接給出了一個測試的環境命令,這個測試的主要功能是進行一個單詞統計。
- 如果要想進行本操作的實現,那麼首先要設置有一個輸入的路徑,這個路徑裏面要設置進行統計的普通文本文件:
mkdir -p /usr/test/hadoop/input
- 通過Hadoop安裝目錄下將README.txt文件拷貝到此目錄之中:
cp /usr/local/hadoop/README.txt /usr/test/hadoop/input/

7.如果要進行統計操作則可以使用hadoop默認提供的工具。
- 路徑:/usr/local/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.8.0-sources.jar
- 程序類:org.apache.hadoop.examples.WordCount
- 如果要想執行Hadoop程序,一定要使用Hadoop提供的開發包,所以不再是簡單的java執行:

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.8.0-sources.jar org.apache.hadoop.examples.WordCount /usr/test/hadoop/input /usr/test/hadoop/output

執行完成之後,觀察之前配置好的輸出目錄,cat /usr/test/hadoop/output/part-r-00000

僞分佈式搭建

1.Hadoop所有的配置文件目錄都保存在:/usr/local/hadoop/etc/hadoop
2.修改core-site.xml配置文件,這個配置文件爲整個Hadoop運行中的核心配置文件:
- 官方文檔:http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/SingleCluster.html

注意:Hadoop默認啓動的時候使用的是系統的 /tmp 目錄,但是這個目錄每一次重新啓動之後都會自動清空,也就是說如果你現在不配置好一個臨時的存儲目錄,那麼下一次你的Hadoop就無法啓動了。

  • 建立一個保存臨時目錄的路徑:mkdir -p /usr/data/hadoop/tmp
  • 編輯core-site.xml配置文件:vim /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/data/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-alone:9000</value>
    </property>
</configuration>

3. 修改hdfs-site.xml文件,該配置文件主要的功能是進行HDFS分佈式存儲的配置

注意:如果你現在Hadoop網絡環境發生了改變,這兩個目錄一定要清空,否則Hadoop就啓動不了了。

  • 建立namenode進程的保存路徑:mkdir -p /usr/data/hadoop/dfs/name
  • 建立datanode進程的保存路徑:mkdir -p /usr/data/hadoop/dfs/data ·
    編輯配置文件:vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/data/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///usr/data/hadoop/dfs/data</value>
    </property>
<!--
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop-alone:50070</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop-alone:50090</value>
    </property>
-->
    <property> 
        <name>dfs.permissions</name>
        <value>false</value>
     </property>
</configuration>

4.修改yarn-site.xml配置文件,這個是進行yarn分析結構使用的
修改配置文件:vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop-alone:8033</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>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop-alone:8025</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop-alone:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop-alone:8050</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop-alone:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop-alone:8088</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>hadoop-alone:8090</value>
    </property>
</configuration>

5.由於現在屬於單主機僞分佈式運行方式,所以還需要修改一下從節點的配置文件
修改配置文件:vim /usr/local/hadoop/etc/hadoop/slaves

hadoop-alone

6.現在對於數據的保存保存在了/usr/data/hadoop/{name,data}目錄下,所以如果要想使用,則必須針對於這兩個目錄進行格式化的處理操作:hdfs namenode -format

INFO util.ExitUtil: Exiting with status 0

其中的0表示的是現在的程序沒有任何的錯誤,你的配置成功。
7.啓動Hadoop相關進程(不建議使用此啓動命令):/usr/local/hadoop/sbin/start-all.sh

啓動結果
啓動完成之後,查看進行:jps

服務名稱
8.瀏覽器訪問:
僞分佈式訪問

Hadoop分佈式集羣配置

Hadoop集羣

環境準備

1.準備Hadoop分佈式集羣主機,本次使用七臺主機,具體說明如下:
[1] hadoop-namenode主機:專門負責保存有NameNode進程;
[1] hadoop-secondarynamenode主機:負責SencondaryNameNode進程;
[3 + 1] hadoop-datanode-*主機:負責數據的存儲(DataNode)、數據分析(NodeManager);
[1] hadoop-resourcemanager主機:負責ResourceManager進程運行.

2.【hadoop-namenode】修改hosts文件

hadoop-namenode 192.168.125.141 運行NameNode進程
hadoop-resourcemanager 192.168.125.142 運行ResourceManager進程
hadoop-secondarynamenode 192.168.125.143 運行secondaryNameNode進程
hadoop-datanode-a 192.168.125.144 運行DataNode、NodeManager進程
hadoop-datanode-b 192.168.125.145 運行DataNode、NodeManager進程
hadoop-datanode-c 192.168.125.146 運行DataNode、NodeManager進程
hadoop-datanode-back 192.168.125.147 [動態擴充主機]運行DataNode、NodeManager進程

修改內容如下:

127.0.0.1       localhost
127.0.1.1       localhost
192.168.125.141         hadoop-namenode
192.168.125.142         hadoop-resourcemanager
192.168.125.143         hadoop-secondarynamenode
192.168.125.144         hadoop-datanode-a
192.168.125.145         hadoop-datanode-b
192.168.125.146         hadoop-datanode-c
192.168.125.147         hadoop-datanode-back

修改完成之後reboot重啓主機,使配置生效

3.【hadoop-namenode主機】進行ssh免密登錄配置
刪除掉已有的ssh配置:rm -r ~/.ssh
生成新的ssh-key信息:ssh-keygen -t rsa
設置本機的免登錄配置:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

將本機的ssh-key信息發送到所有的其它主機上:

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-resourcemanager
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-secondarynamenode
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-datanode-a
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-datanode-b
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-datanode-c
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-datanode-back

4.【hadoop-namenode主機】所有主機的hosts文件內容必須保持一致,所以此時一定要將hadoop-namenode節點中的/etc/hosts文件拷貝到所有主機之中:

複製本機的hosts文件到其他主機,複製完成後,其他主機重啓:

發送到hadoop-resourcemanager主機:scp /etc/hosts hadoop-resourcemanager:/etc/
發送到hadoop-secondarynamenode主機:scp /etc/hosts hadoop-secondarynamenode:/etc/
發送到hadoop-datanode-a主機:scp /etc/hosts hadoop-datanode-a:/etc/
發送到hadoop-datanode-b主機:scp /etc/hosts hadoop-datanode-b:/etc/
發送到hadoop-datanode-c主機:scp /etc/hosts hadoop-datanode-c:/etc/

配置NameNode節點

1.【hadoop-namenode主機】將hadoop開發包上傳到主機之中,而後進行解壓縮控制:
tar xzvf /srv/ftp/hadoop-2.8.0.tar.gz -C /usr/local/
2.【hadoop-namenode主機】將解壓縮後的hadoop文件夾進行更名處理:
mv /usr/local/hadoop-2.8.0/ /usr/local/hadoop
3.【hadoop-namenode主機】爲了方便後續的處理,建議將doc目錄刪除掉,但是千萬別刪除錯了;
rm -r /usr/local/hadoop/share/doc/
4.【hadoop-namenode主機】依然要進行profile編輯
打開配置文件:vim /etc/profile
設置如下內容:

export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

讓配置立即生效:source /etc/profile
5.【hadoop-namenode主機】將profile配置發送到其它主機之中:

發送到hadoop-resourcemanager主機:scp /etc/profile hadoop-resourcemanager:/etc/
發送到hadoop-secondarynamenode主機:scp /etc/profile hadoop-secondarynamenode:/etc/
發送到hadoop-datanode-a主機:scp /etc/profile hadoop-datanode-a:/etc/
發送到hadoop-datanode-b主機:scp /etc/profile hadoop-datanode-b:/etc/
發送到hadoop-datanode-c主機:scp /etc/profile hadoop-datanode-c:/etc/
發送到hadoop-datanode-back主機:scp /etc/profile hadoop-datanode-back:/etc/

6.【hadoop-*】所有主機使profile配置立即生效:source /etc/profile

7.【hadoop-namenode主機】現在的需求:datanode與nodemanager都在一臺主機上運行,所以現在修改slaves配置文件,將已有的主機名稱進行配置:vim /usr/local/hadoop/etc/hadoop/slaves

hadoop-datanode-a
hadoop-datanode-b
hadoop-datanode-c

8.【hadoop-namenode主機】修改hadoop運行環境配置文件:vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/local/jdk

9.【hadoop-namenode主機】建立幾個hadoop保存目錄:
- 建立一級目錄:臨時目錄和dfs目錄:mkdir -p /usr/data/hadoop/{tmp,dfs}
- 在dfs目錄下創建name、data兩個子目錄;mkdir -p /usr/data/hadoop/dfs/{name,data}

10.【hadoop-namenode主機】修改core-site.xml配置文件:vim /usr/local/hadoop/etc/hadoop/core-site.xml

<configuration> 
    <property> 
        <name>hadoop.tmp.dir</name> 
        <value>/usr/data/hadoop/tmp</value> 
    </property> 
    <property> 
        <name>fs.defaultFS</name> 
        <value>hdfs://hadoop-namenode:9000</value> 
    </property> 
</configuration>

11.【hadoop-namenode主機】修改hdfs-site.xml文件:vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

<configuration> 
    <property> 
        <name>dfs.replication</name> 
        <value>3</value> 
    </property> 
    <property> 
        <name>dfs.namenode.name.dir</name> 
        <value>file:///usr/data/hadoop/dfs/name</value> 
    </property> 
    <property> 
        <name>dfs.datanode.data.dir</name> 
        <value>file:///usr/data/hadoop/dfs/data</value> 
    </property> 
    <property>
        <name>dfs.namenode.secondary.http-address</name> 
        <value>hadoop-secondarynamenode:50090</value> 
    </property> 
    <property> 
        <name>dfs.permissions</name> 
        <value>false</value> 
    </property> 
</configuration>

此時DataNode節點很多,所以文件的副本量可以設置多個。

12.【hadoop-namenode主機】修改yarn-site.xml配置文件:vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

<configuration> 
    <property> 
        <name>yarn.resourcemanager.admin.address</name> 
        <value>hadoop-resourcemanager:8033</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> 
    <property> 
        <name>yarn.resourcemanager.resource-tracker.address</name> 
        <value>hadoop-resourcemanager:8025</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.scheduler.address</name> 
        <value>hadoop-resourcemanager:8030</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.address</name> 
        <value>hadoop-resourcemanager:8050</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.scheduler.address</name> 
        <value>hadoop-resourcemanager:8030</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.webapp.address</name> 
        <value>hadoop-resourcemanager:8088</value> 
    </property> 
    <property>
        <name>yarn.resourcemanager.webapp.https.address</name> 
        <value>hadoop-resourcemanager:8090</value> 
    </property> 
</configuration>

13.【hadoop-namenode主機】現在一個基本環境的Hadoop搭建完成了,但是需要注意一個問題,Hadoop現在是屬於集羣環境,如果是集羣環境,這種情況下一定要考慮一個pid的問題,默認情況下進程的pid都會保存在“/tmp”目錄下,但是這個目錄會被定期清空,所以需要更改一下pid的目錄。
修改hadoop-dameon.sh配置文件:vim /usr/local/hadoop/sbin/hadoop-daemon.sh

HADOOP_PID_DIR=/usr/data/hadoop/pids

修改yarn-daemon.sh配置文件:vim /usr/local/hadoop/sbin/yarn-daemon.sh

YARN_PID_DIR=/usr/data/hadoop/yarn-pids

14.【hadoop-namenode主機】將配置好的hadoop開發包發送到其它主機上:

發送到hadoop-resourcemanager主機:scp -r /usr/local/hadoop/ hadoop-resourcemanager:/usr/local/
發送到hadoop-secondarynamenode主機:scp -r /usr/local/hadoop/ hadoop-secondarynamenode:/usr/local/
發送到hadoop-datanode-a主機:scp -r /usr/local/hadoop/ hadoop-datanode-a:/usr/local/
發送到hadoop-datanode-b主機:scp -r /usr/local/hadoop/ hadoop-datanode-b:/usr/local/
發送到hadoop-datanode-c主機:scp -r /usr/local/hadoop/ hadoop-datanode-c:/usr/local/
發送到hadoop-datanode-back主機:scp -r /usr/local/hadoop/ hadoop-datanode-back:/usr/local/

配置其他節點

1.【hadoop-*主機】建立文件保存路徑:

mkdir -p /usr/data/hadoop/{tmp,dfs}
mkdir -p /usr/data/hadoop/dfs/{name,data}

2.【hadoop-namenode主機】格式化namenode節點:hdfs namenode -format

3.【hadoop-namenode主機】啓動dfs相關進程:/usr/local/hadoop/sbin/start-dfs.sh

root@hadoop-namenode:~# /usr/local/hadoop/sbin/start-dfs.sh
Starting namenodes on [hadoop-namenode]
hadoop-namenode: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-hadoop-namenode.out
hadoop-datanode-c: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-doop-datanode-c.out
hadoop-datanode-a: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-hadoop-datanode-a.out
hadoop-datanode-b: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-hadoop-datanode-b.out
Starting secondary namenodes [hadoop-secondarynamenode]
hadoop-secondarynamenode: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-hadoop-secondarynamenode.out
root@hadoop-namenode:~# 

查看啓動結果

root@hadoop-namenode:~# jps
5824 Jps
5588 NameNode
root@hadoop-secondarynamenode:~# jps
5545 SecondaryNameNode
5595 Jps

root@hadoop-datanode-a:~# jps
5147 Jps
5070 DataNode

root@hadoop-datanode-b:~# jps
5098 Jps
5021 DataNode

root@hadoop-datanode-c:~# jps
5100 Jps
5022 DataNode

4.【hadoop-resourcemanager主機】生成SSH-KEY:
刪除掉已有的ssh配置:rm -r ~/.ssh
生成新的ssh-key信息:ssh-keygen -t rsa
設置本機的免登錄配置:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

將本機的ssh-key信息發送到所有的其它主機上:
發送到hadoop-datanode-a主機:ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-datanode-a
發送到hadoop-datanode-b主機:ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-datanode-b
發送到hadoop-datanode-c主機:ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-datanode-c

5.【hadoop-resourcemanager主機】啓動YARN相關進程:/usr/local/hadoop/sbin/start-yarn.sh

root@doop-resourcemanager:~# /usr/local/hadoop/sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-root-resourcemanager-doop-resourcemanager.out
hadoop-datanode-c: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-doop-datanode-c.out
hadoop-datanode-a: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-hadoop-datanode-a.out
hadoop-datanode-b: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-hadoop-datanode-b.out
root@doop-resourcemanager:~# 

6.【hadoop-namenode主機】啓動WEB瀏覽器界面:
修改一下hosts文件:

192.168.125.141 hadoop-namenode
  • 訪問地址:hadoop-namenode:50070;

配置成功如圖所示

上傳測試文件到根目錄中:

hadoop fs -put /srv/ftp/apache-tomcat-9.0.0.M10.tar.gz /

文件上傳

文件詳情

動態擴充DataNode

1.【hadoop-namenode】修改hosts文件(此處已經在namenode主機中修改過了,如果未修改此處必須進行修改):vim /etc/hosts

192.168.125.147 hadoop-datanode-back

2.【hadoop-datanode-back】修改hosts文件:vim /etc/hosts

127.0.0.1       localhost
127.0.1.1       localhost
192.168.125.141         hadoop-namenode
192.168.125.142         hadoop-resourcemanager
192.168.125.147         hadoop-datanode-back

備註:因爲datanode-back主機一旦要進行添加肯定向namenode主機註冊(DataNode),以及向resourcesmanager主機註冊(NodeManager)。

3.【hadoop-datanode-back】分別啓動兩個進程:
啓動datanode進程:/usr/local/hadoop/sbin/hadoop-daemon.sh start datanode
啓動nodemanager進程:/usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager

動態擴展結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章