天天看點

Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

主要分為一下幾個步驟:

  1. 安裝jdk(原因下面請看);
  2. 修改host配置;
  3. 關閉防火牆;
  4. 安裝hadoop;
  5. 配置 Hadoop 僞分布式;
  6. 啟動hdfs;

準備工作

關閉防火牆

#停止防火牆
systemctl stop firewalld
#關閉防火牆開機自動啟動
systemctl disable firewalld
           

修改hosts檔案,配置使用者指定本機IP位址

例如;192.168.1.1   hadoop
           

Hadoop的使用者設定

1、 建立hadoop的普通使用者

useradd hadoop

passwd hadoop

2、 給hadoop使用者sudo權限

vi /etc/sudoers

設定權限(非生産環境可以随意點)

root ALL=(ALL) ALL

hadoop ALL=(root) NOPASSWD:ALL

3、 切換到hadoop使用者

su - hadoop

4、 建立存放hadoop檔案的目錄

sudo mkdir /opt/modules

5、 将hadoop檔案夾的所有者指定為hadoop使用者

如果存放hadoop的目錄的所有者不是hadoop,之後hadoop運作中可能會有權限問題。

sudo chown -R hadoop:hadoop /opt/modules

配置ssh免密登入

自行百度即可

安裝JDK

通過yum search jdk

![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20201202150843364.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZscXhpbmc=,size_16,color_FFFFFF,t_70)

必須安裝這兩個,因為缺少一個在後面使用指令時無法使用

# 配置環境變量
vim /etc/profile

# JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.9.11-0.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

# 重新整理環境變量
source /etc/profile

# 驗證
java -version

```java
openjdk version "11.0.9" 2020-10-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.9+11-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.9+11-LTS, mixed mode, sharing)
           

安裝Hadoop

#下載下傳hadoop-3.2.1.tar.gz

# 解壓
tar -zxvf /usr/local/hadoop-3.2.1.tar.gz 

# 配置環境變量
vim /etc/profile

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

# 重新整理環境變量
source /etc/profile

# 驗證
hadoop version

```java
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 /usr/local/hadoop-3.2.1/share/hadoop/common/hadoop-common-3.2.1.jar

           

配置Hadoop僞分布式

配置HDFS

hadoop-env.sh

vim /usr/local/hadoop-3.2.1/etc/hadoop/hadoop-env.sh
 配置jdk
 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.9.11-0.el7_9.x86_64
           

core-site.xml

<!-- Put site-specific property overrides in this file. -->

<configuration>
   <!--指定HDFS中NameNode的位址-->
   <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop1:9000</value>		
   </property>	
   <!--指定Hadoop運作時産生檔案的 存儲目錄-->
   <property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoopTmp</value>
   </property>
</configuration>
           

hdfs-site.xml

<configuration>
    <!-- 指定HDFS副本的數量 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!-- 預設為true,namenode 連接配接 datanode 時會進行 host 解析查詢 -->
    <property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>true</value>
    </property>
</configuration>
           

啟動hdfs

# 第一次使用需要先格式化一次。之前若格式化過請先停止程序,然後删除檔案再執行格式化操作
hdfs namenode -format

# 啟動 namenode
hadoop-daemon.sh start namenode

# 啟動 datanode
hadoop-daemon.sh start datanode

# 驗證,檢視 jvm 程序
jps

# 84609 Jps
# 84242 NameNode
# 84471 DataNode
           

通過http://localhost:9870通路,注意:Hadoop3.X之後端口号預設為9870之前的為50070

Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

配置YARN

yarn-env.sh

最後兩行為因為jdk11的問題,必須添加否則運作失敗

Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

yarn-site.xml

此為固定格式

Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

添加一個額外的jar包

如果不添加的話,在運作yarn會報錯

Caused by: java.lang.NoClassDefFoundError: javax/activation/DataSource
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
           
cd /usr/local/hadoop-3.2.1/share/hadoop/yarn/lib
wget https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar
           

運作yarn

# 啟動 resourcemanager
yarn-daemon.sh start resourcemanager

# 啟動 nodemanager
yarn-daemon.sh start nodemanager

# 檢視 JVM 程序
jps

# 1604 DataNode
# 1877 ResourceManager
# 3223 Jps
# 1468 NameNode
# 2172 NodeManager
           
Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

配置 MapReduce

mapred-env.sh

vim /usr/local/hadoop-3.2.1/etc/hadoop/mapred-env.sh 
           
Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

mapred-site.xml

vim /usr/local/hadoop-3.2.1/etc/hadoop/mapred-site.xml 
           
Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

運作一個 MapReduce 任務

Centos7環境下,配置Hadoop-3.2.1僞分布式以及問題處理

繼續閱讀