Hadoop分布式集群搭建詳細教程


本教程是基於CentOS-7-x86_64的Hadoop完全分布式搭建

1、搭建前的准備

     1)CentOS-7虛擬機3台(hadoop1、hadoop2、hadoop3)

      2)hadoop-3.3.0包

      3)jdk-8u144-linux-x64包

2、整體部署

  hadoop1 hadoop2 hadoop3
HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN NodeManager

ResourceManager

NodeManager

NodeManager

 

 

 

 

 

 

 

3、基本步驟

     1)修改3台虛擬機的名稱

            2)關閉、禁止開機自啟防火牆

      3)配置靜態ip

      4)修改/etc/hosts文件(hadoop1、hadoop2、hadoop3)

      5)配置免密登錄(hadoop1、hadoop2、hadoop3)

      6)安裝JDK及配置相應環境變量(hadoop1)

      7)安裝Hadoop及配置相應環境變量(hadoop1)

      8)修改配置文件(hadoop1)

      9)拷貝(hadoop1-->hadoop2,hadoop1-->hadoop3)

      10)遠程同步/etc/profile文件(hadoop1)

      11)格式化NameNode

      12)啟動和關閉Hadoop集群

      13)通過瀏覽器訪問Hadoop集群

      14)測試集群,上傳文件

4、詳細步驟操作

             1)修改3台虛擬機的名稱

#hostname             #查看主機名稱
hostnamectl set-hostname 主機名 #修改主機名稱
#reboot #重啟虛擬機

              【注】:修改主機名稱后需重啟才能生效

       2)關閉、禁止開機自啟防火牆

#systemctl  status  firewalld       #查看防火牆狀態
#systemctl  stop  firewalld     #關閉防火牆
#systemctl  disable  firewalld      #關閉防火牆開機自啟
#vim  /etc/selinux/config        #修改selinux配置文件
SELINUX=enforcing 修改為 SELINUX=disabled

             3)配置靜態ip

#cd  /etc/sysconfig/network-scripts/
#vim  ifcfg-ens33
BOOTPROTO=none 改為 BOOTPROTO=static
IPADDR也進行修改

              【注】:因為3台虛擬機都是克隆完成的,ip地址一致,故在此對ip進行修改

       4)修改/etc/hosts文件(hadoop1、hadoop2、hadoop3)

#vim  /etc/hosts
192.168.150.14 hadoop1
192.168.150.15 hadoop2
192.168.150.16 hadoop3
#reboot

              5)配置免密登錄(hadoop1、hadoop2、hadoop3)

#ssh-keygen  -t  rsa          #生成ssh密鑰,不提示輸入密碼
三次回車鍵
#ssh-copy-id hadoop1 #ssh-copy-id hadoop2 #ssh-copy-id hadoop3 #將密鑰拷貝到各節點 #ssh hadoop1 #ssh hadoop2 #ssh hadoop3 #測試免密登錄

              6)安裝JDK及配置相應環境變量(hadoop1)

#cd /opt/            
#mkdir  modules               #創建modules文件夾
#mkdir  tar_packages               #創建tar_packages文件夾
#cd tar_packages/ #進入tar_packages文件夾
將hadoop-3.3.0.tar.gz和jdk-8u144-linux-x64.tar.gz包導入tar_packages文件夾中
導入方法較多,可用Xshell,可用命令wget xxxxx下載,亦可命令rz導入
#tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/modules/ #將壓縮包解壓到/opt/modules/文件夾下

#cd /opt/modules/jdk1.8.0_144/
#pwd
/opt/modules/jdk1.8.0_144 #復制此路徑

#vim /etc/profile/ #修改配置文件,加入環境變量
在文件末尾加入
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

#source /etc/profile #立即生效
#java
#javac
#javadoc #測試java環境
     7)安裝Hadoop及配置相應環境變量(hadoop1)
#cd  /opt/tar_packages/
#tar  -zxvf  hadoop-3.3.0.tar.gz   -C  /opt/modules       #將壓縮包解壓到/opt/modules/文件夾下

#cd  /opt/modules/hadoop-3.3.0
#pwd
/opt/modules/hadoop-3.3.0 #復制此路徑

#vim /etc/profile #修改配置文件,加入環境變量
在文件末尾加入
#HADOOP_HOME
export HADOOP_HOME=/opt/modules/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
#source /etc/profile #立即生效 #hadoop #測試hadoop
      8)修改配置文件(hadoop1)
1、修改hadoop-env.sh文件
#cd  /opt/modules/hadoop-3.3.0/etc/hadoop
#vim  hadoop-env.sh 
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144
  2、修改yarn-env.sh文件
#vim  yarn-env.sh
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144

      3、修改mapred-env.sh文件

#vim  mapred-env.sh
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144
  4、修改core-site.xml
#vim  core-site.xml
在<configuration>
</configuration>間加入

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定Hadoop運行時產生文件的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-3.3.0/data/tmp</value>
</property>

 5、修改hdfs-site.xml文件
#  vim  hdfs-site.xml
在<configuration>
</configuration>間加入

<!-- 指定Hadoop副本個數 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 指定Hadoop輔助名稱節點主機配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>

 6、修改yarn-site.xml文件 
#vim  yarn-site.xml
在<configuration>
</configuration>間加入

<!-- Reducer獲取數據的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>

     7、修改mapred-site.xml文件 

#vim  mapred-site.xml
在<configuration>
</configuration>間加入

<!-- 指定MR運行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

     8、修改workers文件

#vim  workers
修改為3個主機名稱
hadoop1
hadoop2
hadoop3
    【注】:我這里的hadoop-3.3.0版本文件名為workers,hadoop-2.x.x版本文件名為slaves
9)拷貝(hadoop1-->hadoop2,hadoop1-->hadoop3)
#scp -r  /opt/modules/  root@hadoop2:/opt/
#scp -r  /opt/modules/  root@hadoop3:/opt/            #將hadoop1主節點下opt目錄下的modules文件夾分別拷貝到hadoop2和hadoop3節點的opt目錄下

          10)遠程同步/etc/profile文件(hadoop1)

#rsync  -rvl  /etc/profile  root@hadoop2:/etc/profile 
#rsync  -rvl  /etc/profile  root@hadoop3:/etc/profile          #遠程同步,將hadoop1主節點上的配置文件分別拷貝到hadoop2和hadoop3節點

#tail /etc/profile #顯示已修改的配置文件(/etc/profile)內容,查看是否同步成功
#source /etc/profile #立即生效
#javadoc #測試
#hadoop #測試

#cat /opt/modules/hadoop-3.3.0/etc/hadoop/workers #查看workers文件內容是否一致
   11)格式化NameNode
cd  /opt/modules/hdoop-3.3.0#hadoop  namenode  -format     #格式化NameNode
   12)啟動和關閉Hadoop集群
#啟動集群
#
cd /opt/modules/hadoop-3.3.0/sbin/ #start-dfs.sh
先在hadoop1節點下執行上述命令start-dfs.sh

#cd /opt/modules/hadoop-3.3.0/sbin/ #start-yarn.sh
等hadoop1主節點下start-dfs.sh命令執行結束后,在hadoop2節點下執行命令start-yarn.sh

#jps #hadoop1、hadoop2、hadoop3一起查看啟動的進程

#關閉集群
#stop-yarn.sh
先在hadoop2節點下執行命令stop-yarn.sh

#stop-dfs.sh
等hadoop2節點下stop-yarn.sh命令執行結束后,在hadoop1主節點下執行命令stop-dfs.sh
   【注】:啟動集群和關閉集群順序是相反的,啟動時先hadoop1,關閉時后hadoop1
【注】:因hadoop版本不同,hadoop-2.x.x下啟動正常,hadoop-3.x.x下可能出現如下錯誤:
[root@hadoop1 sbin]# start-dfs.sh 
Starting namenodes on [hadoop1]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop3]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

[root@hadoop1 sbin]# start-dfs.sh 
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
     解決辦法為:在start-dfs.sh和stop-dfs.sh文件首部加入如下部分
1 HDFS_DATANODE_USER=root
2 HDFS_DATANODE_SECURE_USER=hdfs
3 HDFS_NAMENODE_USER=root
4 HDFS_SECONDARYNAMENODE_USER=root
     在start-yarn.sh和stop-yarn.sh文件首部加入如下部分
1 YARN_RESOURCEMANAGER_USER=root
2 HADOOP_SECURE_DN_USER=yarn
3 YARN_NODEMANAGER_USER=root
    這樣這個問題就解決了,記得看清楚自己hadoop的版本號
13)通過瀏覽器訪問Hadoop集群
在瀏覽器輸入:192.168.150.14(主節點ip):9870訪問Hadoop文件系統
【注】:hadoop-3.x.x,服務器端口改為了9870,並不是原來的50070,看清自己的Hadoop版本
可在Windows下配置主機節點映射,配置完成后即可在瀏覽器輸入:hadoop1(主節點名稱):9870訪問Hadoop文件系統
具體映射配置:在C:\Windows\System32\drivers\etc\hosts文件后,加入與在虛擬機/etc/hosts配置一致的內容,即:
#192.168.150.14   hadoop1
#192.168.150.15   hadoop2
#192.168.150.16   hadoop3

         14)測試集群,上傳文件

#hadoop  fs  -mkdir  -p   /root/          #創建root目錄
#hadoop  fs  -put  /opt/tar_packages/jdk-8u144-linux-x64.tar.gz  /root/        #將/opt/tar_packages/目錄下的jdk-8u144-linux-x64.tar.gz壓縮包上傳到剛才創建的root目錄下

 至此,分布式集群搭建完成!

PS:搭建過程中需要的工具我整理了一下,需要的請自取哦!點這里(提取碼:u240)

    如果搭建過程遇到了什么難以解決的問題,歡迎留言,畢竟多一個人一起百度可能會快一點!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM