Hadoop3 集群搭建

目录

一. 软硬件环境

1. 测试环境

2. hosts配置

二. 前置环境准备

1. 安装工具

2. 同步网络时间

三. HDFS单主节点集群

1. 解压安装

2. 修改配置 

2.1 core-site.xml

2.2 hdfs-site.xml

2.3 yarn-site.xml

2.4 mapred-site.xml

2.5 hadoop-env.sh

2.6 workers

2.7 whitelist

2.8 blacklist

 3. 分发安装包

3.1 分发指令

3.2 权限赋值

3.3 一键操作脚本

4.启动集群

4.1 格式化节点

4.2. 快速启动

4.3 详细启动

4.4 进程监控

四. HDFS_HA集群手动模式

1.修改配置文件

1.1 core-site.xml

1.2 hdfs-site.xml

2.启动集群

2.1 启动journalnode

2.2 格式化并启动NamenNode

2.3 节点校验

2.4 同步NameNode

2.5 启动剩余NameNode节点

2.6 启动所有DataNode节点

2.7 指定主节点

五. HA集群自动模式

1.修改配置内容

1.1 core-site.xml

2.启动集群

2.1 清空历史数据与日志

2.2 启动journalnode

2.3 格式化一个节点NameNode

2.4 同步NameNode

2.5 初始化HA在Zookeeper中状态

2.6  启动选举

2.7 启动数据节点

2.8 一键控制

2.9 启动历史记录服务

2.10 联邦机制

六. Yarn_HA模式部署

1. 修改配置

2. 启动Yarn-HA集群

3. 查看节点状态

4. 启动历史日志记录服务


一. 软硬件环境

1. 测试环境

信息 内容
主机版本 centos7
机器数量 3台
Hadoop版本 3.3.4(已踩坑不支持snappy) 已修改3.1.3
安装包解压路径 /home/tools/hadoop/

2. hosts配置

主机ip地址 对应主机host
192.168.57.188 node1
192.168.57.189 node2
192.168.57.190 node3

二. 前置环境准备

  1. 安装JDK1.8(Hadoop支持1.8)
  2. 自定义shell环境变量sh文件放在 /etc/profile.d/ 目录下
  3. 创建非root用户(这里用的myuser),配置三台服务器之间的免密登录
  4. 配置三台服务器使时间同步

1. 安装工具

yum -y install ntp ntpdate

2. 同步网络时间

ntpdate cn.pool.ntp.org

三. HDFS单主节点集群

1. 解压安装

解压安装包得到一个安装文件如下

2. 修改配置 

修改配置文件路径为

cd /home/tools/hadoop/hadoop-3.1.3/etc/hadoop

需要修改的配置文件有8个

core-site.xml
hdfs-site.xml

yarn-site.xml
mapred-site.xml
hadoop-env.sh

workers   (这个文件可不用配置,配置后可以一键启动集群)

whitelist (白名单,默认不存在,主动创建,需要写入集群中的所有主机hosts)

blacklist (黑名单,默认不存在,主动创建,写入的host节点无法加入集群)

配置文件修改后的内容如下

2.1 core-site.xml

<configuration>
    <property><!--指定NameNode的地址-->
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9820</value>
    </property>
    <property><!--指定hadoop运行时产生文件的存储目录-->
        <name>hadoop.tmp.dir</name>
        <value>/home/tools/hadoop/hadoop-3.1.3/data/temp</value>
    </property>
	
	<!--用户权限配置-->
    <property><!--设置该myuser用户允许通过代理访问的主机节点-->
        <name>hadoop.proxyuser.myuser.hosts</name>
        <value>*</value>
    </property>
    <property><!--设置该myuser用户允许通过代理用户所属组-->
        <name>hadoop.proxyuser.myuser.groups</name>
        <value>*</value>
    </property>
    <property><!--设置HDFS网页登录使用的静态用户为myuser-->
        <name>hadoop.http.staticuser.user</name>
        <value>myuser</value>
    </property>
	
    <!--配置回收站-->
    <property><!--删除的文件会在回收站保留60分钟-->
        <name>fs.trash.interval</name>
        <value>60</value>
    </property>
    <property><!--回收站检查,每次间隔60分钟清空一次回收站-->
        <name>fs.trash.checkpoint.interval</name>
        <value>60</value>
    </property>
</configuration>

2.2 hdfs-site.xml

<configuration>
	<!--web管理访问配置-->
    <property><!--NameNode的web访问地址-->
        <name>dfs.namenode.http-address</name>
        <value>node1:9870</value>
    </property>
    <property><!--备份NameNode的web访问地址-->
        <name>dfs.namenode.secondary.http-address</name>
        <value>node3:9870</value>
    </property>
	
	<!--块大小与副本配置-->
    <property><!--副本hdfs备份数-->
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property><!--块大小-->
        <name>dfs.blocksize</name>
        <value>67108864</value>
    </property>
	
	<!--NameNode/DataNode数据存储配置-->
    <property><!--NameNode文件保存路径-->
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/tools/hadoop/hadoop-3.1.3/data/namenode</value>
    </property>
    <property><!--DataNode保存路径地址,可以配置多个路径,使用逗号隔开,用于后续扩展磁盘-->
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/tools/hadoop/hadoop-3.1.3/data/datanode</value>
    </property>
	
	<!--镜像缓存刷新配置-->
    <property><!--SecondaryNameNode两次刷镜像之间的最大间隔为1小时-->
        <name>dfs.homenode.checkpoint.period</name>
        <value>3600s</value>
    </property>
    <property><!--经过检查,操作次数达到100W次就刷镜像文件-->
        <name>dfs.namenode.checkpoint.txns</name>
        <value>1000000</value>
    </property>
    <property><!--60秒进行一次检查,用于记录镜像文件-->
        <name>dfs.namenode.checkpoint.check.period</name>
        <value>60s</value>
    </property>
	
	<!--数据节点是否正常的心跳检测-->
    <property><!--NameNode与DataNode心跳时间间隔-->
        <name>dfs.heartbeat.interval</name>
        <value>3s</value>
    </property>
    <property><!--检查过期 300000毫秒心跳 认为DataNode断开-->
        <name>dfs.namenode.heartbeat.recheck-interval</name>
        <value>300000</value>
    </property>
	
	<!--黑白名单文件配置-->
    <property><!-- 白名单文件,第一次添加白名单必须重启集群,不是第一次,只需要刷新NameNode节点即可 -->
        <name>dfs.hosts</name>
        <value>/home/tools/hadoop/hadoop-3.1.3/etc/hadoop/whitelist</value>
    </property>
    <property><!-- 黑名单文件 -->
        <name>dfs.hosts.exclude</name>
        <value>/home/tools/hadoop/hadoop-3.1.3/etc/hadoop/blacklist</value>
    </property>
    
    <!--速度限制-->
    <property><!--集群平衡节点之间传输数据的带宽配置-->
        <name>dfs.datanode.balance.bandwidthPerSec</name>
        <value>10m</value>
    </property>
</configuration>

2.3 yarn-site.xml

<configuration>
	<!--环境配置-->
    <property><!--指定MR走shuffle-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property><!--指定资源调度resourcemanager节点-->
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
    <property>
        <name>yarn.application.classpath</name>
        <value>控制台输入hadoop classpath,将返回的内容Hadoop classpath路径写在这里</value>
    </property>
	
	<!--历史日志配置-->
    <property><!--日志聚集功能,默认关闭-->
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property><!--日志聚集地址-->
        <name>yarn.log.server.url</name>
        <value>http://node1:19888/jobhistory/logs</value>
    </property>
    <property><!--日志保留时间 7日-->
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
	
	<!--Yarn调度配置-->
    <property><!-- 选择调度器,默认容量调度 -->
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>
    <property><!-- ResourceManager处理调度器请求的线程数量,默认50个任务同时运行;如果提交的任务数大于50,可以增加该值,但是不能超过3台 * 4线程 = 12线程(去除其他应用程序实际不能超过8) -->
        <name>yarn.resourcemanager.scheduler.client.thread-count</name>
        <value>8</value>
    </property>
	
    <!--集群资源自动配置,手动配置与自动配置二选一-->
    <property><!-- 是否让yarn自动检测硬件进行配置,默认是false,如果该节点有很多其他应用程序,建议手动配置。如果该节点没有其他应用程序,可以采用自动 -->
        <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
        <value>false</value>
    </property>
    <property><!-- 是否将虚拟核数当作CPU核数,默认是false,采用物理CPU核数,如果设置为true需要配合下面的比例配置使用 -->
        <name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
        <value>false</value>
    </property>
    <property><!-- 虚拟核数和物理核数比例,默认是1.0 -->
        <name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
        <value>1.0</value>
    </property>
	
    <!--集群资源手动配置,手动配置与自动配置二选一-->
    <property><!--NodeManager使用内存大小-->
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
    </property>
    <property><!-- nodemanager的CPU核数,不按照硬件环境自动设定时默认是8个,修改为4个 -->
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>4</value>
    </property>
	
	<!--Yarn容器资源配置-->
    <property><!--一个容器最小内存-->
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>128</value>
    </property>
    <property><!--一个容器的最大内存-->
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>512</value>
    </property>
    <property><!-- 容器最小CPU核数,默认1个 -->
        <name>yarn.scheduler.minimum-allocation-vcores</name>
        <value>1</value>
    </property>
    <property><!-- 容器最大CPU核数,默认4个,修改为2个 -->
        <name>yarn.scheduler.maximum-allocation-vcores</name>
        <value>2</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><!-- 虚拟内存和实际申请内存比例,默认2.1 -->
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>2.1</value>
    </property>
</configuration>

2.4 mapred-site.xml

<configuration>
    <property><!--指定mapreduce使用yarn运行-->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钻风巡山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值