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>