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
posted on 2024-12-23 14:43  屋蓝  阅读(39)  评论(0)    收藏  举报