# 前言
首先确定你是什么身份登录的 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 默认可能不包含某些现代文本编辑器(如 nano
或 vim
),但它通常会预装 vi
或 vim
。以下是如何使用 vi
或 vim
编辑 ~/.bashrc
文件的步骤:
打开终端。输入以下命令之一来编辑
~/.bashrc
文件:使用 vi 编辑器:
vi ~/.bashrc
使用 vim 编辑器:
vim ~/.bashrc
如果你不熟悉
vi
或vim
,可以看看以下 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.xml
、 hdfs-site.xml
、 yarn-site.xml
和 mapred-site.xml
。
使用 cd
命令切换到 $HADOOP_HOME/etc/hadoop
目录【请确定你上一步的环境变量配置正确不然会提示找不到路径!】:
cd $HADOOP_HOME/etc/hadoop |
# 创建一个用户运行 Hadoop:
因为 Hadoop 默认不允许以 root 用户身份运行 Namenode、Datanode 和 Secondary Namenode,因为这可能会带来安全风险。
要解决这个问题,你可以采取以下几种方法:
创建一个专门的用户来运行 Hadoop:
创建一个新用户,使用该用户启动 Hadoop 服务。这是最安全的做法,以下是创建账户和重置账户密码的命令,请根据实际情况替换 hadoop 为你的实际用户名。useradd hadoop
passwd hadoop
使用 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 安装路径。如果以 root 用户身份启动 Hadoop:
如果你坚持要以 root 用户身份启动 Hadoop,你可以在start-dfs.sh
、stop-dfs.sh
、start-yarn.sh
和stop-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> |
格式化 HDFS 文件系统:
执行以下命令格式化 HDFS:hdfs namenode -format
启动 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 防火墙!
# 完成示例:
注意:请确保在配置 Hadoop 时,有根据你的实际需求编辑配置文件。如果在安装过程中遇到问题,可能需要检查防火墙设置、SELinux 状态和网络配置等。此外,确保你的 CentOS 虚拟机有足够的资源来运行 Hadoop。