1、在Linux下安装Java并搭建完全分布式Hadoop集群。
(1)在master节点下,执行命令安装JDK1.8。对安装进度100%的结果进行截图。
rpm -ivh /data/jdk-8u281-linux-x64.rpm # 安装并在安装过程中显示正在安装的文件信息及安装进度
(2)编辑“/etc/profile”文件,添加Java的环境变量,并且使配置生效。对添加至“/etc/profile”文件的内容进行截图。
vim /etc/profile
# Java env
export JAVA_HOME=/usr/java/jdk1.8.0_281-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
# 生效变量
source /etc/profile
# 查看JDK版本
java -version
(3)将JDK安装包发送至slave1与slave2节点,在slave1与slave2节点下安装JDK并且配置Java的环境变量并使配置生效。对slave1与slave2节点下添加至“/etc/profile”文件的内容进行截图。
# master 主机中
scp -r /data/jdk-8u281-linux-x64.rpm root@slave1:~
scp -r /data/jdk-8u281-linux-x64.rpm root@slave2:~
scp /etc/profile root@slave1:/etc/
scp /etc/profile root@slave2:/etc/
# slave1 slave2主机中
rpm -ivh jdk-8u281-linux-x64.rpm
source /etc/profile
报错:warning: jdk-8u281-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
不用管,继续做,设置完环境变量执行java -version
看看是否正确
(4)在master、slave1和slave2三个节点分别执行“java -version”,验证JDK安装成功并对master、slave1和slave2三个节点的输出结果进行截图。
(5)在master节点下,解压Hadoop安装包至“/usr/local”目录。解压后使用命令“ll /usr/local/”并对命令运行结果进行截图。
tar -zxf /data/hadoop-3.1.4.tar.gz -C /usr/local/
(6)在master节点下,进入“/usr/local/hadoop-3.1.4/etc/hadoop/”路径,修改Hadoop配置文件“core-site.xml”,设置HDFS的默认地址与端口(fs.defaultFS),设置HDFS的临时路径(hadoop.tmp.dir),对配置完成后的“core-site.xml”文件内容进行截图。
先创建临时存储目录(三个节点都创建)
cd /usr/local/hadoop-3.1.4
mkdir tmp
<configuration>
<!--用于配置NameNode地址master(改),端口9000(改) -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!--配置Hadoop的临时存储目录(注意) -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-3.1.4/tmp</value>
</property>
</configuration>
文件中的<value>/usr/local/hadoop/tmp</value>
,注意路径是否存在
(7)在master节点下,修改Hadoop运行环境配置文件“hadoop-env.sh”以及YARN框架运行环境配置文件“yarn-env.sh”,添加Java的环境变量,并设置使用HDFS以及YARN框架的用户为root。分别对配置完成后的“hadoop-env.sh”和“yarn-env.sh”文件的内容进行截图。
hadoop-env.sh
# 直接添加Java环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_281-amd64
# 告诉Hadoop各组件分别用哪个用户运行
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
yarn-env.sh
# 直接添加
export JAVA_HOME=/usr/java/jdk1.8.0_281-amd64
(8)在master节点下,修改HDFS配置文件“hdfs-site.xml”,设置Namenode数据存储的路径(dfs.namenode.name.dir)以及Datanode数据存储的路径(dfs.datanode.data.dir),设置HDFS文件块的副本数(dfs.replication)为2。对配置完成后的“hdfs-site.xml”文件内容进行截图。
先创建 HDFS 存储目录(三个节点都创建)
cd /usr/local/hadoop-3.1.4/tmp
mkdir dfs
cd dfs
mkdir name data
说明:
/usr/hadoop-3.1.4/dfs/name - 存储namenode文件
/usr/hadoop-3.1.4/dfs/data - 存储数据
/usr/hadoop-3.1.4/dfs/tmp - 存储临时文件
<configuration>
<!--指定HDFS备份文本的数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--NN存放元数据路径 可以指定多个目录实现容错,多个目录用逗号分隔(注意) -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-3.1.4/tmp/dfs/name</value>
</property>
<!--datanode 节点数据(即数据块)的存放位置(注意) -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.1.4/tmp/dfs/data</value>
</property>
</configuration>
(9)在master节点下,修改MapReduce配置文件“mapred-site.xml”,设置执行MapReduce作业的框架(mapreduce.framework.name)为YARN,设置MR App Master的环境变量(yarn.app.mapreduce.am.env、mapreduce.map.env和mapreduce.reduce.env),以及设置MapReduce作业所需的类路径CLASSPATH(mapreduce.application.classpath)。对配置完成后的“mapred-site.xml”文件内容进行截图。
<configuration>
<property>
<!-- 指定mapreduce作业运行时框架 yarn -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.4</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.4</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.4</value>
</property>
<!-- 加载 jar和环境配置 -->
<property>
<name>mapreduce.application.classpath</name>
<value>/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/*, /usr/local/hadoop-3.1.4/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
附
<property>
<name>mapreduce.application.classpath</name>
<!-- $HADOOP_MAPRED_HOME要换成 Hadoop 的安装路径 -->
<value>$HADOOP_MAPRED_HOME/hadoop-3.2.0/share/hadoop/mapreduce/*, $HADOOP_MAPRED_HOME/hadoop-3.2.0/share/hadoop/mapreduce/lib/*</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$PWD/mr-framework/hadoop/share/hadoop/mapreduce/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/lib/*:$PWD/mr-framework/hadoop/share/hadoop/common/*:$PWD/mr-framework/hadoop/share/hadoop/common/lib/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/lib/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/lib/*:/etc/hadoop/conf/secure</value>
</property>
(10)在master节点下,获取已完整配置的“yarn-site.xml”,复制到Hadoop对应的配置文件目录并替换。替换完成后打开“yarn-site.xml”对文件内容进行截图。
cp /data/yarn-site.xml /usr/local/hadoop-3.1.4/etc/hadoop/
(11)在master节点下,修改workers文件,设置为slave1与slave2。对workers的文件内容进行截图。
#tip:将文件中的localhost删除,添加主节点和子节点的主机名称
#tip:如主节点master,子节点slave1和slave2
vim workers
master
slave1
slave2
(12)发送master中的Hadoop至slave1与slave2节点。发送成功后分别在slave1与slave2节点上执行“ll /usr/local/”,并对命令的运行结果进行截图。
scp -r /usr/local/hadoop-3.1.4 root@slave1:/usr/local
scp -r /usr/local/hadoop-3.1.4 root@slave2:/usr/local
(13)在三个节点的“/etc/profile”添加Hadoop路径(HADOOP_HOME),并且使配置生效。对master、slave1、slave2三个节点添加至“/etc/profile”的内容进行截图。
# 打开配置文件
vim /etc/profile
# 末尾追加
# hadoop env
export HADOOP_HOME=/usr/local/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 生效变量
source /etc/profile/
# 分发到slave1 slave2
scp /etc/profile slave1:/etc/
scp /etc/profile slave2:/etc/
# 返回slave1和slave2节点执行下面命令
source /etc/profile
(14)格式化NameNode并启动Hadoop集群(包括HDFS、YARN和historyserver)。对格式化NameNode的结果进行截图(即显示“successfully formatted”字样),并且对启动Hadoop集群的命令执行结果进行截图。
# 格式化(在 master 上进行即可)
hdfs namenode -format
==注意:==出现下图结果即为格式化成功
![[格式化结果.png]]
注意,如果需要重新格式化 NameNode ,需要先将原来 NameNode 和 DataNode 下的文件全部删除
rm -rf $HADOOP_HOME/tmp/dfs/data/*
rm -rf $HADOOP_HOME/tmp/dfs/name/*
启动
# 启动全部
start-all.sh
# 启动 HDFS 集群
start-dfs.sh
# 启动 YARN 集群
start-yarn.sh
# historyserver
mr-jobhistory-daemon.sh start historyserver
mapred --daemon start
报错:启动hadoop集群时还有可能可能会报如下错误
![[启动报错.png]]
方案一:
vim /etc/profile
# 在环境变量中添加以下内容
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-env.sh 中添加
# 告诉Hadoop各组件分别用哪个用户运行
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
此方法未测试过