Hadoop生态圈框架部署(四)- Hadoop完全分布式部署

文章目录

  • 前言
  • 一、Hadoop完全分布式部署(手动部署)
    • 1. 下载hadoop
    • 2. 上传安装包
    • 2. 解压hadoop安装包
    • 3. 配置hadoop配置文件
      • 3.1 虚拟机hadoop1修改hadoop配置文件
        • 3.1.1 修改 hadoop-env.sh 配置文件
        • 3.3.2 修改 core-site.xml 配置文件
        • 3.3.3 修改 hdfs-site.xml 配置文件
        • 3.3.4 修改 mapred-site.xml 配置文件
        • 3.3.5 修改 yarn-site.xml 配置文件
        • 3.3.6 修改 workers 配置文件
      • 3.2 虚拟机hadoop2安装并配置hadoop
      • 3.3 虚拟机hadoop3安装并配置hadoop
    • 4. 配置hadoop环境变量
      • 4.1 配置虚拟机hadoop1的hadoop环境变量
      • 4.2 配置虚拟机hadoop2的hadoop环境变量
      • 4.3 配置虚拟机hadoop3的hadoop环境变量
    • 5. 格式化HDFS(Hadoop分布式文件系统)
    • 6. hadoop集群启动和停止
      • 6.1 启动 hadoop 集群
      • 6.2 停止 hadoop 集群
  • 二、使用shell脚本自动部署Hadoop完全分布式(选看)
    • 1. 下载hadoop
    • 2. 上传安装包
    • 3. 使用shell脚本自动部署Hadoop完全分布式
      • 3.1 创建 hadoop1_hadoop_install_config.sh 脚本文件并添加脚本内容
      • 3.2 添加可执行权限
      • 3.3 执行脚本
    • 4. 加载环境变量
    • 5. hadoop集群启动和停止
      • 5.1 启动 hadoop 集群
      • 5.2 停止 hadoop 集群


前言

  1. 介绍在虚拟机hadoop1、hadoop2和hadoop3部署完全分布式Hadoop
  2. 部署规划:
    hadoop1hadoop2hadoop3
    HDFSNameNodeSecondaryNameNode
    DataNode
    DataNode
    YARNResourceManagerNodeManagerNodeManager
  3. 配置hadoop配置文件
  4. 配置hadoop环境变量
  5. 访问hadoop对应Web UI
  6. 提供shell脚本自动化安装hadoop完全分布式

一、Hadoop完全分布式部署(手动部署)

1. 下载hadoop

点击下载hadoop3.3.0安装包:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

2. 上传安装包

通过拖移的方式将下载的hadoop安装包hadoop-3.3.0.tar.gz上传至虚拟机hadoop1的/export/software目录。

在这里插入图片描述

2. 解压hadoop安装包

在虚拟机Hadoop1上传完成后将hadoop安装包通过解压方式安装至/export/servers目录。

tar -zxvf /export/software/hadoop-3.3.0.tar.gz -C /export/servers/

解压完成如下图所示。

在这里插入图片描述

3. 配置hadoop配置文件

3.1 虚拟机hadoop1修改hadoop配置文件

3.1.1 修改 hadoop-env.sh 配置文件

在虚拟机Hadoop1修改hadoop运行时环境变量配置文件/export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh,使用echo命令向hadoop-env.sh文件追加如下内容。

echo >> /export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo 'export JAVA_HOME=/export/servers/jdk1.8.0_421' >> /export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo 'export HDFS_NAMENODE_USER=root' >> /export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo 'export HDFS_DATANODE_USER=root' >> /export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo 'export HDFS_SECONDARYNAMENODE_USER=root' >> /export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo 'export YARN_RESOURCEMANAGER_USER=root' >> /export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
echo 'export YARN_NODEMANAGER_USER=root' >> /export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh

在这里插入图片描述

查看文件内容是否添加成功。

cat /export/servers/hadoop-3.3.0/etc/hadoop/hadoop-env.sh

在这里插入图片描述

3.3.2 修改 core-site.xml 配置文件

在虚拟机Hadoop1修改hadoop核心配置文件/export/servers/hadoop-3.3.0/etc/hadoop/core-site.xml,使用echo命令把配置内容重定向并写入到 /export/servers/hadoop-3.3.0/etc/hadoop/core-site.xml 文件。

echo \
'<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定Hadoop集群的默认文件系统名称 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
    <!-- 设置Hadoop临时目录的位置,用于存储各种临时文件 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/export/data/hadoop-3.3.0</value>
    </property>
    <!-- 当通过Web界面访问Hadoop集群时,默认的用户名 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
    <!-- 允许哪些主机上的用户可以作为代理用户执行操作 -->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value> <!-- * 表示任何主机 -->
    </property>
    <!-- 定义哪个组的用户可以作为代理用户执行操作 -->
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value> <!-- * 表示所有组的用户 -->
    </property>
    <!-- 设置回收站功能的保留时间间隔,单位为分钟 -->
    <property>
        <name>fs.trash.interval</name>
        <value>1440</value> <!-- 1440分钟等于1天 -->
    </property>
</configuration>'\
> /export/servers/hadoop-3.3.0/etc/hadoop/core-site.xml

在这里插入图片描述

3.3.3 修改 hdfs-site.xml 配置文件

在虚拟机Hadoop1修改hdfs的配置文件/export/servers/hadoop-3.3.0/etc/hadoop/hdfs-site.xml,使用cat命令把配置内容重定向并写入到 /export/servers/hadoop-3.3.0/etc/hadoop/hdfs-site.xml 文件。

cat >/export/servers/hadoop-3.3.0/etc/hadoop/hdfs-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop2:9868</value>
</property>
</configuration>
EOF

在这里插入图片描述

3.3.4 修改 mapred-site.xml 配置文件

在虚拟机Hadoop1修改mapreduce的配置文件/export/servers/hadoop-3.3.0/etc/hadoop/mapred-site.xml,使用cat命令把配置内容重定向并写入到 /export/servers/hadoop-3.3.0/etc/hadoop/mapred-site.xml 文件。

cat >/export/servers/hadoop-3.3.0/etc/hadoop/mapred-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop1:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.Webapp.address</name>
    <value>hadoop1:19888</value>
</property>
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.3.0</value>
</property>
<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.3.0</value>
</property>
<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/export/servers/hadoop-3.3.0</value>
</property>
</configuration>
EOF

在这里插入图片描述

3.3.5 修改 yarn-site.xml 配置文件

在虚拟机Hadoop1修改yarn的配置文件/export/servers/hadoop-3.3.0/etc/hadoop/yarn-site.xml,使用cat命令把配置内容重定向并写入到 /export/servers/hadoop-3.3.0/etc/hadoop/yarn-site.xml 文件。

cat >/export/servers/hadoop-3.3.0/etc/hadoop/yarn-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop1</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.log.server.url</name>
    <value>http://hadoop1:19888/jobhistory/logs</value>
</property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
</configuration>
EOF

在这里插入图片描述

3.3.6 修改 workers 配置文件

在虚拟机Hadoop1修改hadoop的从节点服务器配置文件/export/servers/hadoop-3.3.0/etc/hadoop/workers,使用cat命令把配置内容重定向并写入到 /export/servers/hadoop-3.3.0/etc/hadoop/workers 文件。

cat >/export/servers/hadoop-3.3.0/etc/hadoop/workers <<EOF
hadoop2
hadoop3
EOF

在这里插入图片描述

3.2 虚拟机hadoop2安装并配置hadoop

在虚拟机hadoop1使用scp命令把虚拟机hadoop1的hadoop的安装目录复制到虚拟机hadoop2的相同目录下,就相当于在hadoop2安装并配置了hadoop。

scp -r /export/servers/hadoop-3.3.0/ hadoop2:/export/servers/

在这里插入图片描述

3.3 虚拟机hadoop3安装并配置hadoop

在虚拟机hadoop1使用scp命令把虚拟机hadoop1的hadoop的安装目录复制到虚拟机hadoop3的相同目录下,就相当于在hadoop3安装并配置了hadoop。

scp -r /export/servers/hadoop-3.3.0/ hadoop3:/export/servers/

在这里插入图片描述

4. 配置hadoop环境变量

4.1 配置虚拟机hadoop1的hadoop环境变量

在虚拟机hadoop1使用echo命令向环境变量配置文件/etc/profile追加环境变量内容。

echo >> /etc/profile
echo 'export HADOOP_HOME=/export/servers/hadoop-3.3.0' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/profile

配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用hadoop的环境变量生效。

source /etc/profile

在这里插入图片描述

4.2 配置虚拟机hadoop2的hadoop环境变量

在虚拟机hadoop2使用echo命令向环境变量配置文件/etc/profile追加环境变量内容。

echo >> /etc/profile
echo 'export HADOOP_HOME=/export/servers/hadoop-3.3.0' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/profile

配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用hadoop的环境变量生效。

source /etc/profile

在这里插入图片描述

4.3 配置虚拟机hadoop3的hadoop环境变量

在虚拟机hadoop3使用echo命令向环境变量配置文件/etc/profile追加环境变量内容。

echo >> /etc/profile
echo 'export HADOOP_HOME=/export/servers/hadoop-3.3.0' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/profile

配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用hadoop的环境变量生效。

source /etc/profile

在这里插入图片描述

5. 格式化HDFS(Hadoop分布式文件系统)

在虚拟机hadoop1执行如下命令格式化Hadoop分布式文件系统HDFS。

hdfs namenode -format

在这里插入图片描述

注意:如果在格式化过程中遇到如下提示,输入n并按回车键,然后依次在虚拟机hadoop1、hadoop2和hadoop3执行rm -rf /export/data/hadoop-3.3.0删除之前生成的数据保存目录,再在虚拟机hadoop1执行hdfs namenode -format重新格式化文件系统。
在这里插入图片描述

格式化成功如下图所示,会提示我们存储目录 /export/data/hadoop-3.3.0/dfs/name 已经成功格式化
在这里插入图片描述

6. hadoop集群启动和停止

6.1 启动 hadoop 集群

方法一:在虚拟机Hadoop1执行如下命令同时启动 hdfs 和 yarn。

start-all.sh

注意:命令的全路径启动为/export/servers/hadoop-3.3.0/sbin/start-all.sh,之所以可以使用start-all.sh直接启动是因为我们设置了环境变量。

在这里插入图片描述

方法二:在虚拟机Hadoop1单独启动 hdfs 和单独启动 yarn。
单独启动 hdfs

start-dfs.sh

单独启动 yarn

start-yarn.sh

hadoop集群启动之后使用如下命名分别在虚拟机hadoop1、虚拟机hadoop2和虚拟机hadoop3执行如下命令查看对应进程是否正常。

jps -l

正常如下图所示。
在这里插入图片描述

访问 HDFS(NameNode)的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.160:9870进行访问,如下图。
在这里插入图片描述

检查DataNode是否正常,正常如下图所示。
在这里插入图片描述

访问 HDFS(Secondary NameNode)的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.161:9868进行访问,如下图。
在这里插入图片描述

访问 YARN 的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.160:8088进行访问,如下图。
在这里插入图片描述

6.2 停止 hadoop 集群

方法一:如果需要停止 hadoop 集群运行,在虚拟机hadoop1执行如下命令同时停止 hdfs 和 yarn。

stop-all.sh

在这里插入图片描述

方法二:如果需要停止 hadoop 集群运行,在虚拟机hadoop1单独启动 hdfs 和单独启动 yarn。
单独启动 hdfs

stop-dfs.sh

单独启动 yarn

stop-yarn.sh

二、使用shell脚本自动部署Hadoop完全分布式(选看)

1. 下载hadoop

点击下载hadoop3.3.0安装包:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

2. 上传安装包

通过拖移的方式将下载的hadoop安装包hadoop-3.3.0.tar.gz上传至虚拟机hadoop1的/export/software目录。

在这里插入图片描述

3. 使用shell脚本自动部署Hadoop完全分布式

3.1 创建 hadoop1_hadoop_install_config.sh 脚本文件并添加脚本内容

虚拟机hadoop1上创建/export/shell/hadoop1_hadoop_install_config.sh脚本文件

touch /export/shell/hadoop1_hadoop_install_config.sh

添加如下内容:

#!/bin/bash

# 定义常量
HADOOP_DIR="/export/servers"
HADOOP_VER="3.3.0"
HADOOP_TAR="hadoop-${HADOOP_VER}.tar.gz"
HADOOP_SOFTWARE_DIR="/export/software"
JAVA_PATH="/export/servers/jdk1.8.0_421"
HADOOP_TMP_DIR="/export/data/hadoop-${HADOOP_VER}"
DATA_DIR="/export/data"
SOFTWARE_DIR="/export/software"
SERVERS_DIR="/export/servers"

cat > /etc/profile << EOF
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":\${PATH}:" in
        *:"\$1":*)
            ;;
        *)
            if [ "\$2" = "after" ] ; then
                PATH=\$PATH:\$1
            else
                PATH=\$1:\$PATH
            fi
    esac
}


if [ -x /usr/bin/id ]; then
    if [ -z "\$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=\$USER
    MAIL="/var/spool/mail/\$USER"
fi

# Path manipulation
if [ "\$EUID" = "0" ]; then
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
fi

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "\$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ \$UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "\$i" ]; then
        if [ "\${-#*i}" != "\$-" ]; then
            . "\$i"
        else
            . "\$i" >/dev/null
        fi
    fi
done

unset i
unset -f pathmunge

export JAVA_HOME=/export/servers/jdk1.8.0_421
export PATH=\$PATH:\$JAVA_HOME/bin

export HADOOP_HOME=/export/servers/hadoop-3.3.0
export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin
EOF
echo "HADOOP_HOME 设置成功"

# 分发到hadoop2
scp /etc/profile root@hadoop2:/etc/
if [ $? -eq 0 ]; then
  echo "分发 /etc/profile 到 hadoop2 的 /etc 目录成功"
else
  echo "分发 /etc/profile 到 hadoop2 的 /etc 目录失败,请检查"
  exit 1
fi

# 分发到hadoop3
scp /etc/profile root@hadoop3:/etc/
if [ $? -eq 0 ]; then
  echo "分发 /etc/profile 到 hadoop3 的 /etc 目录成功"
else
  echo "分发 /etc/profile 到 hadoop3 的 /etc 目录失败,请检查"
  exit 1
fi

# 如果临时数据目录存在则删除
if [ -d "${HADOOP_TMP_DIR}" ]; then
  echo "删除自动生成的临时数据目录 ${HADOOP_TMP_DIR}..."
  rm -rf ${HADOOP_TMP_DIR}
fi

ssh root@hadoop2 \
"
if [ -d \"${HADOOP_TMP_DIR}\" ]; then
  echo \"删除 hadoop2 自动生成的临时数据目录 ${HADOOP_TMP_DIR}...\"
  rm -rf ${HADOOP_TMP_DIR}
fi
exit
"

ssh root@hadoop3 \
"
if [ -d \"${HADOOP_TMP_DIR}\" ]; then
  echo \"删除 hadoop3 自动生成的临时数据目录 ${HADOOP_TMP_DIR}...\"
  rm -rf ${HADOOP_TMP_DIR}
fi
exit
"

# 检查hadoop是否已解压
if [ -d "$HADOOP_DIR/hadoop-$HADOOP_VER" ]; then
  echo "hadoop安装程序已存在,正在删除原安装程序目录..."
  rm -rf "$HADOOP_DIR/hadoop-$HADOOP_VER"
fi

# 检查hadoop安装包是否存在
if [ -f $SOFTWARE_DIR/$HADOOP_TAR ]; then
  echo "hadoop安装包存在,正在解压安装包..."
  # 解压Hadoop安装包
  tar -zxvf ${HADOOP_SOFTWARE_DIR}/${HADOOP_TAR} -C ${HADOOP_DIR}
  echo "解压 ${HADOOP_SOFTWARE_DIR}/${HADOOP_TAR}${HADOOP_DIR} 目录成功"
else
  echo "hadoop安装包不存在,请先上传安装包到 ${HADOOP_SOFTWARE_DIR} 目录"
  exit 1
fi

# 配置hadoop-env.sh
echo >>${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/hadoop-env.sh
echo \
  "
export JAVA_HOME=/export/servers/jdk1.8.0_421
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
" \
  >>${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/hadoop-env.sh
echo "${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/hadoop-env.sh 配置文件修改成功"

# 配置core-site.xml
cat >${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/core-site.xml <<EOF
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
      <name>fs.defaultFS</name>
      <value>hdfs://hadoop1:9000</value>
  </property>
  <property>
      <name>hadoop.tmp.dir</name>
      <value>${HADOOP_TMP_DIR}</value>
  </property>
  <property>
     <name>hadoop.http.staticuser.user</name>
     <value>root</value>
  </property>
  <property>
      <name>hadoop.proxyuser.root.hosts</name>
      <value>*</value>
  </property>
  <property>
      <name>hadoop.proxyuser.root.groups</name>
      <value>*</value>
  </property>
  <property>
      <name>fs.trash.interval</name>
      <value>1440</value>
  </property>
</configuration>
EOF
echo "${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/core-site.xml 配置文件修改成功"

# 配置hdfs-site.xml
cat >${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/hdfs-site.xml <<EOF
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
      <name>dfs.replication</name>
      <value>2</value>
  </property>
  <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop2:9868</value>
  </property>
</configuration>
EOF
echo "${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/hdfs-site.xml 配置文件修改成功"

# 配置mapred-site.xml
cat >${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/mapred-site.xml <<EOF
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop1:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop1:19888</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_DIR}/hadoop-${HADOOP_VER}</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_DIR}/hadoop-${HADOOP_VER}</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_DIR}/hadoop-${HADOOP_VER}</value>
  </property>
</configuration>
EOF
echo "${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/mapred-site.xml 配置文件修改成功"

# 配置yarn-site.xml
cat >${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/yarn-site.xml <<EOF
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop1</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
  </property>
  <property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
  </property>
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.log.server.url</name>
    <value>http://hadoop1:19888/jobhistory/logs</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>
</configuration>
EOF
echo "${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/yarn-site.xml 配置文件修改成功"

# 设置workers文件
echo -e "hadoop2\nhadoop3" >${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/workers
echo "${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/workers 配置文件修改成功"

# 分发到hadoop2
scp -r ${HADOOP_DIR}/hadoop-${HADOOP_VER} root@hadoop2:${HADOOP_DIR}/
if [ $? -eq 0 ]; then
  echo "分发 ${HADOOP_DIR}/hadoop-${HADOOP_VER} 到 hadoop2 的 ${HADOOP_DIR} 目录成功"
else
  echo "分发 ${HADOOP_DIR}/hadoop-${HADOOP_VER} 到 hadoop2 的 ${HADOOP_DIR} 目录失败,请检查"
  exit 1
fi

# 分发到hadoop3
scp -r ${HADOOP_DIR}/hadoop-${HADOOP_VER} root@hadoop3:${HADOOP_DIR}/
if [ $? -eq 0 ]; then
  echo "分发 ${HADOOP_DIR}/hadoop-${HADOOP_VER} 到 hadoop3 的 ${HADOOP_DIR} 目录成功"
else
  echo "分发 ${HADOOP_DIR}/hadoop-${HADOOP_VER} 到 hadoop3 的 ${HADOOP_DIR} 目录失败,请检查"
  exit 1
fi

# 设置临时环境变量
export HADOOP_HOME=${HADOOP_DIR}/hadoop-${HADOOP_VER}
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
echo "设置hadoop临时环境变量为: \$HADOOP_HOME = ${HADOOP_HOME}"

# 格式化HDFS
echo "正在格式化HDFS..."
hdfs namenode -format
if [ $? -eq 0 ]; then
  echo "格式化HDFS成功"
else
  echo "格式化HDFS失败,请检查异常并解决后重新执行此脚本"
  exit 1
fi

echo -e "\n-----hadoop完全分布式安装配置完成-----\n"
echo -e "1. 请手动在hadoop1、hadoop2和hadoop3执行命令 source /etc/profile 加载环境变量\n"
echo "3. 启动hadoop命令:start-all.sh, 停止hadoop命令:stop-all.sh"

exit 0

在这里插入图片描述

3.2 添加可执行权限

虚拟机hadoop1上给脚本文件/export/shell/hadoop1_hadoop_install_config.sh添加可执行权限。

chmod +x /export/shell/hadoop1_hadoop_install_config.sh

在这里插入图片描述

3.3 执行脚本

虚拟机hadoop1上执行脚本文件自动化安装配置hadoop完全分布式。

/export/shell/hadoop1_hadoop_install_config.sh

在这里插入图片描述
在这里插入图片描述

4. 加载环境变量

根据使用shell脚本自动安装完成后的提示依次在虚拟机hadoop1、hadoop2和hadoop3执行如下命令。

source /etc/profile

在这里插入图片描述

5. hadoop集群启动和停止

5.1 启动 hadoop 集群

方法一:在虚拟机Hadoop1执行如下命令同时启动 hdfs 和 yarn。

start-all.sh

注意:命令的全路径启动为/export/servers/hadoop-3.3.0/sbin/start-all.sh,之所以可以使用start-all.sh直接启动是因为我们设置了环境变量。

在这里插入图片描述

方法二:在虚拟机Hadoop1单独启动 hdfs 和单独启动 yarn。
单独启动 hdfs

start-dfs.sh

单独启动 yarn

start-yarn.sh

hadoop集群启动之后使用如下命名分别在虚拟机hadoop1、虚拟机hadoop2和虚拟机hadoop3执行如下命令查看对应进程是否正常。

jps -l

正常如下图所示。
在这里插入图片描述

访问 HDFS(NameNode)的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.160:9870进行访问,如下图。
在这里插入图片描述

检查DataNode是否正常,正常如下图所示。
在这里插入图片描述

访问 HDFS(Secondary NameNode)的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.161:9868进行访问,如下图。
在这里插入图片描述

访问 YARN 的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.160:8088进行访问,如下图。
在这里插入图片描述

5.2 停止 hadoop 集群

方法一:如果需要停止 hadoop 集群运行,在虚拟机hadoop1执行如下命令同时停止 hdfs 和 yarn。

stop-all.sh

在这里插入图片描述

方法二:如果需要停止 hadoop 集群运行,在虚拟机hadoop1单独启动 hdfs 和单独启动 yarn。
单独启动 hdfs

stop-dfs.sh

单独启动 yarn

stop-yarn.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906864.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【智能算法应用】天鹰优化算法求解二维路径规划问题

摘要 路径规划问题在机器人和无人机导航中起着关键作用。本文提出了一种基于天鹰优化算法的二维路径规划方法。天鹰优化算法&#xff08;Eagle Strategy Optimization, ESO&#xff09;通过模拟天鹰的捕猎行为&#xff0c;寻找最优路径。实验结果显示&#xff0c;该算法能够有…

数据结构之二叉树——堆 详解(含代码实现)

1.堆 如果有一个关键码的集合 K { &#xff0c; &#xff0c; &#xff0c; … &#xff0c;}&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中&#xff0c;则称为小堆( 或大堆 ) 。将根节点最大的堆叫做最大堆或大根堆&#xff0c;根节点最小的…

【机器学习】25. 聚类-DBSCAN(density base)

聚类-DBSCAN-density base 1. 介绍2. 实现案例计算 3. K-dist4. 变化密度5. 优缺点 1. 介绍 DBSCAN – Density-Based Spatial Clustering of Applications with Noise 与K-Means查找圆形簇相比&#xff0c;DBSCAN可以查找任意形状和复杂形状的簇&#xff0c;如S形、椭圆、半圆…

MongoDB 8.0.3版本安装教程

MongoDB 8.0.3版本安装教程 一、下载安装 1.进入官网 2.选择社区版 3.点击下载 4.下载完成后点击安装 5.同意协议&#xff0c;下一步 6.选择第二个Custon&#xff0c;自定义安装 7.选择安装路径 &#xff01;记住安装路径 8.默认&#xff0c;下一步 9.取…

怎么做才能降低APP用户的卸载率?

常年困扰 App 开发者的始终是一个问题&#xff1a;怎么做才能降低用户卸载率呢&#xff1f; 不要慌&#xff0c;今天这篇文章里&#xff0c;你就会找到解决方案啦。首先请记住&#xff1a; 每个 App 都是有自己独立个性的&#xff0c;所以没有一个通用的公式能让大家套用。 还…

elasticsearch 8.x 插件安装(三)之拼音插件

elasticsearch 8.x 插件安装&#xff08;三&#xff09;之拼音插件 elasticsearch插件安装合集 elasticsearch插件安装&#xff08;一&#xff09;之ik分词器安装&#xff08;含MySQL更新&#xff09; elasticsearch 8.x插件&#xff08;二&#xff09;之同义词安装如何解决…

CSP-J2024入门级T3:小木棍

题目链接 CSP-J2024T3:小木棍 题目描述 小 S 喜欢收集小木棍。在收集了 n n n 根长度相等的小木棍之后,他闲来无事,便用它们拼起了数字。用小木棍拼每种数字的方法如下图所示。 现在小 S 希望拼出一个正整数,满足如下条件: 拼出这个数恰好使用

Python小游戏19——滑雪小游戏

运行效果 python代码 import pygame import random # 初始化Pygame pygame.init() # 设置屏幕尺寸 screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("滑雪小游戏") # 定义颜色 WH…

哪个牌子的宠物空气净化器好?口碑好的宠物空气净化器推荐!

哪个牌子的宠物空气净化器好&#xff1f;作为一名家电测评博主&#xff0c;我发现市面上宠物空气净化器的牌子越来越多了&#xff0c;很多厂家都看中了宠物行业的红利&#xff0c;想来分一杯羹&#xff0c;这就导致很多技术不成熟的产品流入了市场。今年我测试了50多台宠物空气…

【Vue3.js】计算属性监视属性的深度解析

&#x1f9d1;‍&#x1f4bc; 一名茫茫大海中沉浮的小小程序员&#x1f36c; &#x1f449; 你的一键四连 (关注 点赞收藏评论)是我更新的最大动力❤️&#xff01; &#x1f4d1; 目录 &#x1f53d; 前言1️⃣ 计算属性概述2️⃣ 监视属性概述3️⃣ 计算属性与监视属性的对比…

[SAP ABAP] 在选择屏幕上的标准工具栏上增加自定义按钮

SAP系统的选择屏幕的标准工具栏上预先定义了5个按钮&#xff0c;对应的功能码是FC01、FC02、FC03、FC04、FC05&#xff0c;该功能码默认是不激活的。用户可以使用以下代码来激活这5个按钮 SELECTION-SCREEN FUNCTION KEY i. 提示Tips&#xff1a;这里的 i 必须是整数1-5&…

SIwave:释放 DCIR 求解器的强大功能

SIwave 是一种电源完整性和信号完整性工具。本文讨论了 DCIR 是电源完整性求解器之一。 DCIR 对于研究 powerplane 配电网络 PDN 的电压和电流分布是必要的。该求解器可计算任何电源层中的电压降、接地层中的电压上升、电流分布、每个过孔中的电流&#xff0c;检测任何过孔中的…

【论文笔记】Token Turing Machines

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Token Turing Machines 作…

2. Flink快速上手

文章目录 1. 环境准备1.1 系统环境1.2 安装配置Java 8和Scala 2.121.3 使用集成开发环境IntelliJ IDEA1.4 安装插件2. 创建项目2.1 创建工程2.1.1 创建Maven项目2.1.2 设置项目基本信息2.1.3 生成项目基本框架2.2 添加项目依赖2.2.1 添加Flink相关依赖2.2.2 添加slf4j-nop依赖2…

XHCI 1.2b 规范摘要(九)

系列文章目录 XHCI 1.2b 规范摘要&#xff08;一&#xff09; XHCI 1.2b 规范摘要&#xff08;二&#xff09; XHCI 1.2b 规范摘要&#xff08;三&#xff09; XHCI 1.2b 规范摘要&#xff08;四&#xff09; XHCI 1.2b 规范摘要&#xff08;五&#xff09; XHCI 1.2b 规范摘要…

【JavaEE初阶】网络原理(5)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 路由选择 数据链路层>以太网 MTU mac地址和IP地址的区别 空间范围不同 应用范围不同 ARP协议/ARP数据包 DNS(域名解析系统) 路由选择 每个路由器,无法知道整个网络…

图书管理系统汇报

【1A536】图书管理系统汇报 项目介绍1.用户登录注册功能1. 1用户角色管理2.图书管理功能2.1 添加图书2.2 编辑图书2.3 删除图书 3.图书搜索和筛选3.1 图书搜索3.2 图书筛选 4.图书借阅、图书归还4.1 图书借阅4.2 图书归还 5.用户信息管理5.1上传头像5.2修改头像5.3 修改密码 项…

清晰易懂的JavaScript进阶部分——DOM操作 (节点获取,节点属性修改,节点创建与插入,CSS样式的修改)

DOM操作&#xff08;Document Object Model 文档对象模型&#xff09;指的是通过JavaScript来操作网页的结构和内容。DOM提供了一种以文档树形式表示HTML或XML文档的方式&#xff0c;可以使用JavaScript来访问和修改网页的元素、属性和文本内容&#xff0c;且提供了一系列的函数…

服务器虚拟化

前言 服务器虚拟化是一种技术&#xff0c;它通过将一台物理服务器的软件环境分割成多个独立分区&#xff0c;使每个分区都能模拟出一台完整的虚拟服务器。这种技术利用虚拟化技术充分发挥服务器的硬件性能&#xff0c;提高运营效率&#xff0c;节约能源并降低经济成本。 通过…

如何在Linux下部署自己的ZFile开源网盘

ZFile 项目介绍 ZFile是一个功能强大、灵活的开源网盘系统&#xff0c;为用户提供安全便捷的文件存储和共享方案。 项目概述 ZFile由ZFile, Inc.开发和维护&#xff0c;基于Docusaurus构建。其用户友好的界面支持多种文件存储和共享功能&#xff0c;并具备高度的可定制性和扩…