Centos7安装Hadoop-3.1.4教程

前言

首先确定你是什么身份登录的Centos,如果你是以root身份登录CentOS,那么在安装和配置Hadoop时,不需要为每个步骤前都使用sudo命令。

准备一个SSH和FTP工具,一般使用xshell,博主这里使用WindTerm。

下载好需要的文件,通过XFTP协议传输到Linux上你找得到的目录。

安装流程

首先下载好需要的文件,通过XFTP协议传输到Linux上你找得到的目录。

确定你已经安装Java

Hadoop需要Java运行环境,所以首先确保你的系统中已经安装了Java。可以查看以下教程:

点击跳转

安装完成后,验证Java是否安装成功

java -version

环境变量示例

配置SSH免密登录【可选】:

Hadoop需要通过SSH在不同节点间进行通信。配置SSH免密登录可以提高安全性并简化操作。

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
配置SSH免密登录在Hadoop集群中是可选的,但是在大多数情况下,它是一个推荐的做法。以下是为什么建议配置SSH免密登录的原因:
1. **简化操作**:在Hadoop集群中,各个节点之间需要频繁地通过SSH进行通信。如果没有配置免密登录,每次通信都需要输入密码,这会非常繁琐。
2. **自动化脚本**:在自动化脚本中,如Hadoop的启动和停止脚本,无法手动输入密码。因此,免密登录是实现自动化管理的必要条件。
3. **安全性**:虽然听起来似乎减少了安全性,但实际上,通过正确配置SSH免密登录,可以增强安全性。你可以限制哪些用户可以免密登录,以及从哪些机器登录,同时还可以设置SSH的其他安全选项,如使用SSH密钥的密码保护。
4. **性能**:免密登录可以减少节点间通信的延迟,因为不需要等待密码的输入。
如果你只是在一个单节点的伪分布式模式下测试Hadoop,并且不打算扩展到多节点集群,或者不需要自动化脚本管理Hadoop,那么你可以不配置SSH免密登录。但是,如果你计划在一个真正的分布式环境中运行Hadoop,或者想要更顺畅的管理体验,那么配置SSH免密登录是一个好主意。
总之,虽然SSH免密登录不是强制性的,但它是Hadoop集群最佳实践的一部分,并且在大规模部署和生产环境中几乎是必须的。

解压Hadoop安装包

切换到下载hadoop-3.1.4.tar.gz的目录,然后解压安装包到当前目录:

tar -zxf hadoop-3.1.4.tar.gz

配置Hadoop环境变量

编辑~/.bashrc文件,在Linux系统中,你可以使用文本编辑器来编辑~/.bashrc文件。CentOS 7默认可能不包含某些现代文本编辑器(如nanovim),但它通常会预装vivim。以下是如何使用vivim编辑~/.bashrc文件的步骤:

  1. 打开终端。输入以下命令之一来编辑~/.bashrc文件:

    • 使用vi编辑器:

      vi ~/.bashrc
    • 使用vim编辑器:

      vim ~/.bashrc
  2. 如果你不熟悉vivim,可以看看以下vi/vim的基本命令:

    • i:进入插入模式,开始编辑文本。
    • Esc:退出插入模式。
    • :wq:保存更改并退出编辑器(:w保存,:q退出)。
    • :q!:不保存更改强制退出编辑器。

在文件末尾添加以下内容(请将/path/to/hadoop-3.1.4替换为实际的Hadoop解压路径。):

export HADOOP_HOME=/path/to/hadoop-3.1.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

环境变量示例

保存文件后,执行以下命令使环境变量生效:

source ~/.bashrc

配置Hadoop的主要配置文件

编辑$HADOOP_HOME/etc/hadoop目录下的配置文件,如core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml

使用cd命令切换到$HADOOP_HOME/etc/hadoop目录【请确定你上一步的环境变量配置正确不然会提示找不到路径!】:

cd $HADOOP_HOME/etc/hadoop

创建一个用户运行Hadoop

因为Hadoop 默认不允许以 root 用户身份运行 Namenode、Datanode 和 Secondary Namenode,因为这可能会带来安全风险。
要解决这个问题,你可以采取以下几种方法:

  1. 创建一个专门的用户来运行 Hadoop
    创建一个新用户,使用该用户启动 Hadoop 服务。这是最安全的做法,以下是创建账户和重置账户密码的命令,请根据实际情况替换hadoop为你的实际用户名。

    useradd hadoop
    passwd hadoop
  2. 使用 Hadoop 配置文件定义用户,并配置Java环境变量
    在 Hadoop 的 etc/hadoop 目录下的 hadoop-env.sh 文件中,你可以定义 Hadoop 服务运行的用户。打开 hadoop-env.sh 文件并添加以下行:

    export HDFS_NAMENODE_USER=hadoop
    export HDFS_DATANODE_USER=hadoop
    export HDFS_SECONDARYNAMENODE_USER=hadoop
    export JAVA_HOME=/path/to/java-1.8.0-openjdk-devel

    请将 hadoop 替换为你创建的用户名。同时将 /path/to/java-1.8.0-openjdk-devel 替换为您实际的 Java 安装路径。

  3. 如果以 root 用户身份启动 Hadoop
    如果你坚持要以 root 用户身份启动 Hadoop,你可以在 start-dfs.shstop-dfs.shstart-yarn.shstop-yarn.sh 脚本中移除对用户身份的检查。这不是推荐的做法,因为它会带来安全风险。编辑这些脚本,找到检查用户身份的代码行,并将其注释掉或删除。
    请选择最适合你情况的方法。如果你选择创建新用户,请确保将 Hadoop 安装目录的权限授予该用户,然后以该用户身份登录并启动 Hadoop 服务。

完成用户创建后,使用su - hadoop命令切换为刚创建的hadoop账户,这里请根据你的实际创建账户名字做出对应修改!切换账户后记得切换到你的hadoop路径。或者重新配置一下前面hadoop的环境变量。

此外如果你创建的账户hadoop路径下没有权限执行接下来的操作,请手动赋予相关权限!

编辑Hadoop基本配置文件

通过上面的命令,你已经进入 etc/hadoop 目录下,你可以使用文本编辑器来编辑配置文件。

例如,在core-site.xml中,你可以配置Hadoop运行时文件系统的URI:

终端输入vim core-site.xml,编辑器用法同上面部分的几个基础命令。

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

hdfs-site.xml中,你可以配置HDFS的相关属性,比如副本数:

终端输入vim hdfs-site.xml,编辑器用法同上面部分的几个基础命令。

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
  1. 格式化HDFS文件系统
    执行以下命令格式化HDFS:

    hdfs namenode -format
  2. 启动Hadoop服务
    使用以下命令启动HDFS:

    start-dfs.sh

    如果提示找不到文件,请在终端执行后再次尝试上述命令:

    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

    如果提示找不到Java环境变量,请执行以下指令手动设置环境变量(或者检查一下hadoop-env.sh这些配置里面的环境变量):

    export JAVA_HOME=/path/to/java-1.8.0-openjdk-devel # 记得替换为实际路径
    source ~/.bashrc # 重载环境变量
    start-yarn.sh # 再次执行运行指令尝试

    如果你需要启动YARN,可以使用以下命令:

    start-yarn.sh

提示:如需虚拟机外部访问关闭请防火墙

systemctl stop firewalld.service # 关闭防火墙

验证安装

在Centos的浏览器中输入http://localhost:8088(根据你实际设置的端口号而异),如果能够看到HDFS的Web界面,说明Hadoop安装成功。或者在你的虚拟机外浏览器输入你的Centos IP:端口号查看,如果在虚拟机外查看请确保你关闭了Centos防火墙!

完成示例:

END

注意:请确保在配置Hadoop时,有根据你的实际需求编辑配置文件。如果在安装过程中遇到问题,可能需要检查防火墙设置、SELinux状态和网络配置等。此外,确保你的CentOS虚拟机有足够的资源来运行Hadoop。