hadoop3.x集群部署-配置HDFS、yarn、MapReduce 作者:马育民 • 2021-09-20 20:16 • 阅读:10712 # 介绍 在 `$HADOOP_HOME/etc/hadoop` 目录下,有以下4个配置文件: - core-site.xml - hdfs-site.xml - yarn-site.xml - mapred-site.xml 用户可以根据项目需求进行修改配置 # 登录 hadoop1 虚拟机 登录 `hadoop1` 虚拟机,执行下面操作 # 修改 hadoop-env.sh hadoop-env.sh 配置了 hadoop 的环境 进入 hadoop目录 ``` cd /program/hadoop-3.0.3/etc/hadoop/ ``` ### 设置 JAVA_HOME(可略) 指定 **java 绝对路径**,否则 启动 NameNode 和 DataNode 会报错 使用 vim 编辑该文件: ``` vim hadoop-env.sh ``` 找到 `export JAVA_HOME` ,如果该行前面有 `#` ,就去掉 `#`,改成 ``` export JAVA_HOME=/program/jdk1.8.0_202 ``` 可通过下面命令显示 java 绝对路径: ``` echo $JAVA_HOME ``` ### 设置 root用户 如果用 `root` 用户部署、启动hadoop,需要配置 **root** 用户,否则 执行 `start-dfs.sh` 命令,报错如下: ``` Starting namenodes on [hadoop1] ERROR: Attempting to operate on hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. Starting datanodes ERROR: Attempting to operate on hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation. Starting secondary namenodes [hadoop3] ERROR: Attempting to operate on hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation. ``` 在 `hadoop-env.sh` 文件的 **最下面** 添加下面配置: ``` export HDFS_DATANODE_USER=root export HDFS_NAMENODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root ``` # 配置 core-site.xml 进入 hadoop目录 ``` cd /program/hadoop-3.0.3/etc/hadoop/ ``` ### 修改文件 ``` vim core-site.xml ``` ### 配置 NameNode ``` fs.defaultFS hdfs://hadoop1:8020 ``` **解释:** NameNode 部署在 `hadoop1` 上,所以使用 `hadoop1` 的 `8020` 端口 有的配置为 `9000` 端口 ### 设置HDFS存储文件的位置 ``` hadoop.tmp.dir /program/hadoop-3.0.3/data/tmp ``` 当上传文件到 HDFS 后,HDFS 中的文件保存在: ``` /program/hadoop-3.0.3/data/tmp/dfs/data/current/BP-生成的数字/current/finalized/subdir0/subdir0/ ``` ### 配置HDFS网页登录的静态用户 ``` hadoop.http.staticuser.user root ``` # 配置 hdfs 进入 hadoop目录 ``` cd /program/hadoop-3.0.3/etc/hadoop/ ``` ### vim文件 ``` vim hdfs-site.xml ``` ### namenode web服务 `namenode` 部署在 `hadoop1` 上 ``` dfs.namenode.http-address hadoop1:9870 ``` ### secondarynamenode web服务 `secondarynamenode` 部署在 `hadoop3` 上 ``` dfs.namenode.secondary.http-address hadoop3:9868 ``` ### 配置副本数(可略) 默认副本数是:`3`,上传文件后,会有 `3` 个副本 ``` dfs.replication 3 ``` # 配置 yarn 进入 hadoop目录 ``` cd /program/hadoop-3.0.3/etc/hadoop/ ``` ### 修改 yarn-site.xml ``` vim yarn-site.xml ``` ### 增加内容 ``` yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop2 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME yarn.nodemanager.vmem-check-enabled false ``` **解释:** - `yarn.nodemanager.vmem-check-enabled`:关闭检查虚拟内存配置,原因见 [链接](https://www.malaoshi.top/show_1IX2EWMOCyjp.html "链接") # 配置 MapReduce 进入 hadoop目录 ``` cd /program/hadoop-3.0.3/etc/hadoop/ ``` ### 修改 mapred-site.xml ``` vim mapred-site.xml ``` ### 增加内容 ``` mapreduce.framework.name yarn ``` # 配置 works 启动集群时,会读取 `works`文件的主机名,然后访问这些主机 进入 hadoop目录 ``` cd /program/hadoop-3.0.3/etc/hadoop/ ``` ### vim文件 ``` vim works ``` ### 修改内容 配置主机名称,内容如下: ``` hadoop1 hadoop2 hadoop3 ``` **注意:** - 主机名 前后不允许有空格 - 不允许有空行 # 同步文件 更新配置文件目录 ### 同步到 hadoop2 ``` rsync -av /program/hadoop-3.0.3/etc/ root@hadoop2:/program/hadoop-3.0.3/etc ``` ### 同步到 hadoop3 ``` rsync -av /program/hadoop-3.0.3/etc/ root@hadoop3:/program/hadoop-3.0.3/etc ``` ### 验证文件是否正确 登录 `hadoop2` 查看 `core-site.xml` 文件是否正确 登录 `hadoop3` 查看 `core-site.xml` 文件是否正确 原文出处:http://malaoshi.top/show_1IX1tjXoC8D2.html