在独立模式下,所有程序都在单个JVM上执行,调试Hadoop集群的MapReduce程序也非常方便。一般情况下,该模式常用于学习或开发阶段进行调试程序。
在伪分布式模式下, Hadoop程序的守护进程都运行在一台节点上,该模式主要用于调试Hadoop分布式程序的代码,以及程序执行是否正确。伪分布式模式是完全分布式模式的一个特例。
在完全分布式模式下,Hadoop的守护进程分别运行在由多个主机搭建的集群上,不同节点担任不同的角色,在实际工作应用开发中,通常使用该模式构建企业级Hadoop系统。

| 节点 | 角色 |
|---|---|
| master | NameNode, DataNode |
| slave1 | DataNode |
| slave2 | DataNode |
由于Hadoop是由Java语言开发的,Hadoop集群的使用依赖于Java环境,因此安装Hadoop集群之前,需要先安装并配置好JDK。

查看上传的JDK压缩包

执行命令:tar -zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local,将JDK压缩包解压到指定目录

执行命令:ll /usr/local/jdk1.8.0_231,查看解压之后的jdk1.8.0_231目录

vim /etc/profile或vi /etc/profile,配置环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
存盘退出,执行命令:source /etc/profile,让配置生效

查看JDK版本

编写一个Java程序 - HelloWorld.java

存盘退出后,执行命令:javac HelloWorld.java,编译成字节码文件

执行命令:java HelloWorld

执行命令:scp -r $JAVA_HOME root@slave1:$JAVA_HOME (-r:recursive - 递归)

在slave1虚拟机上查看JDK是否拷贝成功

执行命令:scp -r $JAVA_HOME root@slave2:$JAVA_HOME (-r recursive - 递归)


执行命令:scp /etc/profile root@slave1:/etc

执行命令:scp /etc/profile root@slave2:/etc

在slave1与slave2虚拟机上执行命令:source /etc/profile,让环境配置生效


在slave1虚拟机上查看JDK版本

在slave2虚拟机上查看JDK版本

将Hadoop压缩包上传到master虚拟机/opt目录

查看上传的Hadoop压缩包

执行命令:tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local

查看解压之后的hadoop目录

| 目录 | 作用 |
|---|---|
| bin目录 | 命令脚本 |
| etc/hadoop目录 | 存放hadoop的配置文件 |
| lib目录 | hadoop运行的依赖jar包 |
| sbin目录 | 存放启动和关闭hadoop等命令 |
| libexec目录 | 存放的也是hadoop命令,但一般不常用 |
在配置Hadoop时,常用的就是bin、etc与sbin三个目录
查看bin目录

查看etc/hadoop目录,主要是hadoop配置文件

查看sbin目录

执行命令:vim /etc/profile

说明:hadoop 2.x用不着配置用户,只需要前两行即可
export HADOOP_HOME=/usr/local/hadoop-3.3.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
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
source /etc/profile,让配置生效
hadoop version,检查Hadoop安装是否成功