文章目录
- 前言
- 一、Hadoop伪分布式部署(手动部署)
- 1. 下载并上传hadoop安装包
- 1.1 下载
- 1.2 上传
- 2. 解压hadoop安装包
- 3. 配置hadoop配置文件
- 3.1 修改 hadoop-env.sh 配置文件
- 3.2 修改 core-site.xml 配置文件
- 3.3 修改 hdfs-site.xml 配置文件
- 3.4 修改 mapred-site.xml 配置文件
- 3.5 修改 yarn-site.xml 配置文件
- 3.6 修改 workers 配置文件
- 4. 配置hadoop环境变量
- 5. 格式化HDFS(Hadoop分布式文件系统)
- 6. hadoop集群启动和停止
- 6.1 启动 hadoop 集群
- 6.2 停止 hadoop 集群
- 注意
- 二、使用shell脚本自动部署Hadoop伪分布式(选看)
- 1. 下载并上传hadoop安装包
- 1.1 下载
- 1.2 上传
- 2. 使用shell脚本自动部署Hadoop完全分布式
- 2.1 创建 hadoop_install_config.sh 脚本文件并添加脚本内容
- 2.2 添加可执行权限
- 2.3 执行脚本
- 3. 加载环境变量
- 4. hadoop集群启动和停止
- 4.1 启动 hadoop 集群
- 4.2 停止 hadoop 集群
前言
本文将详细介绍Hadoop的伪分布式部署过程,包括手动部署和使用脚本自动部署两种方式。通过手动部署,读者将能够深入理解Hadoop的各个组件及其配置文件的作用,从而为后续的集群管理和优化打下坚实的基础。而使用脚本自动部署则能够提高安装效率,简化操作步骤,适合需要快速搭建Hadoop环境的用户。
一、Hadoop伪分布式部署(手动部署)
1. 下载并上传hadoop安装包
1.1 下载
点击下载hadoop3.3.0安装包:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
华为云镜像站下载:https://mirrors.huaweicloud.com/repository/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
1.2 上传
通过拖移的方式将下载的hadoop安装包hadoop-3.3.0.tar.gz上传至虚拟机hadoop的/export/software目录。
2. 解压hadoop安装包
上传完成后将hadoop安装包通过解压方式安装至/export/servers目录。
tar -zxvf /export/software/hadoop-3.3.0.tar.gz -C /export/servers/
解压完成如下图所示。
3. 配置hadoop配置文件
3.1 修改 hadoop-env.sh 配置文件
修改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.2 修改 core-site.xml 配置文件
修改hadoop核心配置文件/export/servers/hadoop-3.3.0/etc/hadoop/core-site.xml
,使用echo命令把配置内容重定向并写入到 /export/servers/hadoop-3.3.0/etc/hadoop/core-site.xml 文件。
cat >/export/servers/hadoop-3.3.0/etc/hadoop/core-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定Hadoop集群的默认文件系统名称 --><property><name>fs.defaultFS</name><value>hdfs://hadoop: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>
EOF
3.3 修改 hdfs-site.xml 配置文件
修改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>1</value>
</property>
<property><name>dfs.namenode.secondary.http-address</name><value>hadoop:9868</value>
</property>
</configuration>
EOF
3.4 修改 mapred-site.xml 配置文件
修改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>hadoop:10020</value>
</property>
<property><name>mapreduce.jobhistory.Webapp.address</name><value>hadoop:19888</value>
</property>
<property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=\${HADOOP_HOME}</value>
</property>
<property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=\${HADOOP_HOME}</value>
</property>
<property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=\${HADOOP_HOME}</value>
</property>
</configuration>
EOF
3.5 修改 yarn-site.xml 配置文件
修改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>hadoop</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://hadoop:19888/jobhistory/logs</value>
</property>
<property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value>
</property>
</configuration>
EOF
3.6 修改 workers 配置文件
修改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
hadoop
EOF
4. 配置hadoop环境变量
使用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分布式文件系统)
执行如下命令格式化Hadoop分布式文件系统HDFS。
hdfs namenode -format
格式化成功如下图所示,会提示我们存储目录 /export/data/hadoop-3.3.0/dfs/name 已经成功格式化。
6. hadoop集群启动和停止
6.1 启动 hadoop 集群
方法一:执行如下命令同时启动 hdfs 和 yarn。
start-all.sh
注意:命令的全路径启动为
/export/servers/hadoop-3.3.0/sbin/start-all.sh
,之所以可以使用start-all.sh
直接启动是因为我们设置了环境变量。
方法二:单独启动 hdfs 和单独启动 yarn。
单独启动 hdfs
start-dfs.sh
单独启动 yarn
start-yarn.sh
hadoop集群启动之后使用如下命令查看对应进程是否正常。
jps
正常如下图所示。
访问 HDFS(NameNode)的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.100:9870
进行访问,如下图。
检查DataNode是否正常,正常如下图所示。
访问 HDFS(Secondary NameNode)的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.100:9868
进行访问,如下图。
访问 YARN 的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.100:8088
进行访问,如下图。
6.2 停止 hadoop 集群
方法一:如果需要停止 hadoop 集群运行,执行如下命令同时停止 hdfs 和 yarn。
stop-all.sh
方法二:如果需要停止 hadoop 集群运行,单独停止 hdfs 和单独停止 yarn。
单独启动 hdfs
stop-dfs.sh
单独启动 yarn
stop-yarn.sh
注意
如果安装出现问题,要重新格式化HDFS,需要执行如下命令删除生成的数据目录。
rm -rf /export/data/hadoop-3.3.0
二、使用shell脚本自动部署Hadoop伪分布式(选看)
1. 下载并上传hadoop安装包
1.1 下载
点击下载hadoop3.3.0安装包:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
华为云镜像站下载:https://mirrors.huaweicloud.com/repository/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
1.2 上传
通过拖移的方式将下载的hadoop安装包hadoop-3.3.0.tar.gz上传至虚拟机hadoop的/export/software目录。
2. 使用shell脚本自动部署Hadoop完全分布式
2.1 创建 hadoop_install_config.sh 脚本文件并添加脚本内容
执行如下命令创建/export/shell/hadoop_install_config.sh
脚本文件
touch /export/shell/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"# 如果临时数据目录存在则删除
if [ -d "${HADOOP_TMP_DIR}" ]; thenecho "删除自动生成的临时数据目录 ${HADOOP_TMP_DIR}..."rm -rf ${HADOOP_TMP_DIR}
fi# 检查hadoop是否已解压
if [ -d "$HADOOP_DIR/hadoop-$HADOOP_VER" ]; thenecho "hadoop安装程序已存在,正在删除原安装程序目录..."rm -rf "$HADOOP_DIR/hadoop-$HADOOP_VER"
fi# 检查hadoop安装包是否存在
if [ -f $SOFTWARE_DIR/$HADOOP_TAR ]; thenecho "hadoop安装包存在,正在解压安装包..."# 解压Hadoop安装包tar -zxvf ${HADOOP_SOFTWARE_DIR}/${HADOOP_TAR} -C ${HADOOP_DIR}echo "解压 ${HADOOP_SOFTWARE_DIR}/${HADOOP_TAR} 到 ${HADOOP_DIR} 目录成功"
elseecho "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://hadoop: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>1</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop: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>hadoop:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop:19888</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=\${HADOOP_HOME}</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=\${HADOOP_HOME}</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=\${HADOOP_HOME}</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>hadoop</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://hadoop: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 "hadoop" >${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/workers
echo "${HADOOP_DIR}/hadoop-${HADOOP_VER}/etc/hadoop/workers 配置文件修改成功"# 设置环境变量
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# 格式化HDFS
echo "正在格式化HDFS..."
hdfs namenode -format
if [ $? -eq 0 ]; thenecho "格式化HDFS成功"
elseecho "格式化HDFS失败,请检查异常并解决后重新执行此脚本"exit 1
fiecho -e "\n-----hadoop伪分布式安装配置完成-----\n"
echo -e "1. 请手动在执行命令 source /etc/profile 加载环境变量\n"
echo "3. 启动hadoop命令:start-all.sh, 停止hadoop命令:stop-all.sh"exit 0
2.2 添加可执行权限
执行如下命令给脚本文件/export/shell/hadoop_install_config.sh
添加可执行权限。
chmod +x /export/shell/hadoop_install_config.sh
2.3 执行脚本
执行脚本文件自动化安装配置hadoop伪分布式。
/export/shell/hadoop_install_config.sh
成功安装配置如下图所示。
3. 加载环境变量
根据使用shell脚本自动安装完成后的提示,执行如下命令加载环境变量。
source /etc/profile
4. hadoop集群启动和停止
4.1 启动 hadoop 集群
方法一:执行如下命令同时启动 hdfs 和 yarn。
start-all.sh
注意:命令的全路径启动为
/export/servers/hadoop-3.3.0/sbin/start-all.sh
,之所以可以使用start-all.sh
直接启动是因为我们设置了环境变量。
方法二:单独启动 hdfs 和单独启动 yarn。
单独启动 hdfs
start-dfs.sh
单独启动 yarn
start-yarn.sh
hadoop集群启动之后使用如下命令查看对应进程是否正常。
jps
正常如下图所示。
访问 HDFS(NameNode)的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.100:9870
进行访问,如下图。
检查DataNode是否正常,正常如下图所示。
访问 HDFS(Secondary NameNode)的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.100:9868
进行访问,如下图。
访问 YARN 的 Web UI 页面
在启动hadoop集群后,在浏览器输入http://192.168.121.100:8088
进行访问,如下图。
4.2 停止 hadoop 集群
方法一:如果需要停止 hadoop 集群运行,执行如下命令同时停止 hdfs 和 yarn。
stop-all.sh
方法二:如果需要停止 hadoop 集群运行,单独停止 hdfs 和单独停止 yarn。
单独启动 hdfs
stop-dfs.sh
单独启动 yarn
stop-yarn.sh