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默认可能不包含某些现代文本编辑器(如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。

浙公网安备 33010602011771号