寫給大忙人看Hadoop完全分佈式集羣搭建

Hadoop的運行模式

Hadoop一般有三種運行模式,分別是:

  • 單機模式(Standalone Mode),默認情況下,Hadoop即處於該模式,使用本地文件系統,而不是分佈式文件系統。,用於開發和調試。
  • 僞分佈式模式(Pseudo Distrubuted Mode),使用的是分佈式文件系統,守護進程運行在本機機器,模擬一個小規模的集羣,在一臺主機模擬多主機,適合模擬集羣學習。
  • 完全分佈式集羣模式(Full Distributed Mode),Hadoop的守護進程運行在由多臺主機搭建的集羣上,是真正的生產環境。

這裏介紹的就是如何搭建一個Hadoop完全分佈式集羣。

安裝環境介紹

準備了四個服務器,IP爲192.168.0.236、192.168.0.237、192.168.0.238、192.168.0.239,其中192.168.0.236作爲主節點,其他3個作爲從節點。具體版本信息如下:

  • CentOS 7.4
  • JDK 8
  • Hadoop 2.10.0

準備安裝環境

設置主機名

在各個服務器上修改對應的主機名:

#在192.168.0.236上執行:
hostnamectl set-hostname onemore-hadoop-master

#在192.168.0.237上執行:
hostnamectl set-hostname onemore-hadoop-slave1

#在192.168.0.238上執行:
hostnamectl set-hostname onemore-hadoop-slave2

#在192.168.0.239上執行:
hostnamectl set-hostname onemore-hadoop-slave3

關閉SELINUX

編輯/etc/selinux/config文件:

vi /etc/selinux/config

SELINUX=enforcing

修改爲:

SELINUX=disabled

重啓服務器

reboot

設置hosts

cat >> /etc/hosts <<EOF

192.168.0.236 onemore-hadoop-master
192.168.0.237 onemore-hadoop-slave1
192.168.0.238 onemore-hadoop-slave2
192.168.0.239 onemore-hadoop-slave3
EOF

關閉防火牆

停止防火牆

systemctl stop firewalld.service

禁止防火牆開機啓動

systemctl disable firewalld.service

設置免密登錄

分佈式集羣搭建需要主節點能夠免密登錄至各個從節點上。因此,需要在主節點上生成公鑰,把將主節點的公鑰在從節點中加入授權。

  1. 在192.168.0.236上生成公鑰。
ssh-keygen -t rsa
  1. 在192.168.0.236上,把公鑰發送到各個從節點
scp ~/.ssh/id_rsa.pub 192.168.0.237:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.238:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.239:~/.ssh

這時還不是免密登錄登錄的,需要輸入用戶名和密碼。

  1. 將公鑰追加到各個從節點的授權裏。

在每個從節點執行一下命令:

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

安裝JDK

參見之前的《詳解在Linux系統中安裝JDK》,這裏就不再贅述了。

Hadoop環境配置

主節點配置

下載Hadoop

從北京理工大學的鏡像上下載Hadoop:

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

創建文件夾

mkdir /usr/local/hadoop

解壓

tar -xzvf  hadoop-2.10.0.tar.gz -C /usr/local/hadoop
配置環境變量

追加Hadoop的環境變量到/etc/profile文件中

cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin 
EOF

使環境變量生效

source /etc/profile
修改配置文件

修改core-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml

修改其內容爲:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://onemore-hadoop-master:9000</value>
    </property>
</configuration>

修改hdfs-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml

修改其內容爲:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/usr/local/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/usr/local/hadoop/hdfs/data</value>
    </property>
</configuration>

複製mapred-site.xml.template爲mapred-site.xml

cp /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml

再修改mapred-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml

修改其內容爲:

<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
   <property>
      <name>mapred.job.tracker</name>
      <value>http://onemore-hadoop-master:9001</value>
  </property>
</configuration>

修改yarn-site.xml配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml

修改其內容爲:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>onemore-hadoop-master</value>
    </property>
</configuration>

新建masters配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters

新增內容爲:

onemore-hadoop-master

配置slaves文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves

修改其內容爲:

onemore-hadoop-slave1
onemore-hadoop-slave2
onemore-hadoop-slave3

從節點配置

下面以onemore-hadoop-slave1從節點爲例進行敘述,您需參照以下步驟完成onemore-hadoop-slave2和onemore-hadoop-slave3從節點的配置。

下載Hadoop

還是從北京理工大學的鏡像上下載Hadoop(如果下載速度慢,可以在主節點上發送到從節點):

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

創建文件夾

mkdir /usr/local/hadoop

解壓

tar -xzvf  hadoop-2.10.0.tar.gz -C /usr/local/hadoop
配置環境變量

追加Hadoop的環境變量到/etc/profile文件中

cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin 
EOF

使環境變量生效

source /etc/profile
修改配置文件

刪除slaves文件

rm -rfv /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves

在主節點上把5個配置文件發送到從節點上

scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/

啓動Hadoop集羣

格式化namenode

第一次啓動服務前需要執行詞操作,以後就不需要執行了。

hadoop namenode -format

啓動hadoop

/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh

訪問http://onemore-hadoop-master:50070/,就可以查看Hadoop集羣的相關信息了,如圖:

常用命令

查看Hadoop集羣的狀態

hadoop dfsadmin -report

重啓Hadoop

/usr/local/hadoop/hadoop-2.10.0/sbin/stop-all.sh
/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh

啓動dfs服務

/usr/local/hadoop/hadoop-2.10.0/sbin/start-dfs.sh

常見錯誤

Error: JAVA_HOME is not set and could not be found.

這個錯誤大概意思是沒有找到JDK的環境變量,可以修改hadoop-env.sh。

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh

增加JDK的環境變量,比如:

export JAVA_HOME=/usr/local/java/jdk1.8.0_231

因爲是在主節點上修改的,還需要發送到各個從節點:

scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave2:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave3:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章