centOS 7-Hadoop3.3.0完全分布式部署


本文內容不乏對各大佬的案例借鑒,侵刪。

本次實驗用到的有虛擬機,Xshell,Hadoop壓縮包和jdk壓縮包

  hadoop111A:192.168.241.111 hadoop222B:192.168.241.112 hadoop333C:192.168.241.113
HDFS

NameNode

DataNode

DataNode

secondaryNameNode

DataNode

YARN NodeManager

ResourceManager

NodeManager

NodeManager

我這邊用的三台虛擬機和對應的IP是:

hadoop111A  192.168.241.111

hadoop222B  192.168.241.112

hadoop333C  192.168.241.113

 

先在虛擬機里面安裝好一個centOS 7,然后把靜態IP配置好

先進入 /etc/sysconfig/network-scripts 里面有個名為 ifcfg-ens33 的文件,修改這個文件。

cd /etc/sysconfig/network-scripts
vim ifcfg-ens33

修改這些配置的時候 會由於權限不夠,會報錯已保存但未修改,我是直接轉換成root用戶進行修改的,這樣一來比較方便。輸入命令:su  轉換成root用戶

把里面沒用的內容刪掉,保留有用的,我修改的內容是這樣的;復制粘貼的時候記得按 i 轉為插入模式

DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.241.111
PREFIX=24
GATEWAY=192.168.241.2
DNS1=192.168.241.2
DNS2=8.8.8.8

然后重啟網絡管理

service NetworkManager restart

現在就可以看看你的IP發生的變化,然后ping一下百度,看看是否能建立數據傳輸。

現在可以通過xshell鏈接linux了,接着就是修改主機名

vim /etc/hostname

hadoop111A 就是我這台虛擬機的主機名

這里我們可以先把映射寫好,預先寫入你另外兩台虛擬機的主機名和IP

vim /etc/hosts

然后就是安裝Hadoop和jdk,這兩個軟件包可以去相應的官網下載,值得注意的是,jdk我們要下載1.8版本的,我先前安裝的16.0版本的,出現了問題,可能是不兼容吧,我看很多大佬安裝的都是1.8版本的,所以我下載了1.8版本安裝之后,就沒有出現問題了。

我們在Windows上下載好這些軟件包之后,可以通過xshell這一些工具傳進來,我圖方便,就直接拖進虛擬機,然后找到軟件包在linux里的位置,進行移動和解壓。

安裝jdk,因為sentos7自帶有jdk,所以我們要將其刪除,先查看系統中的jdk

rpm -qa | grep java

這里我們可以看到有1.8和1.7的jdk,我們只需要刪除jdk

rpm -e --nodeps jdk名字

軟件包的名字可以在上面復制粘貼,運行 rpm -qa | grep java 查看是否刪除完畢

現在就是解壓jdk了,路徑可以自己選,我這邊是安裝在 /usr/java 里面  用命令解壓文件

tar -zxvf jdk軟件包名

給jdk添加環境變量,添加在最后面

vim /etc/profile
##JAVA_HOME
JAVA_HOME=/usr/java/jdk1.8.0_291
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib.dt.jar:$JAVA_HOME/lib/tools.jar:$JER_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

應用profile配置

source /etc/profile

查看jkd

java -version

顯示有版本號就說明安裝成功了

按Hadoop和定義配置文件

和安裝jdk一樣,先把Hadoop壓縮包解壓

添加環境變量

vim /etc/profile
##HADOOP_HOME
export HADOOP_HOME=/opt/soft/hadoop/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

應用profile配置

source /etc/profile

查看hadoop,出現版本號即配置成功

hadoop version

進入hadoop的etc里面修改相應的配置文件

配置 core-site.xml

<!--指定namenode的地址-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop111A:8020</value>
</property>
<!-- 指定 Hadoop 運行時產生文件的存儲目錄 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/soft/hadoop/hadoop-3.3.0/data</value>
</property>

配置 hadoop-env.sh 如果這個不添加,那么hadoop運行的時候就會報錯說找不到jdk的位置

export JAVA_HOME=/usr/java/jdk1.8.0_291

配置 hdfs-site.xml

<!--nn web端訪問地址-->
<property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop111A:9870</value>
</property>
<!-- 2nn web端訪問地址 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop333C:9868</value>
</property>

配置 yarn-site.xml

<!-- 指定 MR 走shuffle -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop222B</value>
</property>

配置 mapred-site.xml

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

配置 workers

hadoop111A
hadoop222B
hadoop333C

配置完畢后關機,在虛擬機里面完全克隆兩台虛擬機,並將其IP和主機名修改好

完事后,進行免密登陸設置,運行指令創建免密登陸密鑰

ssh-keygen -t rsa

一路回車下去后,私鑰和公鑰就在 /root/.ssh 里面建立了

進入這個文件夾就可以看到了

cd /root/.ssh

創建一個名為 authorized_keys 的文件

touch authorized_keys

然后將公鑰寫進這個文件,三台主機都要進行這樣的操作

cat id_rsa.pub >> authorized_keys

期間如果寫入不了,那多半是權限不夠,這時候我們可以修改下他們的權限

chmod 600 authorized_keys
chmod 700 /root/.ssh

然后用vim打開 authorized_keys 就可以看到密鑰了,我就不傳來傳去了,直接簡單粗暴,直接復制粘貼了

然后用ssh鏈接試試,我這邊鏈接hadoop222B

這樣就是鏈接上了,如個報錯說找不到,那就是前面映射沒設置好,如果報錯無法鏈接,那就修改下面的配置

修改 /etc/ssh/ssh_config 文件的內容

StrictHostKeyChecking ask打開注釋修改為StrictHostKeyChecking no即可

vim /etc/ssh/ssh_config

現在就可以格式化hadoop了

期間沒有任何報錯,那就是成功了,如果報錯意外終止,那就是配置文件里面的標簽沒打好

在 hadoop/sbin 里面可以看到這些文件

這里我們先啟動start-dfs.sh

jps查看一下

hadoop111A啟動的是 NameNode 和 DataNode

hadoop222B啟動的是 DataNode

hadoop333C啟動的是 DataNode 和 SecondaryNameNode

 

這時候我們就可以打開瀏覽器訪問hadoop111A:9870

 

 

 

 

 

 

 然后在hadoop222B中啟動

jps查看

對照上面表格的啟動項,是一樣的就對了,必須要和部署的一摸一樣

然后在瀏覽器里面輸入hadoop222B:8088

 

 

 這樣就算是部署好了

如果期間 ResourceManager 啟動不了

啟動start-dfs.sh報錯Attempting to operate on hdfs namenode as root
在/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

 


免責聲明!

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



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