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之旅顺利!!

posted @ 2020-10-02 16:31  世幻水  阅读(724)  评论(0编辑  收藏  举报