Hadoop集群配置
hadoop 集群配置
基础环境准备
关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 禁用防火墙
systemctl disable firewalld.service
ssh免密登录
# 4个回车 生成公钥、私钥
ssh-keygen
# 将公钥拷贝到别的服务器
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
ssh-copy-id node4
配置文件
hadoop-env.sh
# 配置JAVA_HOME
export JAVA_HOME=/usr/local/etc/jdk1.8.0_311
# 指定用户(文件最后增加)
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
core-site.xml
<configuration>
<!-- 默认文件系统的名称。通过URI中的schema区分不同的文件系统 -->
<!-- file:///本地文件系统 hdfs:// hadoop分布式文件系统 gfs://等 -->
<!-- hdfs文件系统访问地址: http://nn_host:8020 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<!-- hadoop本地数据存储目录 format时自动生成 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/data/hadoop_data</value>
</property>
<!-- 在WEB UI访问HDFS使用的用户名 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
</configuration>
hdfs.site.xml
<!-- 设定SNN运行的主机和端口 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:9868</value>
</property>
mapred-site.xml
<!-- MR 程序默认运行方式。 yarn集群模式 local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR APP Master 环境变量 -->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR MapTask 环境变量 -->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR ReduceTask 环境变量 -->
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
yarn-site.xml
<!-- yarn集群主角色RM运行机器 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle 才可以运行MR程序 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 每个容器请求的最小内存资源(以MB为单位) -->
<property>
<name>yarn.schedule.minimum-allocation-mb</name>
<value>512</value>
</property>
<!-- 每个容器请求的最大内存资源(以MB为单位) -->
<property>
<name>yarn.schedule.maximum-allocation-mb</name>
<value>1024</value>
</property>
<!-- 容器虚拟内存与物理内存之间的比率 -->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
</property>
workers
node1
node2
node3
同步文件
## 把node1上的文件夹拷贝到node2和node3
scp -r hadoop-3.2.2/ root@node2:/usr/local/etc/
scp -r hadoop-3.2.2/ root@node3:/usr/local/etc/
配置环境变量
## vim /etc/profile.d/my_env.sh
#JAVA_HOME
export JAVA_HOME=/usr/local/etc/jdk1.8.0_311
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/usr/local/etc/hadoop-3.2.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
NameNode 格式化
## 首次启动HDFS时必须对其进行格式化操作
## 本质是初始化工作,进行HDFS清理和准备工作
## format 只能执行一次 后续不再需要执行
## 多次format多次会做成数据丢失 还会导致hdfs集群主从角色互补识别
## 通过删除所有机器上 hadoop.tmp.dir 目录重新format解决
hdfs namenode -format
集群启动关闭
hdfs集群(手动起停)
hdfs --daemon start namenode|datanode|secondarynamenode
hdfs --daemon stop namenode|datanode|secondarynamenode
yarn集群(手动起停)
yarn --daemon start resourcemanager|nodemanager
yarn --daemon stop resourcemanager|nodemanager
shell脚本一键起停
## 在node1上,使用软件自带的shell脚本一键起停
## 前提是配置好机器之间的SSH免密登录和workers文件
## hdfs集群
start-dfs.sh
stop-dfs.sh
## yarn集群
start-yarn.sh
stop-yarn.sh
## hadoop集群
start-all.sh
stop-all.sh
WEB UI 界面
# hdfs集群 web ui
http://namenode_host:9870
# yarn集群 web ui
http://resourcemanager_host:8088
浙公网安备 33010602011771号