CentOS8 安裝 Hadoop3.2.1 配置偽分布式


目錄

  1. 下載並配置java環境
  2. 下載並解壓hadoop安裝包
  3. 配置環境變量
  4. 配置5個hadoop設置文件
  5. 設置ssh免密碼登錄
  6. 開啟hadoop
  7. 設置外界可以訪問(選看)
  8. 常見問題,以及處理辦法(擴展)

1、下載並配置java環境

在這里jdk建議使用1.7或者1.8,在官方的測試中1.7是全面通過測試的,而1.8被證實可行,如果是更高版本,當然也是可以的,但有可能會帶來不必要的麻煩,小編就曾經使用openjdk1.15搭建過哦。點擊標題,在上一篇文章中,講的很詳細了。

2、下載並解壓hadoop安裝包

使用下面的連接來完成下載

wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

之后使用tar -xzvf來進行解壓

tar -xzvf hadoop-3.2.1.tar.gz

最后會產生hadoop-3.2.1最后會產生如下圖的文件。
在這里插入圖片描述
您也可以使用其他版本【下載網址】

3、配置環境變量

通過vim /etc/profile將hadoop配置寫入profile中

# hadoop
export HADOOP_HOME=/opt/hadoop-3.2.1
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

#hadoop-3.2.1必須添加如下5個變量否則啟動報錯,(hadoop-2.x不需要)
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

在這里插入圖片描述
測試一下效果,如果命令都產生了版本信息就證明環境變量的配置 我們已經成功了。

[root@localhost opt]# java -version
java version “1.8.0_202”
Java™ SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot™ 64-Bit Server VM (build 25.202-b08, mixed mode)

[root@localhost opt]# hadoop version
Hadoop 3.2.1
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842
Compiled by rohithsharmaks on 2019-09-10T15:56Z
Compiled with protoc 2.5.0
From source with checksum 776eaf9eee9c0ffc370bcbc1888737
This command was run using /opt/hadoop-3.2.1/share/hadoop/common/hadoop-common-3.2.1.jar


4、配置以下5個文件

  1. 修改 hadoop-3.2.1/etc/hadoop/hadoop-env.sh

vim hadoop-3.2.1/etc/hadoop/hadoop-env.sh

取消並修改添加export JAVA_HOME=,使其值為我們解壓出jdk的位置,export JAVA_HOME=/opt/jdk1.8.0_202

  1. 修改 hadoop-3.2.1/etc/hadoop/core-site.xml

vim hadoop-3.2.1/etc/hadoop/core-site.xml

<configuration>
  <!--指定HADOOP所使用的文件系統schema(URI)NameNode的地址-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>   
  </property>
  <!--指定HADOOP運行時產生文件的存儲目錄-->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-3.2.1/tmp</value>   
  </property>    
</configuration>
  1. 修改 hadoop-3.2.1/etc/hadoop/hdfs-site.xml

vim hadoop-3.2.1/etc/hadoop/hdfs-site.xml

<configuration>
  <!--指定HDFS副本的數量-->
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <!--設置默認端口,這段是我后來加的,如果不加上會導致啟動hadoop-3.1.0后無法訪問50070端口查看HDFS管理界面,hadoop-2.7.7可以不加-->
  <property> 
    <name>dfs.http.address</name> 
    <value>localhost:50070</value> 
  </property>
</configuration>
  1. 修改 hadoop-3.2.1/etc/hadoop/mapred-site.xml

vim hadoop-3.2.1/etc/hadoop/mapred-site.xml

<!--指定mr運行在yarn上-->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
  1. 修改 hadoop-3.2.1/etc/hadoop/yarn-site.xml

vim hadoop-3.2.1/etc/hadoop/yarn-site.xml

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

5、設置ssh免密碼登錄

    這步在3.2.1中是不可省略的,如果沒有配置會在運行時彈出警告,開啟失敗,而在2.*則會讓你輸入密碼。
設置過程如下

[root@localhost opt]# cd ~

[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #(回車即可)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #(回車即可)
Enter same passphrase again: #(回車即可)
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:wnLCQCfmTn4ZWM17UMKIyxeHuZPc9g5QGt44XLBKJhk root@localhost.localdomain
The key's randomart image is:
+---[RSA 3072]----+
|E +.+O...        |
| *.=*.O.         |
|o.B=o& o         |
| Bo+&+= .        |
|  +.*=+oS        |
|   . +...        |
|       o         |
|        .        |
|                 |
+----[SHA256]-----+
[root@localhost ~]# cd .ssh/

[root@localhost .ssh]# ls
id_rsa  id_rsa.pub       #(id_rsa私鑰 id_rsa.pub公鑰)
[root@localhost .ssh]# cp id_rsa.pub authorized_keys 
[root@localhost .ssh]# ssh localhost date 
The authenticity of host 'localhost (::1)' can't be established. ECDSA key fingerprint is SHA256:R8etYp59lL7SLJIGJwybhSw5ziySPaxFhcqKY0ZDxEo. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Wed Sep 30 18:46:36 EDT 2020
[root@localhost .ssh]# ssh localhost #(如果沒有提示輸入密碼即為成功)
Last login: Wed Sep 30 17:30:34 2020 from 192.168.45.1

6、開啟hadoop

6.1 格式化NameNode
注意:如需要再格式化NameNode,需要先刪除第一次運行Hadoop后產生的VERSION文件。

[root@localhost opt]# hdfs namenode -format
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = localhost/127.0.0.1
......
......
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop/192.168.42.134
************************************************************/

6.2 使用start-all開啟所有進程

[root@localhost opt]# start-all.sh
Starting namenodes on [localhost]
Last login: Thu Oct  1 01:15:02 EDT 2020 from 192.168.45.1 on pts/0
Starting datanodes
Last login: Thu Oct  1 01:21:30 EDT 2020 on pts/0
Starting secondary namenodes [localhost.localdomain]
Last login: Thu Oct  1 01:21:34 EDT 2020 on pts/0
localhost.localdomain: Warning: Permanently added 'localhost.localdomain' (ECDSA) to the list of known hosts.
Starting resourcemanager
Last login: Thu Oct  1 01:22:01 EDT 2020 on pts/0
Starting nodemanagers
Last login: Thu Oct  1 01:22:29 EDT 2020 on pts/0

6.3 使用start-all開啟所有進程,當你看到以下六個進程時證明了你的環境已經配置好了。

[root@localhost opt]# jps
12256 ResourceManager
12547 Jps
12004 SecondaryNameNode
11769 DataNode
12393 NodeManager
11627 NameNode

7、設置外界可以訪問

當你在配置里使用localhost時,其實是一種偷懶的做法,外部是無法進行訪問的。例如,如果我在虛擬機中使用localhost配置的話,那么在主機是無法訪問到hadoop服務的。這時我們可以將localhost改成自己的公網ip。

7.1 使用ifconfig查詢自己的ip
在這里插入圖片描述
7.2 將配置的localhost 改為這個ip

  1. 修改 hadoop-3.2.1/etc/hadoop/core-site.xml

vim hadoop-3.2.1/etc/hadoop/core-site.xml

<configuration>
  <!--指定HADOOP所使用的文件系統schema(URI)NameNode的地址-->
  <property>
    <name>fs.defaultFS</name>
    <!-- localhost => 192.168.45.132 -->
    <value>hdfs://192.168.45.132:9000</value>   
  </property>
  <!--指定HADOOP運行時產生文件的存儲目錄-->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-3.2.1/tmp</value>   
  </property>    
</configuration>
  1. 修改 hadoop-3.2.1/etc/hadoop/hdfs-site.xml

vim hadoop-3.2.1/etc/hadoop/hdfs-site.xml

<configuration>
  <!--指定HDFS副本的數量-->
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <!--設置默認端口,這段是我后來加的,如果不加上會導致啟動hadoop-3.1.0后無法訪問50070端口查看HDFS管理界面,hadoop-2.7.7可以不加-->
  <property> 
    <name>dfs.http.address</name> 
    <value>192.168.45.132:50070</value> 
  </property>
</configuration>
  1. 修改 hadoop-3.2.1/etc/hadoop/yarn-site.xml

vim hadoop-3.2.1/etc/hadoop/yarn-site.xml

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

7.3 關閉防火牆
    防火牆會阻止非本機對服務發起的請求,所以,如果要讓外界訪問到hadoop服務一定要配置防火牆,如果是在虛擬機上,就可以直接關閉了。
使用systemctl stop firewalld 來零時關閉
使用systemctl disable firewalld 來永久關閉
在這里插入圖片描述
當你執行完以上三步就可以在主機,或者另外一台機子上進行hadoop服務的訪問了(如果不是公網ip,需要在同一局域網中)
在這里插入圖片描述
在這里插入圖片描述
7.4 使用hosts隱藏ip地址(可選項)
在配置信息里,我們一般會使用域名來代替ip地址。配置如下

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.45.132 mainnode     #(添加這句,表示把本機的ip映射成了mainnode)

之后就是把ip 換成"mainnode"

  1. 以修改 hadoop-3.2.1/etc/hadoop/core-site.xml為例

vim hadoop-3.2.1/etc/hadoop/core-site.xml

<configuration>
  <!--指定HADOOP所使用的文件系統schema(URI)NameNode的地址-->
  <property>
    <name>fs.defaultFS</name>
    <!-- 192.168.45.132 => mainnode -->
    <value>hdfs://mainnode:9000</value>   
  </property>
  <!--指定HADOOP運行時產生文件的存儲目錄-->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-3.2.1/tmp</value>   
  </property>    
</configuration>

可以看到也是可以正常訪問的。
在這里插入圖片描述

8、常見問題,以及處理辦法

8.1 start-all.sh 報錯:
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
解決方案:https://blog.csdn.net/weixin_49736959/article/details/108897129

8.2 start 之后什么都沒啟動,並提示:
mydomain: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
解決方案:沒有配置好ssh,做一遍第5條

8.3 出現jps缺少打開項的錯誤
例如缺少NameNode, 缺少ResourceManager, 缺少NodeManager…
解決方法:https://blog.csdn.net/weixin_49736959/article/details/108897991


參考文件
https://www.cnblogs.com/zhengna/p/9316424.html

出現的問題歡迎在評論區提出,好的問題小編也會記錄進入博客正文。祝大家hadoop之旅順利!!


免責聲明!

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



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