1. 程式人生 > >hadoop環境搭建筆記

hadoop環境搭建筆記

目錄

一、安裝準備

      1、下載jdk和hadoop包

      2、虛擬機器單機環境

二、環境安裝&配置

      1、修改linux主機名 

      2、安裝jdk

      3、設定免密碼登入 SSH

三、hadoop配置

      1、配置hadoop_home環境變數

      2、配置hadoop配置檔案

            2.1 配置core-site.xml檔案  

            2.2 配置hdfs-site.xml檔案

            2.3 配置yarn-site.xml

            2.4 配置mapred-site.xml

            2.5 配置檔案 mapred-site.xml

            2.6 配置slaves

            2.7 配置hadoop-env.sh 

      3、格式化分散式檔案系統(HDFS)

      4、啟動HADOOP叢集

      5、驗證HADOOP叢集

      6、關閉防火牆

一、安裝準備

1、下載jdk和hadoop包

2、虛擬機器單機環境

      32位的linux [www.19cr.com][紅帽企業Linux.6.5.伺服器版].rhel-server-6.5-i386-dvd.iso

      32位的jdk    jdk-8u111-linux-i586.tar.gz

二、JDK\SSH安裝&配置

1、修改linux主機名 

  • 修改這兩個檔案,修改後reboot命令,重新啟動伺服器 
vi /etc/sysconfig/network 
vi /etc/hosts  將第一行的localhost改為想要設定的主機名 第二行不要動 #需要去掉

     例如,這裡的截圖是配置了完全分散式之後擷取的 所以包含了兩臺slaves的資訊

      Clipboard Image.png

2、安裝jdk

/*給jdk 檔案賦許可權,使其可以被當前使用者操作 sudo chmod u+x 檔名*/

rpm包自動安裝到系統目錄/usr/java/,tar包解壓後,需指定路徑 安裝路徑在哪裡都可以,只要在profile檔案中寫好即可。

  • 安裝jdk
#tar -xzvf jdk-8u111-linux-i586.tar.gz --tar
#rpm -ivh xxx.rpm --rpm
  • jdk的安裝目錄
/usr/java/jdk1.8.0_111/
  • 編輯 profile檔案
#vi /etc/profile 

  新增 JAVA_HOME=/usr/java/jdk1.8.0_111/

#source /etc/profile --使修改生效
#echo $JAVA_HOME --列印java路徑 
分別執行 java/javac -version --檢查jdk是否正確安裝 兩個顯示的版本要一樣的

Clipboard Image.png

3、設定免密碼登入 SSH

在Hadoop啟動以後,Namenode是通過SSH(Secure Shell)來啟動和停止各個datanode上的各種守護程序的,這就須要在節點之間執行指令的時候是不須要輸入密碼的形式,故我們須要配置SSH運用無密碼公鑰認證的形式。分散式環境中每臺機器上都安裝了ssh,並且datanode機器上sshd服務已經啟動

  • 安裝SSH祕鑰
#ssh-keygen -t rsa  
  • 執行這個命令後 會自動生成一個 .SSH的目錄 在這個目錄下 就是我們公鑰和私鑰,id_rsa.pub 是公鑰
[[email protected] ~]# cd .ssh/
[[email protected] .ssh]# cat id_rsa.pub >> authorized_keys
[[email protected] .ssh]# ll
total 12
-rw-r--r--. 1 root root  390 Nov 28 08:39 authorized_keys
-rw-------. 1 root root 1675 Nov 28 08:33 id_rsa
-rw-r--r--. 1 root root  390 Nov 28 08:33 id_rsa.pub
  • 驗證
[root@wlh ~]# ssh wlh  --ssh後面跟的是 你要遠端的伺服器的主機名或地址

注:如SSH報錯,不需要刪除檔案,修改後直接執行 ssh 主機名即可

三、hadoop配置

1、配置hadoop_home環境變數

  • 解壓 tar zxf hadoop-3.0.0-alpha1.tar.gz
  • 解壓後執行 vi /etc/profile 

             新增 HADOOP_HOME=/opt/hadoop-3.0.0-alpha1

                     PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

         例(這個截圖時候來安裝2.7.2版本時的截圖)

             Clipboard Image.png

  • 執行 source /etc/profile 使修改生效

2、配置hadoop配置檔案

       HADOOP 的配置檔案存放在/opt/hadoop-3.0.0-alpha1/etc/hadoop目錄下,需要配置以下六個檔案  

          core-site.xml

          hdfs-site.xml

          yarn-site.xml

          mapred-site.xml

          slaves

hadoop-env.sh 

      /*--在 <configuration> </configuration> 鍵值對中間寫*/

    2.1 配置core-site.xml檔案  

  • 配置檔案系統,hdfs的埠
<property>
<name>fs.default.name</name>
<value>hdfs://wlh:9000</value> --<value>hdfs://linux主機名:埠</value>
</property>
  • 配置一個目錄
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.0.0-alpha1/current/tmp</value> --要手動建立這個目錄
</property>
  • 分散式檔案系統的垃圾箱(trash)
<property>
<name>fs.trash.interval</name>
<value>4320</value>--4320這個數是按分鐘算的,3分鐘,3分鐘會清理一次
</property>

2.2 配置hdfs-site.xml檔案

  • 配置分散式檔案系統
  • 配置namenode位置
<property>
<name>dfs.namenode.dir</name>
<value>/opt/hadoop-3.0.0-alpha1/current/name</value> --要手動建立這個目錄
</property>
  • 配置datanode的資訊

        /*這個實際上是要在datanode上配置的不用再namenode上配置,但現在配置的是偽分散式環境namenode和datanode在同一臺機器上。*/

<property>
<name>dfs.datanode.dir</name>
<value>/opt/hadoop-3.0.0-alpha1/current/data</value> --要手動建立這個目錄
</property>
  • 配置副本的數量,每個塊有幾個副本,偽分散式只有一個節點 ,value是1
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
  • 配置hdfs是否啟用web
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
  • 配置HDFS的使用者組和許可權
<property>
<name>dfs.permissions.superusergroup</name>
<value>staff</value> --staff是hdfsd的使用者組
</property>
  • 不開啟許可權
<property>
<name>dfs.permissions.senabled</name>
<value>false</value>
</property>

2.3 配置yarn-site.xml

<property>
<name>yarn.resourcemanager.hostname</name>
<value>wlh</value>--執行resourcemanager的機器的主機名
</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>
  • resourcemanager的埠
<property>
<name>yarn.resourcemanager.address</name>
<value>wlh:18040</value> --主機名+埠號 或者 IP地址+埠號
</property>
  • resourcemanager的排程器埠
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>wlh:18030</value> --所有的埠號都可以任意指定,但是不能重複
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>wlh:18025</value> --主機名+埠號 或者 IP地址+埠號
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>wlh:18141</value> --主機名+埠號 或者 IP地址+埠號
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>wlh:18888</value> --主機名+埠號 或者 IP地址+埠號
</property>
  • yarn中的日誌是否啟用
<property>
<name>yarn.log.aggregation.retain.seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log.aggregation.retain.check.interval.seconds</name>
<value>86400</value>
</property>
  • nodemanager
<property>
<name>yarn.nodemanager.remote.app.log.dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote.app.log.dir.suffix</name>
<value>logs</value>
</property>

2.4 配置mapred-site.xml

       目錄中沒有mapred-site.xml.檔案 只有mapred-site.xml.template 所以複製mapred-site.xml.template 檔案重新命名

cp mapred-site.xml.template mapred-site.xml

2.5 配置檔案 mapred-site.xml

  • mapreduce基於哪個框架
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
  • 通訊的埠
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>wlh:5030</value>
</property>
  • job history
<property>
<name>mapreduce.jobhistory.address</name>
<value>wlh:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>wlh:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.done.dir</name>--已完成的日誌目錄
<value>/jobhistroy/done</value>
</property>
<property>
<name>mapreduce.intermediate.done.dir</name>--中間情況日誌目錄
<value>/jobhistroy/done_intermediate</value>
</property>
<property>
<name>mapreduce.job.ubertask.enable</name>--中間情況日誌目錄
<value>true</value>
</property>

2.6 配置slaves

      datanode nodemanager在哪個機器上執行,在檔案中寫主機名即可

[root@wlh hadoop]# vi slaves 
wlh

    2.7 配置hadoop-env.sh 

     新增 JAVA_HOME=/usr/java/jdk1.8.0_111/

[root@wlh hadoop]# vi hadoop-env.sh

Clipboard Image.png

3、格式化分散式檔案系統(HDFS)

[root@wlh hadoop]# hdfs namenode -format

執行這個命令後出現的語句中有這一行為成功2016-11-30 00:44:56,889 INFO common.Storage: Storage directory /opt/hadoop-3.0.0-alpha1/current/tmp/dfs/name has been successfully formatted.

4、啟動HADOOP叢集

  • 在 /opt/hadoop-3.0.0-alpha1/sbin目錄下執行star-all.sh檔案
[[email protected] sbin]# /opt/hadoop-3.0.0-alpha1/sbin/start-all.sh
This script is deprecated. Use start-dfs.sh and start-yarn.sh instead.
  • 分別啟動即可
[[email protected] sbin]# /opt/hadoop-3.0