1. 程式人生 > >VirtualBox+Centos7+(jdk1.7.0_71+Hadoop-2.6.0)/(jdk1.10+Hadoop-2.9.1)搭建完全分散式叢集平臺

VirtualBox+Centos7+(jdk1.7.0_71+Hadoop-2.6.0)/(jdk1.10+Hadoop-2.9.1)搭建完全分散式叢集平臺

VirtualBox+Centos7+(jdk1.7.0_71+Hadoop-2.6.0)/(jdk1.10+Hadoop-2.9.1)搭建完全分散式叢集平臺

本文有很多是自定義的,可以根據自己的實際情況和需求修改,儘量會用紅色標註出來,當然按照步驟,一步一步應該也能成功,不過最好還是要理解。

準備

  • 使用到的軟體相關版本

作業系統:centos7:檔案超過4g放個連結,速度很給力清華映象站
虛擬機器:virtualbox:> 很常見,沒有坑,就不放連結了
jdk:jdk1.7.0_71:百度雲連結 密碼:jyjg
Hadoop:hadoop-2.6.0:

百度雲連結 密碼:cwuk


  • 自定義配置

master節點主機名: hadoopmaster
slave節點主機名: hadoop0/hadoop1
master節點IP: 192.168.1.200
slave節點IP: 192.168.1.201/192.168.1.202
使用者名稱: ziv(三個虛擬機器的使用者名稱都是這個)

一、 visualbox主機和虛擬機器互ping

1.1、安裝三個虛擬機器互ping(一個master節點命名為hadoopmaster,兩個slave節點命名為hadoop0
hadoop1

虛擬機器設定:(所有節點)
- 橋接網絡卡
- Realtek PCIe GBE Family Controller
- 全部允許
這裡寫圖片描述

【坑1】:聯網

  因為害怕電腦配置低,我安裝的時候選擇的最小安裝,結果什麼都沒有,連ifconfig都木有啊。

用vi(-_-!!!因為只有vi)開啟網路配置檔案(檔名前面一部分是一樣的,ifcfg-eth*)
vi /etc/sysconfig/network-scripts/ifcfg-eth0 >把onboot=no改為onboot=yes

重啟網路
service network restart

開啟ip伺服器配置檔案,配置ip伺服器(有可能已經配置過了,如果裡面有了就不用加了)
vi /etc/resolv.conf
增加nameserver 8.8.8.8 或者114.114.114.114(前者是Google的,全球通用,後者是移動聯通電信共用的,都是免費的)

重啟網路
service network restart

然後就能聯網了,,,
為了使用ifconfig
yum -y install net-tools

1.2、配置虛擬機器的IP為靜態IP,並分配IP(所有節點)

開啟虛擬機器的網路配置檔案(就是剛才那個聯網的檔案)
vim /etc/sysconfig/network-scripts/ifcfg-eth0

把下面的這幾句放進去(有則改之,無則新增,儘量不要刪東西,因為我也不懂)
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.200
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

分別是開機啟動、靜態分配ip、分配的靜態ip、子網掩碼、閘道器
這裡的都是能自定義的,但是分配的ip要跟主機同網段,也就是前兩個數要一樣
我的master節點ip是192.168.1.200
兩個slave的ip是192.168.1.201/202

重啟網路服務
service network restart

這時候應該可以跟主機互ping了
也就意味著,可以用xshell登陸了,真的比虛擬機器上快多了
ping 192.168.110 -c 3
這是我的主機ip,ping3次

二、安裝Hadoop前

2.1、 防火牆相關(所有節點)

  關閉防火牆可以提高hadoop的速度,而且埠使用也比較隨意,虛擬機器也無所謂安不安全-_-!!!

systemctl status firewalld.service//檢查防火牆狀態
systemctl stop firewalld.service//關閉防火牆
systemctl disable firewalld.service//取消防火牆自啟動

2.2、安裝jdk(所有節點)

將jdk檔案解壓到/usr/java/資料夾內

修改/home/ziv/下的.bash_profile
vim /home/ziv/.bash_profile
尾部新增
export JAVA_HOME=/usr/java/jdk1.7.0_71/
export PATH=$JAVA_HOME/bin:$PATH

使修改生效
source /home/ziv/.bash_profile

檢測
java -version

【坑2】:jdk下載問題

  linux裡面的wget十分厲害,再加上虛擬機器不方便傳檔案,我在下載jdk的時候選擇了wget;然後解壓的時候就尷尬了,tar -zxvf解壓報錯;
網上有很多亂七八糟的解決方法我也看不懂,—_—。 最後還是用Windows下載後傳到虛擬機器上的

順便分享一個東西,很好很強大
yum install lrzsz
安裝好以後可以直接從Windows裡拖檔案到xshell就能複製檔案

【坑3】:jdk和hadoop版本問題

  聽說 jdk和hadoop的版本是一對一的,就跟vs和QT的關係一樣,我也沒試過太多,我用的是jdk1.7.0_71和hadoop2.6.0,已知同學有用jdk1.10和hadoop2.91安裝成功的,可以試試。

2.3、修改主機名(所有節點)

vim /etc/hostname
分別修改為hadoopmaster/hadoop0/hadoop1
vim /etc/hosts
都新增上主機名的對映
192.168.1.200 hadoopmaster
192.168.1.201 hadoop0
192.168.1.202 hadoop1

重啟

2.4、免金鑰登陸(僅master節點)

  • Master節點配置
    a、生成金鑰
      ssh-keygen -t rsa//生成金鑰
    b、複製公鑰檔案到同目錄下改名為authorized_keys
      cp /home/ziv/.ssh/id_rsa.pub /home/ziv/.ssh/authorized_keys
    c、複製公鑰到slave節點
      scp /home/ziv/.ssh/id_rsa.pub ziv@hadoop0:~/
      scp /home/ziv/.ssh/id_rsa.pub ziv@hadoop1:~/
  • Slave節點配置(每個slave節點都要操作)
    a、然後在slave節點/home/ziv/下新建.ssh資料夾(已有的就不用新建了)
      mkdir /home/ziv/.ssh
    b、將從master複製過來的id_rsa.pub複製到.ssh資料夾裡
      cat /home/ziv/id_rsa.pub >> /home/ziv/.ssh/authorized_keys
  • 遠端登陸
      ssh hadoop1
      或ssh ziv@hadoop1

【坑4】:檔案許可權

  2.4中遠端連線如果還是要密碼,可能是許可權問題;.ssh資料夾許可權需要是700;authorized_keys檔案許可權需要是600;-_-!!!

chmod 600 /home/ziv/.ssh/authorized_keys
chmod 700 /home/ziv/.ssh

三、安裝並配置Hadoop

3.1、安裝Hadoop(因為所有節點上的Hadoop資料夾的配置需要是一樣的)

  master只是多了一個slaves資料夾,但這個對slave主機沒影響;所以我們可以先在master主機上配置hadoop資料夾,然後直接複製到slave節點就行。

將Hadoop檔案解壓到/home/ziv/資料夾內;
  因為檔案位置不一樣,所以就不給命令了,就是把hadoop-2.6.0.tar.gz解壓到/home/ziv/裡

3.2、配置Hadoop環境變數(hadoop-env.sh)

vim /home/ziv/hadoop-2.6.0/etc/hadoop/hadoop-env.sh
將export JAVA_HOME=${JAVA_HOME}修改為
  export JAVA_HOME=/usr/java/jdk1.7.0_71/

3.3、配置yarn環境變數(yarn-env.sh)

vim /home/ziv/hadoop-2.6.0/etc/hadoop/yarn-env.sh
將export JAVA_HOME=/home/y/libexec/jdk1.6.0/修改為
  export JAVA_HOME=/usr/java/jdk1.7.0_71/

3.4、配置核心元件(core-site.xml)

vim /home/ziv/hadoop-2.6.0/etc/hadoop/core-site.xml
<configuration></configuration>之間插入

<!--指定namenode地址--></br>
<property>
    <name>fs.defaultFS</name>
    <value>`hdfs://hadoopmaster:9000`</value>
</property>
<!--指定使用hadoop時產生檔案的存放目錄-->
<property>
    <name>hadoop.tmp.dir</name>
    <value>`/home/ziv/tmp`</value>
</property>

3.5、配置檔案系統(hdfs-site.xml)

vim /home/ziv/hadoop-2.6.0/etc/hadoop/hdfs-site.xml
<configuration></configuration>之間插入

<!--指定secondnamenode的位置-->
<property>
    <name>dfs.namenode.secondary.http-address</name>
      <value>`hadoopmaster:9001`</value>
</property>
 <!--指定hdfs儲存資料的副本數量-->
<property>
    <name>dfs.replication</name>
      <value>1</value>
</property>
 <!--指定hdfs中namenode的儲存位置-->
<property>
    <name>dfs.namenode.name.dir</name>
      <value>`/home/ziv/dfs/name/`</value>
</property>
<!--指定hdfs中datanode的儲存位置-->
<property>
    <name>dfs.datanode.data.dir</name>
      <value>`home/ziv/dfs/data`</value>
</property>

3.6、配置yarn-site.xml

vim /home/ziv/hadoop-2.6.0/etc/hadoop/yarn-site.xml
<configuration></configuration>之間插入

<!--指定方式-->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager所在的主機名-->
<property>
     <name>yarn.resourcemanager.hostname</name>
     <value>`HadoopMaster`</value>
</property>

3.7、配置MapReduce計算框架檔案(mapred-site.xml)

複製mapred-site.xml.template並改名
cp /home/ziv/hadoop-2.6.0/etc/hadoop/mapred-site.xml.temolate /home/ziv/hadoop-2.6.0/etc/hadoop/mapred-site.xml
<configuration></configuration>之間插入
`
<!--告訴hadoop以後MR(Map/Reduce)執行在YARN上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

3.8、配置Master的slaves檔案(slaves)

vim /home/ziv/hadoop-2.6.0/etc/hadoop/slaves
裡面會有預設的localhost,可以刪掉
將所有slave節點主機名,一行一個寫到該檔案裡
hadoop0
hadoop1

3.9、配置slave節點

複製Master上配置好的hadoop資料夾複製到slave節點
scp -r /home/ziv/hadoop-2.6.0 [email protected]:~/
scp -r /home/ziv/hadoop-2.6.0 [email protected]:~/

四、啟動hdfs

4.1、配置作業系統環境變數(所有節點)

vim /home/ziv/.bash_profile
新增
  export HADOOP_HOME=/home/ziv/hadoop-2.6.0
  export PATH=$HADOOP_HOME/bin:$\HADOOP_HOME/sbin:\$PATH

使設定生效
  source /home/ziv/.bash_profile

4.2、格式化(僅master節點)

hdfs namenode -format

4.3、啟動和關閉

start-dfs.sh
start-yarn.sh
stop-dfs.sh
stop-yarn.sh

4.5、檢測是否成功

jps
master節點應該有四個
slave節點應該有三個
沒開啟之前jps
這裡寫圖片描述
這裡寫圖片描述
start-dfs.sh之後
這裡寫圖片描述
這裡寫圖片描述
繼續執行 start-yarn.sh之後
這裡寫圖片描述
這裡寫圖片描述

【坑5】:mkdir: 無法建立目錄”/home/hadoop/hadoop-2.4.1/logs”: 許可權不夠

在master上執行以下命令:
sudo chown -R ziv:ziv hadoop-2.6.0/

花了兩天時間,遇見了各種各樣的坑,可以說很自信了,如果有哪裡沒有講清楚的,歡迎留言-_-!!!