基於虛擬機的hadoop分佈式集羣搭建(搭建成功)


【正式安裝】

1. 安裝VMware、安裝ubuntu16.04

網上很多教程,這裏不詳述
注意事項:

(1)安裝順序:虛擬機節點先安裝一個,完成基本配置後通過“克隆”的方式複製另外兩個,這樣既可以保證環境統一,又比較方便。

(2)網絡連接:選擇NAT方式。建議最好手動把IP地址固定下來,避免動態分配的時候錯亂。

(3)防火牆:關閉防火牆,避免出現後面不必要的麻煩,chkconfig iptables off。

2. 安裝vim和ssh

(1)安裝vim

sudo apt-get install vim

(2)安裝ssh

apt-get install openssh-server

PS:可以通過service ssh status 查看ssh狀態。

3. 修改hostname

vim /etc/hostname

修改HOSTNAME的值爲master。

4. 修改hosts

無論虛擬機suspend還是暫停, 每次機器重啓後ip都會自動+1, 而且開機剛進入虛擬機時ip不變, 是過一會兒才自動變化的.

所以需要固定IP

vi /etc/hosts

127.0.0.1       localhost

192.168.190.131    master

192.168.190.132    slave01

192.168.190.133    slave02

192.168.190.134    slave03

5. 安裝jdk

(1)解壓:

tar -zxvf jdk1.7.0_79.tar /usr/lib/java [可以替換成你安裝的路徑]

(2)修改環境變量:

vim /etc/profile

在最下面添加:

export JAVA_HOME=/usr/lib/java/jdk-13.0.1
export PATH=$JAVA_HOME/bin:$PATH

修改完後,讓配置文件生效:

source /etc/profile

6. 安裝hadoop

(1)解壓:

tar -zxvf hadoop-2.6.5.tar.gz /opt/ [可以替換成你安裝的路徑]

(2)修改環境變量

vim /etc/profile

在最下面添加:

export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

修改完後,讓配置文件生效:

source /etc/profile

7. 克隆

通過VMware克隆另外兩個節點出來,參照4中的配置修改IP地址和hostname。(不要鏈接克隆,選擇完整克隆)

8. 配置ssh,實現免密碼登錄

(1)在三臺機器上分別執行如下命令,一路按回車即可。

ssh-keygen -t rsa

(2)剛生成的文件保存在~/.ssh/下,進入命令

cd /home/eric/.ssh

進入.ssh隱藏文件夾內,輸入ls可以看到id_rsa,私鑰和id_rsa.pub,公鑰,複製公鑰到authorized_keys

cp id_rsa.pub authorized_keys

(3)做ssh認證

將master公鑰追加到slave01的authorized_keys裏面, 使master免登陸進入slave01

scp eric@master:/home/eric/.ssh/id_rsa.pub ./master.rsa.pub
cat master.rsa.pub >> authorized_keys

將slave01公鑰追加到master的authorized_keys裏面,使slave01免登陸進入master

scp eric@slave01:/home/eric/.ssh/id_rsa.pub ./slave01.rsa.pub
cat slave01.rsa.pub >> authorized_keys

slave02同理

如果遇到仍然需要密碼的情況執行以下操作:

(一)修改文件"authorized_keys"權限

chmod 600 ~/.ssh/authorized_keys

(二)設置SSH配置

sudo vim /etc/ssh/sshd_config

在末尾添加一下文本

RSAAuthentication yes # 啓用 RSA 認證

PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式

AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

(三)重啓

service sshd restart

建議:最好是三臺都互相免密碼登錄,不只是從master到另外兩臺。

(4)測試:

本地測試環路

ssh localhost

出現Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)即可

ssh slave01

看是否不用密碼就可以登錄過去,直接進入,表示成功。

(5)常用命令

/etc/init.d/ssh start
/etc/init.d/ssh restart
/etc/init.d/ssh stop

9. 修改hadoop基本配置

我用的是hadoop-2.6.5,其實配置大同小異。

在hadoop安裝路徑下新建文件夾,我的位置在/opt/hadoop-2.6.5/

mkdir dfs  
mkdir dfs/name  
mkdir dfs/data  
mkdir tmp

轉到配置路徑下

cd /opt/hadoop-2.6.5/etc/hadoop/

(1)配置文件:core-site.xml

<configuration></configuration>裏添加如下內容:

<configuration>  

    <property>  

        <name>fs.defaultFS</name>  

        <value>hdfs://master:9000</value>  

    </property>  

    <property>  

        <name>io.file.buffer.size</name>  

        <value>131072</value>  

    </property>  

    <property>  

        <name>hadoop.tmp.dir</name>  

        <value>file:/opt/hadoop-2.6.5/temp</value>  

        <description>Abase for other temporary directories.</description>  

    </property>  

</configuration>  

(2)配置文件:hdfs-site.xml

<configuration>  

    <property>  

      <name>dfs.namenode.secondary.http-address</name>  

      <value>master:9001</value>  

    </property>  

     <property>  

      <name>dfs.namenode.name.dir</name>  

      <value>file:/opt/hadoop-2.6.5/dfs/name</value>  

    </property>  

    <property>  

      <name>dfs.datanode.data.dir</name>  

      <value>file:/opt/hadoop-2.6.5/dfs/data</value>  

    </property>  

    <property>  

      <name>dfs.replication</name>  

      <value>2</value>  

    </property>  

    <property>  

      <name>dfs.webhdfs.enabled</name>  

      <value>true</value>  

    </property>  

</configuration>  

(3)配置文件:mapred-site.xml

現在當前目錄下執行

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

得到mapred-site.xml,進行配置

<configuration>  
   <property>                                       

      <name>mapreduce.framework.name</name>  

      <value>yarn</value>  

  </property>  

  <property>  

      <name>mapreduce.jobhistory.address</name>  

        <value>master:10020</value>  

  </property>  

   <property>  

      <name>mapreduce.jobhistory.webapp.address</name>  

      <value>master:19888</value>  

  </property>  

</configuration>  

(4)配置文件:yarn-site.xml

<configuration>  

   <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.address</name>  

        <value>master:8032</value>  

   </property>  

   <property>  

        <name>yarn.resourcemanager.scheduler.address</name>  

        <value>master:8030</value>  

   </property>  

   <property>  

        <name>yarn.resourcemanager.resource-tracker.address</name>  

        <value>master:8031</value>  

      </property>  

   <property>  

        <name>yarn.resourcemanager.admin.address</name>  

        <value>master:8033</value>  

   </property>  

   <property>  

        <name>yarn.resourcemanager.webapp.address</name>  

        <value>master:8088</value>  

   </property>  

</configuration>  

(5)配置文件:slaves

將內容替換爲節點名稱

slave01
slave02

(6)vim masters

創建masters,加入主機名稱

master

(7)配置文件:yarn-env.sh

找到# export JAVA_HOME=/home/y/libexec/jdk1.6.0/(一個被註釋掉的語句)
取消註釋,並將路徑修改成你存放jdk的位置。

(8)配置文件:hadoop-env.sh

同(7)中一樣,修改export JAVA_HOME的路徑。

(9)同步配置到子節點

scp /opt/hadoop2.6.5/etc/hadoop/* slave01:/opt/hadoop/etc/hadoop/

scp /opt/hadoop2.6.5/etc/hadoop/* slave02:/opt/hadoop/etc/hadoop/

格式爲scp 主機hadoop路徑/* 子結點名稱: 子結點hadoop路徑

至此配置設置完成了!

10. 啓動測試

(1)格式化節點

在主機上輸入

hadoop namenode -format

注意:只要出現“successfully formatted”就表示成功了。

(2)運行集羣

直接在主機輸入

/opt/hadoop-2.6.5/sbin/start-all.sh
/opt/hadoop-2.6.5/sbin/stop-all.sh(關閉集羣)

如果沒有報錯出現ERROR,則可以用jps檢驗各後臺進程是否成功啓動。

master

eric@master:~$ jps
4640 NameNode
3200 NameNode
4850 SecondaryNameNode
3732 ResourceManager
5860 Jps

slave01

3168 DataNode
3563 Jps
3311 NodeManager

此時說明集羣運行正常。

(3)通過網站查看集羣情況

在網址輸入 https://master的ip:50070

在這裏插入圖片描述
http://192.168.190.128:8088/cluster/

在這裏插入圖片描述

11.運行計算實例

(1)準備數據

在本地目錄創建wordcount.txt文件,並隨便輸入寫英文,如:

aa bb cc dd

(2)上傳文件

在hadoop中新建文件夾:

hadoop fs -mkdir /input/
hadoop fs -mkdir /output/
hadoop fs -rm -r -skipTrash /data/wordcount (刪除語句)

查看hadoop的文件夾,在終端下直接是查看不到的

hadoop fs -ls -R /

上傳文件到hdfs的文件夾/input/wordcount/下

hadoop fs -put /home/wordcount.txt /input/wordcount

(3)執行命令(也可以在jar所在文件目錄下操作)

hadoop jar /opt/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input/wordcount/ /output/wordcount/

格式爲:hadoop jar jar包 處理文件名 輸入文件夾 輸出文件夾

將出現這樣的日誌
在這裏插入圖片描述
(4)查看文件

去輸出文件中查看結果,output/wordcount裏面會有三個文件,有一個帶part的就是輸出結果,可以使用hadoop fs -cat 輸出文件的路徑查看結果
在這裏插入圖片描述

P.S.遇到的問題

(1)啓動hadoop後會出現JAVA ERROR

JAVA_HOME路徑配置不對或者沒有配置

(2)在子節點輸入jps時出現 “程序 ‘jps’ 已包含在下列軟件包中” ,則在終端輸入一下語句,注意jdk路徑後面的/bin/jps 1不要漏掉

sudo update-alternatives --install /usr/bin/jps jps "你的jdk路徑"/bin/jps 1

(3)無法登陸網頁查看集羣

點名感謝這位哥們的解決方法,給我看笑了,瞬間解決我的問題

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