hadoop

Hadoop

Hadoop的简单介绍

分布式:
	存储: hdfs : hadoop distributed file system
	计算: mapreduce : map + shuffle + reduce
面向集群: 
	构成:
		管理数据
			Namenode  		* 2(Active | Standby)
				Datanode	* N
		管理资源和任务
			yarn
				resourcemanager : 资源(CPU:MEN:DISK)
				applicationManager : 任务(计算)
				nodemanager * N
		高可靠,高可用
			副本机制: 3
Hadoop的启动
# 首次启动
    # 格式化 namenode
    hdfs namenode -format
    # 格式化 namenode 之后
    cd /opt/software/hadoop-3.1.3/data/dfs/name/current
	# 启动服务
    start-all.sh
        
# 再次启动
    # 单启或者关闭
    hdfs --daemon start|stop HDFS_SERVICE_NAME
    yarn --daemon start|stop YARN_SERVICE_NAME
    mapred --daemon start historyserver
    
    #群启或者关闭
    start-dfs.sh
    start-yarn.sh
hadoop启动后的进程
1698 NameNode
2018 SecondaryNameNode
2898 Jps
2419 NodeManager
1829 DataNode
2287 ResourceManager
hadoop启动后的服务
HDFS(Hadoop Distributed File System):

    HDFS是Hadoop的分布式文件系统,它包括NameNode(主控节点)和多个DataNode(数据节点)

    HDFS用于存储和管理数据,确保数据的高可用和容错性

YARN ResourceManager:

    YARN ResourceManager是Hadoop的资源管理器,它负责集群中的资源分配和任务调度。

    它包括两个主要组件:ResourceScheduler和ApplicationManager

YARN NodeManager:

    YARN NodeManager运行在每个数据节点上,负责监控资源使用情况,并向ResourceManager注册节点上的可用资源,它还负责执行ResourceManager分配的任务。

MapReduce任务跟踪器和作业跟踪器:

    这两个组件用于监视和跟踪MapReduce作业的执行状态和进度。

日志和监控:

    Hadoop集群生成各种日志和指标,这些日志和指标可以用于监控和诊断集群性能、问题和健康状态。

Hadoop核心组件

HDFS

HDFS架构

HDFS文件操作

MapReduce

MapReduce

Yarn

Yarn

一张图片带你简单了解前几篇文章简介

Hadoop心跳机制

NameNode和DataNode 心跳
1.确定 DataNode 的存活状态:

通过定期接收 DataNode 的心跳信号,NameNode 可以判断 DataNode 是否处于存活状态。

如果 NameNode 在一段时间内没有收到来自 DataNode 的心 跳信号,就会认为该 DataNode 宕机,并将其排除出集群。

2.收集块信息:

DataNode 在发送心跳信号时会附带自己持有的块信息,包括块的ID、长度和位置等。

NameNode 通过接收这些信息来了解集群中存储的数据块情况,以便进行块的管理和复制。

3.块报告:

如果 DataNode 发现自己存储的某个块丢失或损坏,它会在心跳信号中向 NameNode 发送块报告,提供有关损坏块的详细信息。

NameNode 接收到块报告后,可以采取相应措施修复或处理这些损坏的数据块。

NodeManager和ResourceManager 心跳

NodeManager是YARN资源管理器(ResourceManager)的组件,负责管理集群中的节点资源。

NodeManager会向ResourceManager发送心跳,汇报节点的可用资源和状态,ResourceManager使用这些信息来进行资源分配和容错管理。

Hadoop Job的一些优化手段

合并小文件

在执行MR任务前将小文件进行合并,大量的小文件会产生大量的Map任务,增大Map任务装载次数,而任务的装载比较耗时,从而导致MR运行较慢。

采用CombineTextInputFormat来作为输入,解决输入端大量小文件场景。

Map阶段优化

增大环形缓冲区大小,由 100m 扩大到 200m

增大环形缓冲区溢写的比例,由 80%扩大到 90%

减少对溢写文件的 merge 次数(10 个文件,一次 20 个 merge)

不影响实际业务的前提下,采用 Combiner 提前合并,减少 I/O

Reduce阶段优化

合理设置 Map 和 Reduce 数:

两个都不能设置太少,也不能设置太多。太少,会导致 Task 等待,延长处理时间;太多,会导致 Map、Reduce 任务间竞争资源,造成处理超时等错误。

设置 Map、Reduce 共存:

调整 slowstart.completedmaps 参数,使 Map 运行到一定程度后,Reduce 也开始运行,减少 Reduce 的等待时间。

合理规避使用 Reduce,因为 Reduce 在用于连接数据集的时候将会产生大量的网络消耗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值