Hadoop集群基本配置

  • 2019 年 12 月 16 日
  • 筆記

集群規劃

集群節點分配

主機名

主機IP

master

192.168.100.100

slave1

192.168.100.101

slave2

192.168.100.102

slave3

192.168.100.103

軟體版本

軟體名稱

版本號

Java

1.8.0_152

CentOS

CentOS-7-x64-1708

Hadoop

2.7.5

MySQL

5.7.20

Hive

2.3.2

各軟體安裝路徑

Hadoop

/opt/SoftWare/Hadoop/

Java

/opt/SoftWare/Java/

Hive

/opt/SoftWare/Hive

MySQL

/opt/SoftWare/MySQL

各主機基礎軟體安裝及操作

由於使用的是最小化安裝,因此這裡需要安裝不少軟體才能進行後續操作。

openssh安裝,便於遠程上傳文件

[root@master ~]# sudo yum -y install openssh-clients openssh-server

安裝完成後,可以使用下面命令進行測試: ssh localhost 輸入root賬戶的密碼,如果可以正常登錄,則說明SSH安裝沒有問題。測試正常後使用exit命令退出ssh。

同步時間工具

#安裝ntpdate工具  [root@master ~]# yum -y install ntp ntpdate  #設置與網路時間同步  [root@master ~]# ntpdate cn.pool.ntp.org  #系統時間寫入硬體時間  [root@master ~]# hwclock --systohc

文件上傳(rz)下載(sz)工具

可以在Xshell工具中通過rz調出上傳文件的窗口進行文件上傳,也可以通過sz 文件名下載某一個文件。

[root@master ~]# yum -y install lrzsz

安裝網路下載yum工具 wget

[root@test ~]# yum -y install wget

關閉防火牆

#查看防火牆開啟狀態  [root@test ~]# systemctl status firewalld  #關閉防火牆  [root@test ~]# systemctl stop firewalld  #禁止開機啟動防火牆  [root@test ~]# systemctl disable firewalld  #開啟防火牆  [root@test ~]# systemctl start firewalld  #設置開機啟動防火牆  [root@test ~]# systemctl enable firewalld  #重啟防火牆  [root@test ~]# systemctl restart firewalld

配置SSH免密碼登錄

四台主機均按照步驟2安裝基礎軟體工具(這裡不再過多敘述)

修改hosts文件,添加以下內容,四台主機均進行操作

[root@master ~]# vi /etc/hosts  #127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  #::1         localhost localhost.localdomain localhost6 localhost6.localdomain6  192.168.100.100 master  192.168.100.101 slave1  192.168.100.102 slave2  192.168.100.103 slave3

配置SSH免密碼登錄

#每台機器先使用ssh執行以下,以在主目錄產生一個.ssh 文件夾  [root@master ~]# ssh master  #然後輸入no即可  #每台機器均進入~/.ssh 目錄進行操作  [root@master ~]# cd ~/.ssh  #輸入以下命令,一路回車,用以產生公鑰和秘鑰  [root@master .ssh]# ssh-keygen -t rsa -P ''  #出現以下資訊說明生成成功  Generating public/private rsa key pair.  Enter file in which to save the key (/root/.ssh/id_rsa):  Your identification has been saved in /root/.ssh/id_rsa.  Your public key has been saved in /root/.ssh/id_rsa.pub.  The key fingerprint is:  SHA256:6YO1h1emM9gcWvv9OT6ftHxLnjP9u8p25x1o30oq3No root@master  The key's randomart image is:  +---[RSA 2048]----+  |                 |  |                 |  |                 |  |         .       |  |        S o o    |  |       + O *  .  |  |      . B.X. o.+.|  |         +o=+=**%|  |          .oEo*^^|  +----[SHA256]-----+  #將每台機器上的id_rsa.pub公鑰內容複製到authorized_keys文件中  [root@master .ssh]# cp id_rsa.pub authorized_keyscd  #將所有的authorized_keys文件進行合併(最簡單的方法是將其餘三台slave主機的文件內容追加到master主機上)  [root@slave1 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >> ~/.ssh/authorized_keys'  [root@slave2 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >> ~/.ssh/authorized_keys'  [root@slave3 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >> ~/.ssh/authorized_keys'  #查看master上的authorized_keys文件內容,類似如下即可  [root@master .ssh]# more authorized_keys  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5iw8+LlLxo0d77uaTChOKKJqfMHzp2jgzqV2hFAneFXqqWmr  Z4/FrMUPenmdss19bP4Up9G7PGbJu29yZDvkDwlmuqnVajYyDOsCl7PPXPWXMIlxMGUHgSXLnQQi6QnWp04vJKDs0EbiRTd0ZYCSQefzJcZ8jbQ7bLYt6jtil7FfUupTdHTeexKKd8Mq3K7YFZHumKvhzs6wWiM+n41jANS083ss3OYmAdO2cU0w1BhLVvJhdzd6fNG3RXVCXI2v0XxCUHiqI9Oewl2qPOfKzeyy09bJxo371Ezjmt8GMrkA/Ecepkvx12qwNzC9bSPLfbnPWVo2gIxe4mMaFqCFJ root@master  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3CkB3Jejavt+yFphsbciktWciJmbcUBOv3ZLPVLW18ZxXGZK  vG50EPXo/4By7P6IRW0wCa5YuckQEW+q6kmSatxqJ8e/K9a1mAk13N4f7V7M71Nn8IkujlF3gHYjKrmnEWpGJCy5YBURzywIQTRArlIac1xj2SeM6q+gTMV9WrAKJupIRHli+W0kHVaYHNdKl7KMUT4KVrSl+h4wFwAd7Tcyj7JIbUcCCL6o/v/LqGFwpcJfbfUsuKJJho+tImh41j7mSXR8kRbTSZkcq5KX+iANrANwOHZ58tV5KXmMQjuVq7aJ985C16hHssB6zq/zjAxpxAyQIeE8Incc8U8ix root@slave1  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC//uaMbzbkYqxdgZJSdq+gdQYldzMQ7D3SxsUaNO5oVnVOszw  +mbNnmL8vp1EUUehabQHPCAvCmLKUPXzfcxlyJEF/pnY77u4ySwsRVEpHvsDZbrclgCOrS6hW00sSx303KHLOgXT70LfrmnohfUhvTxajzLXT+C8f5ZfTZ8meKD73HKl16jRwZQ8YhW9GUyuCkgQTGtKtTKPsRUd9LpAc/7/u8xvvvNvTYPxgyTJcUMzGSOHh8J3upI54ykY0FgBkjs1fCUaDalxAgsHw9B1iyx706WbcT6ymiQVMKGnnnM6k2KPvUvfDswVfUSG+4ZsYSRHRTgWuiBbHoIr7DVd root@slave2  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDTzTTdGRTd1zts3m7uKobcgRom4lVyF9EdNOdbBWMucYjbCs  BgP1ideDDQed2TyBj3Szz3Yx6h1L4McGmATY/D9qRLml26VW/x0Tod8JYkqOQpQL9knLW2cwITnhLzq5VDugOix06r/uweP3Zed9CO7ld3jUxJJNZCYpsNz+eUKq9SWM5+ehUu9pfZZu9zUk7Q01js3uCHzu1AhsajgNzgB4+YLLccdHBfxGg4ix5wuaF82PlEEh70hTdfRkq8pqPMZ+FIQtTgfD5XllKTcnPItUY23hc7Umx4I3ujOd810vzffWYK07cOtv1r7LEcYtYqbZ6zIvII+M775iRkzQX root@slave3    #將master上的authorized_keys文件分發到其他主機上  [root@master .ssh]# scp ~/.ssh/authorized_keys root@slave1:~/.ssh/  [root@master .ssh]# scp ~/.ssh/authorized_keys root@slave2:~/.ssh/  [root@master .ssh]# scp ~/.ssh/authorized_keys root@slave3:~/.ssh/  #每台機器之間進行ssh免密碼登錄操作,包括自己與自己  [root@master ~]# ssh master  [root@master ~]# ssh slave1  [root@slave1 ~]# ssh master  [root@master ~]# ssh slave2  [root@slave2 ~]# ssh master  [root@master ~]# ssh slave3  [root@slave3 ~]# ssh master  [root@master ~]# ssh slave1  [root@slave1 ~]# ssh slave1  [root@slave1 ~]# ssh slave2  [root@slave2 ~]# ssh slave1  [root@slave1 ~]# ssh slave3  [root@slave3 ~]# ssh slave1  [root@slave1 ~]# ssh slave2  [root@slave2 ~]# ssh slave2  [root@slave2 ~]# ssh slave3  [root@slave3 ~]# ssh slave2  [root@slave2 ~]# ssh slave3  [root@slave3 ~]# ssh slave2  [root@slave2 ~]# ssh slave3  [root@slave3 ~]# ssh slave3

安裝配置Java環境並測試

下載jdk

使用yum來安裝1.8版本OpenJDK:

sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

安裝完成後,輸入 java 和 javac 命令,如果能輸出對應的命令幫助,則表明jdk已正確安裝。

配置 JAVA 環境變數

執行命令:編輯 ~/.bashrc,在結尾追加:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

保存文件後執行下面命令使 JAVA_HOME 環境變數生效:

source ~/.bashrc

為了檢測系統中 JAVA 環境是否已經正確配置並生效,可以分別執行下面命令:

java -version  $JAVA_HOME/bin/java -version

若兩條命令輸出的結果一致,且都為我們前面安裝的openjdk-1.8.0的版本,則表明JDK環境已經正確安裝並配置。

安裝配置Hadoop並配置

下載Hadoop到本地

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz

上傳至master節點

#上傳  [root@master ~]# cd /opt/SoftWare/Hadoop  [root@master Hadoop]# rz  #解壓  [root@master Hadoop]# tar -zxvf hadoop-2.7.5.tar.gz

創建目錄

#進入hadoop-2.7.5主目錄  [root@master Hadoop]# cd hadoop-2.7.5  #創建以下目錄,以備後用  [root@master hadoop-2.7.5]# mkdir tmp  [root@master hadoop-2.7.5]# mkdir logs  [root@master hadoop-2.7.5]# mkdir -p hdfs/name  [root@master hadoop-2.7.5]# mkdir -p hdfs/dat

修改配置

修改hadoop-env.sh文件

[root@master hadoop-2.7.5]# vi etc/hadoop/hadoop-env.sh  #修改JAVA_HOME為以下內容,否則容易出現Hadoop無法啟動問題  export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

修改yarn-env.sh文件

[root@master hadoop-2.7.5]# vi etc/hadoop/yarn-env.sh  #修改JAVA_HOME為以下內容  export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

編輯slaves文件

#該文件用於記錄本集群有哪些數據節點  [root@master hadoop-2.7.5]# vi etc/hadoop/slaves  #刪除該文件中原來的內容,添加以下內容  slave1  slave2  slave3

echo $JAVA_HOME

修改core-site.xml文件

[root@master hadoop-2.7.5]# vi etc/hadoop/core-site.xml

該文件為Hadoop的核心配置文件,非常重要

<!--在<configuration></configuration>中間添加一下內容-->  <property>      <name>fs.defaultFS</name><!--定義Hadoop Master的URI和埠-->      <value>hdfs://master:9000</value>  </property>  <property>      <name>hadoop.tmp.dir</name><!--hadoop的臨時存儲目錄-->      <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.5/tmp</value>  </property>  <property>      <name>io.file.buffer.size</name><!--用作序列化文件處理時讀寫buffer的大小-->      <value>131702</value>  </property>