Hadoop-3.2.1完全分佈式集羣搭建

一、搭建集羣

1、準備服務器(這裏以我的3臺Centos7爲例)

  • 1個主節點:Carlota1(192.168.33.21),
  • 2個子節點:Carlota2(192.168.33.22),Carlota3(192.168.33.23)

2、配置主節點名

在主節點命令行輸入: vi /etc/sysconfig/network 添加內容:

NETWORKING=yes
HOSTNAME=Carlota1

3、配置兩臺子節點名

分別在子節點命令行輸入: vi /etc/sysconfig/network 添加內容:

NETWORKING=yes
HOSTNAME=Carlota2
NETWORKING=yes
HOSTNAME=Carlota3

4、配置hosts

打開主節點的hosts文件,註釋掉 將文件的前兩行(當前主機的信息),並在文件中添加所有hadoop集羣的主機信息。

在命令行輸入: vi /etc/hosts ,添加3臺服務器的節點名信息:

192.168.33.21	Carlota1
192.168.33.22	Carlota2
192.168.33.23	Carlota3

保存之後,分別將主節點的hosts分別拷貝到其他兩個子節點:

分別執行 /bin/hostname hostsname 使更改生效,(例如:Carlota1上執行 /bin/hostsname Carlota1,使之生效。)(重啓可以代替/bin/hostname hostsname命令)

5、關閉防火牆

  1. 查看防火牆狀態 :firewall-cmd --state
  2. 停止firewall :systemctl stop firewalld.service
  3. 禁止firewall開機啓動:systemctl disable firewalld.service

6、配置ssh無密碼訪問(使每個節點上的/root/.ssh/authorized_keys文件中都包含所有的節點生成的公鑰內容)

  • 生成公鑰密鑰對:在每個節點上分別執行命令行輸入:ssh-keygen -t rsa , 一直按回車或Yes直到生成結束(執行結束之後每個節點上的/root/.ssh/目錄下生成了兩個文件 id_rsa 和 id_rsa.pub其中前者爲私鑰,後者爲公鑰)
  • 在主節點上執行命令行輸入:cp id_rsa.pub authorized_keys
  • 將兩個子節點的公鑰拷貝到主節點上,分別在兩個子節點上執行:
scp /root/.ssh/id_rsa.pub root@Carlota1:/root/.ssh/id_rsa_Carlota2.pub
scp /root/.ssh/id_rsa.pub root@Carlota1:/root/.ssh/id_rsa_Carlota3.pub
  • 在主節點上,將拷貝過來的兩個公鑰合併到authorized_keys文件中
cat id_rsa_Carlota2.pub>> authorized_keys
cat id_rsa_Carlota3.pub>> authorized_keys
  • 將主節點的authorized_keys文件分別替換子節點的authorized_keys文件
scp authorized_keys root@Carlota2:/root/.ssh/
scp authorized_keys root@Carlota3:/root/.ssh/
  • 最後測試是否配置成功:在Carlota1上分別執行,ssh Carlota2,ssh Carlota3 能正確跳轉到兩臺子節點的操作界面即可

二、Hadoop集羣配置

7、準備工作
下載好相應的Hadoop與JDK版本
在這裏插入圖片描述
8、分別上傳JDK與Hadoop的tar.gz文件到三臺服務器
這裏使用windows下的文件傳輸軟件進行上傳(其中我這裏上傳路徑分別爲/usr/local/java/和/usr/local/apps/)
在這裏插入圖片描述
9、安裝配置JAVA

  • tar -zxvf jdk-8u251-linux-x64.tar.gz
  • mv jdk-8u251-linux-x64.tar.gz jdk1.8

配置環境變量vi /etc/profile 添加以下內容

#JAVA
export JAVA_HOME=/usr/local/java/jdk1.8
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
  • source /etc/profile

測試是否安裝成功:java -version
在這裏插入圖片描述

10、安裝hadoop

  • tar -zxvf hadoop-3.2.1.tar.gz

配置環境變量vi /etc/profile 添加以下內容

#Hadoop
export HADOOP_HOME=/usr/local/apps/hadoop-3.1.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • source /etc/profile

11、配置Hadoop /sbin下
將start-dfs.sh,stop-dfs.sh兩個文件頂部添加以下參數

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

start-yarn.sh,stop-yarn.sh頂部也需添加以下參數:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

12、配置Hadoop /etc下
需要修改的有以下幾個文件:

  • hadoop-env.sh
  • yarn-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml
  • workers (Hadoop3.0以前的版本叫做slaves)

(1)、hadoop-env.sh和yarn-env.sh
分別添加JAVA_HOME路徑到hadoop-env.sh和yarn-env.sh中

export JAVA_HOME=/usr/local/java/jdk1.8

(2)、core-site.xml
添加如下代碼

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Carlota1:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/temp</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
</configuration>

其中/usr/temp文件夾需要新建!
(3)、hdfs-site.xml
添加如下代碼:

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Carlota1:9001</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
        <property>
                <name>dfs.web.ugi</name>
                <value>supergroup</value>
        </property>
</configuration>

其中/usr/dfs/name與/usr/dfs/data文件夾需要新建!

(4)、mapred-site.xml(沒有mapred-site.xml文件可以將mapred-site.xml.template進行重命名爲mapred-site.xml)

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Carlota1:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Carlota1:19888</value>
        </property>
</configuration>


(5)、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>Carlota1:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>Carlota1:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>Carlota1:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>Carlota1:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>Carlota1:8088</value>
        </property>
</configuration>

(6)、workers
將原內容修改爲

Carlota2
Carlota3

拷貝hadoop安裝文件到子節點

scp /etc/hadoop  root@Carlota2:/usr/local/apps/hadoop-3.1.2/etc
scp /etc/hadoop  root@Carlota3:/usr/local/apps/hadoop-3.1.2/etc

13、啓動Hadoop集羣

  • 格式化主節點的namenode:./bin/hdfs namenode -format
  • 主節點上在hadoop目錄下執行:./sbin/start-all.sh

主節點上jps進程如下:
在這裏插入圖片描述
子節點上jps進程如下:
在這裏插入圖片描述

hadoop集羣配置成功!!!

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