赞
踩
hadoop是一个分布式计算平台,能够允许使用编程模型在集群上对大型数据集进行分布式处理
hadoop的三大组件:HDFS(分布式文件存储平台)、MR(计算引擎)、YARN(资源调度平台)
特点:
高扩容:hadoop在集群间分发数据并完成数据计算,集群可以方便进行扩展节点
成本低:hadoop使用连接的机器组成集群来分发和处理数据,不依赖高端成本;
高效率:在集群中处理和分发数据,处理速度非常快;
可靠性:存储在hdfs上的数据文件,一般有多个备份,保证数据的可靠性;(数据备份)
hive(离线数据仓库):基于hdfs,结合类SQL引擎,底层执行MR任务,用于OLAP分析查询的数据仓库。
zookeeper(管理员): 分布式协调服务。就是为用户的分布式应用程序提供协调服务,如:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务等等。
kafka(消息通信中间件)
flume(日志传输组件):是一个分布式可靠的高可用的海量日志收集、聚合、移动的工具,通俗来说flume就是一个日志采集工具;
spark(批处理计算框架):是一个快速的,通用的集群计算系统。
flink(流处理计算框架)
HDFS:高容错、高可靠性、高可扩展性、高吞吐率的分布式文件存储系统,负责海量数据的存储;
YARN:资源管理调度系统,负责hadoop生态系统中任务的调度和监控;
MR:基于HDFS、YARN的分布式并行计算框架,负责海量数据的计算
只有NN重启的时候,editlogs才会合并到fsimage文件中,得到一个文件系统的最新快照,但是在NN工作很久以后,editlogs文件变得很大。导致NN的重启会花费很长时间,此时SNN的职责就是帮助editlogs合并到fsimage文件中。定时去获取NN去获取editlogs,并更新到自己的fsimage上,一旦有了新的fsimage,它将拷贝回NN中
DN:提供真实的文件数据的存储服务,以数据的形式存储HDFS文件,响应HDFS客户端的读写请求,周期性地向NN汇报心跳信息、数据块信息、缓存数据块信息
RM:负责整个集群资源的管理和调度,功能包括对ApplicationMaster的管理、NM的管理、Application管理等,负责整个集群中所有资源的统一管理和分配,并且接受来自各个节点的资源汇报信息;
NM:主要处理来自RM分配的任务,监测并且报告Container使用信息给RM;
JN:两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。
core-site.xml:配置Hadoop的核心参数,如文件系统默认方案、HDFS地址等。
hdfs-site.xml:配置HDFS的相关参数,如副本数量、数据块大小等。
mapred-site.xml:配置MapReduce相关参数,如作业跟踪器地址、任务分配器等。
yarn-site.xml:配置YARN相关参数,如资源管理器地址、节点管理器等。
hive-site.xml:如果需要使用Hive,则需要配置Hive的相关参数,如元数据存储位置、数据库连接等。
该流程是指在集群中,将正在运行的任务的状态信息和元数据信息保存在持久化存储中,以便在集群发生故障时候能够及时恢复任务;
若不适用HA,hadoop的checkpoint机制就是主节点的元数据备份机制,通过SN,每隔一段时间将NN的元数据更新并备份,然后返回给fsimage和NN,SNN会每隔默认60分钟,都会通知更新日志信息edits,以便后续元数据备份操作;
元数据是保存在内存当中的,这样容易丢失,NN的工作量巨大,管理众多DN,还要更新操作日志文件edits,还要将元数据信息序列化到本地,所以SNN就会开始代替NN完成元数据的保存工作
流程如下:
1、当一个任务开始执行时,Hadoop会周期性地将任务地状态信息和元数据信息写入到Checkpoint目录中。这些信息包括任务的进度、输入数据的位置、已经完成的工作等。
2、Checkpoint目录通常位于分布式文件系统(如HDFS)中,以保证数据的安全性和可靠性。
3、Hadoop还会在内存中保存一个Checkpoint ID,用于标识当前的Checkpoint。
4、在任务执行过程中,如果集群发生故障或节点失效,任务会停止执行。
5、当集群恢复正常后,Hadoop会检查Checkpoint目录中的状态信息和元数据信息,并根据Checkpoint ID找到最新的Checkpoint。
6、Hadoop会使用Checkpoint中的信息来恢复任务的执行状态,包括任务的进度、输入数据的位置等。
7、任务恢复完成后,Hadoop会继续执行任务,并从上次Checkpoint的位置继续处理数据,以确保不会重复执行已经完成的工作。
hadoop的块默认大小是128M,在hadoop1.和2.x版本默认为64M
原因:
文件块越大,寻址时间越短,但磁盘的传输时间越长。磁盘传输的时间会大于寻址时间,导致处理过程变慢,其次,MR中的map任务通常一次只处理一个块中的数据,块过大运行速度也会变慢;
文件块越小,寻址时间越长,但磁盘传输时间越短。存储小文件会占用NN中大量内存来存储元数据,管理效率变低;
default:默认的压缩格式
Gzip:可以减小文件的大小,但无法进行并行处理
Snappy:谷歌开发,具有很高的压缩和解压缩速度,压缩后文件较大
LZO:较快的压缩算法,可以在hadoop中实现高速压缩和解压缩,适用于大数据压缩
Bzip2:较高压缩比,速度较慢
LZ4:极快压缩速度,压缩比较低
前置基础:Container是yarn中资源的抽象,封装了某一个节点上一定量的cpu和内存资源
1、RM接收到一个作业请求后,给该作业生成唯一ApplicationID,并为该作业分配一个ApplicationMaster
2、RM将ApplicationID和ApplicationMaster的地址返回给客户端
3、客户端与ApplicationMaster的地址建立通信,发送资源请求
4、ApplicationMaster收到作业资源需求和启动命令,向RM申请资源
5、RM根据可用的资源情况为ApplicationMaster分配所需资源,将资源返回给ApplicationMaster
6、ApplicationMaster收到资源位置信息后,与NM通信,将作业所需的资源分配给具体的task
7、每个task会在独立的Container中运行,通过心跳机制汇报ApplicationMaster任务的情况
8、ApplicationMaster收到所有任务完成的信息,向RM注销自己
9、RM收到ApplicationMaster的注销请求后,将该作业从yarn状态存储中删除,释放相关资源
Combiner是在map阶段之后,reduce阶段之前,对map输出的中间数据进行本地合并和压缩,减少数据的传数量提高整体性能,可将相同的key的多个map输出结果进行合并,减少网络传输的数据量,降低reduce的负载,提高效率;
mapper端到reducer端的数量在应用combiner之后会减少,对输出的键值对进行压缩合并,减少数据量
序列化是将数据转换为字节流的过程,反序列化是将字节流重新转换成数据的过程
以保证数据在各个节点之间的传输过程中占据更少的磁盘容量
导致的问题
处理办法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。