介绍
在 $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
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8020</value>
</property>
解释: NameNode 部署在 hadoop1 上,所以使用 hadoop1 的 8020 端口
有的配置为 9000 端口
设置HDFS存储文件的位置
<property>
<name>hadoop.tmp.dir</name>
<value>/program/hadoop-3.0.3/data/tmp</value>
</property>
当上传文件到 HDFS 后,HDFS 中的文件保存在:
/program/hadoop-3.0.3/data/tmp/dfs/data/current/BP-生成的数字/current/finalized/subdir0/subdir0/
配置HDFS网页登录的静态用户
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
配置 hdfs
进入 hadoop目录
cd /program/hadoop-3.0.3/etc/hadoop/
vim文件
vim hdfs-site.xml
namenode web服务
namenode 部署在 hadoop1 上
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:9870</value>
</property>
secondarynamenode web服务
secondarynamenode 部署在 hadoop3 上
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:9868</value>
</property>
配置副本数(可略)
默认副本数是:3,上传文件后,会有 3 个副本
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
配置 yarn
进入 hadoop目录
cd /program/hadoop-3.0.3/etc/hadoop/
修改 yarn-site.xml
vim yarn-site.xml
增加内容
<!-- 指定MRshuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
<!-- 环境变量 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>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</value>
</property>
<!-- 是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
解释:
yarn.nodemanager.vmem-check-enabled:关闭检查虚拟内存配置,原因见 链接
配置 MapReduce
进入 hadoop目录
cd /program/hadoop-3.0.3/etc/hadoop/
修改 mapred-site.xml
vim mapred-site.xml
增加内容
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置 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 文件是否正确