不二人生
刀光剑影江湖情,摧枯拉朽浪滔滔。功名利禄拂衣去,山高水远路迢迢。一个上得了厅堂下得了厨房、左手写诗右手写词的男人
展开
-
Hadoop系列之MapReduce序列化(36)
MapReduce 序列化序列化序列化就是把内存中的对象转换成字节序列,以便于存储到磁盘(持久化)和网络传输反序列化就是将接收到的字节序列或磁盘的持久化数据,转换成内存中的对象一般来说,“活的”对象只生存在内存里,关机断电就没有了;而且“活的”对象只能由本地的进程使用,不能被发送到网络上的另外一台计算机;然而序列化可以存储“活的”对象,可以将“活的”对象发送到远程计算机hadoop 的序列化Java的序列化时一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信原创 2022-05-02 11:45:28 · 22000 阅读 · 0 评论 -
Hadoop系列之资源调度 Yarn 重启策略和高可用 (35)
重启ResourceManager是管理资源和调度在YARN上运行的应用程序的中央机构。因此,它在整个Apache YARN群集中有潜在单点故障风险。本文档概述了ResourceManager重新启动,此功能可以增强ResourceManager使其在重新启动后仍能正常运行,并且还可以使用户感知不到ResourceManager的重启。ResourceManager 支持两种重启策略不保留工作的RM重新启动,此重新启动增强了RM,以将应用程序/尝试程序 状态和其他凭据信息保留在可插拔状态存储中。 RM将原创 2021-03-06 13:17:28 · 39283 阅读 · 1 评论 -
Hadoop系列之资源调度 Yarn Scheduler (34)
理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源。在Yarn中,负责给应用分配资源的就是Scheduler。其实调度本身就是一个难题,很难找到一个完美的策略可以解决所有的应用场景。为此,Yarn提供了多种调度器和可配置的策略供我们选择。YARN架构如下:ResourceManager(RM):负责对各NM上的资源进行统一管理和调度,将AM分配空闲的Container运行并监控其运行状原创 2021-02-23 08:27:22 · 38665 阅读 · 0 评论 -
Hadoop系列之资源调度 Yarn基础架构篇(33)
一、yarn的概述Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管理器系统,Yarn从hadoop 2引入,最初是为了改善MapReduce的实现,但是它具有通用性,同样执行其他分布式计算模式。在MapReduce1中,具有如下局限性:1、扩展性差:jobtracker兼顾资源管理和作业控制跟踪功能跟踪任务,启动失败或迟缓的任务,记录任务的执行状态,维护计数器),压力大,成为系统的瓶颈2、可靠性差:采用了master/slave结原创 2021-02-23 08:24:38 · 38632 阅读 · 2 评论 -
Hadoop系列之 MapReduce 性能优化(32)
MapReduce 性能优化对 MapReduce 作业进行性能调优,需要从 MapReduce 的原理出发。下面来重温一下 MapReduce 原理,并对各个阶段进行做相应优化。Map阶段读数据从HDFS读取数据读取数据产生多少个 Mapper?Mapper 数据过大的话,会产生大量的小文件,由于 Mapper 是基于虚拟机的,过多的 Mapper 创建和初始化及关闭虚拟机都会消耗大量的硬件资源。Mapper 数量由什么决定?Mapper 的数量由下面三个因素决定:(1)输入文件数目(原创 2021-02-21 16:13:57 · 38350 阅读 · 0 评论 -
Hadoop系列之MapReduce 计数器(31)
MapReduce 计数器计数器是收集作业统计信息的有效手段之一,用于质量控制或者应用级统计。计数器还可用于辅助诊断系统故障。如果需要将日志信息传输到 map 或 reduce 任务,更好的方法通常是看能否用一个计数器值来记录某一特定事件的发生。对于大型分布式作业而言,使用计数器更加方便。除了因为获取计数器值比输出日志更方便,还有根据计数器值统计特定事件的发生次数要比分析一堆日志文件容易的多。计数器分类MapReduce 计数器可以分成两大类:内置计数器用户自定义计数器下面详细讨论一下这两大原创 2021-02-21 16:12:27 · 38363 阅读 · 0 评论 -
Hadoop系列之MapReduce 推测执行 (30)
MapReduce 推测执行Hadoop 并不会尝试诊断或者修复执行缓慢的任务,相反,在一个任务运行比预期慢的时候,它会尽量检测,并启动另一个相同的任务作为备份。这就是所谓的任务的 “推测执行”什么是推测执行让我们首先理解一下,什么是 Hadoop 推测执行。在 Hadoop 中,MapReduce 把作业分解成多个任务,为了减少作业的整体运行时间,这些任务会被并行执行,这使得作业的运行时间对运行缓慢的任务很敏感,因为这些运行缓慢的任务会增加作业的整体运行时间。任务执行缓慢可能有多种原因,比如硬原创 2021-02-21 08:29:30 · 38175 阅读 · 0 评论 -
Hadoop系列之MapReduce 数据本地化 (29)
MapReduce 数据本地化数据本地化是指把计算移动到数据所在节点上进行执行的过程,也就是通常所说的 “移动计算而不是移动数据”。移动计算比移动数据具有更大的优势,它可以降低网络开销,增加系统的整体吞吐量。数据本地化的概念让我们来理解一下数据本地化的概念,以及什么 MapReduce 数据本地化。Hadoop 主要的缺点是跨交换网络传输巨量的数据。为了克服这个缺点,Hadoop 提出了数据本地化概念。数据本地化的指的是把计算移动到尽可能离数据近的地方执行,因为移动计算比移动巨量数据要更高效,它可以原创 2021-02-20 08:32:29 · 38979 阅读 · 0 评论 -
Hadoop系列之MapReduce InputSplit 与 HDFS块(28)
MapReduce InputSplit 与 HDFS 块InputSplit 即数据分片,HDFS 块(block)即分布式存储系统的数据块概念。下面详细介绍这两个概念的区别和联系。HDFS 块与 InputSplitHDFS 块块是硬盘上存储数据的一个连续位置。通常,文件系统将数据存储成块的集合。同样的方式,HDFS 以块的方式存储文件。Hadoop 应用程序负责在多个节点分配数据块。InputSplitInputSplit 即我们所说的数据分片,一个单独的 mapper 处理的数据由 In原创 2021-02-20 08:30:45 · 38433 阅读 · 0 评论 -
Hadoop系列之MapReduce OutputFormat(27)
MapReduce OutputFormatHadoop OutputFormat 负责检验 job 的输出规范,RecordWriter 把输出数据写到输出文件的具体实现就是由 OutputFormat 决定的。Hadoop Outputformat在开始学习 MapReduce 框架的 OutputFormat 之前,让我们先来看一下 RecordWriter ,以及它在 MapReduce 框架起到什么样的作用。Hadoop RecordWriter我们知道,Reducer 以 mappe原创 2021-02-16 20:14:25 · 37827 阅读 · 0 评论 -
Hadoop系列之MapReduce Partitioner(26)
MapReduce PartitionerMapReduce Partitioner 是用来对 mapper 输出的数据进行分区的。partitioner 通过哈希函数对 Key 或者 Key 的子集求哈希值,哈希值相同的键值对将在同一个分区里面。分区的数量取决于 reduce 任务的数量。下面对 MapReduce Partitioner 详细介绍。MapReduce Partitioner在开始学习 MapReduce Partitioner 之前,你需要先理解一下 mapper、reducer原创 2021-02-16 20:09:29 · 38053 阅读 · 0 评论 -
Hadoop系列之MapReduce RecordReader(25)
MapReduce RecordReader为了理解 MapReduce 框架的 RecordReader 原理,首先得搞清楚 Hadoop 的数据流程。下面我来了解一下 Hadoop 里面的数据流程是怎样的。Hadoop RecordReader 简介MapReduce 有一个简单数据处理模型,map 和 reduce 函数的输入数据和输出数据都必须是键值对(key-value pairs)。Hadoop MapReduce 的 map 和 Reduce 函数具有以下通用的形式:map:(K1原创 2021-02-05 08:19:03 · 38040 阅读 · 0 评论 -
Hadoop系列之MapReduce InputSplit(24)
MapReduce InputSplitHadoop InputSplitInputSplit 是数据的一种逻辑表示,即我们所说的文件的数据分片。每个分片由一个 mapper 处理,当然,mapper 并非直接对数据分片进行处理,在 mapper 处理数据分片之前,数据分片会被转换成记录,即键值对。mapper 直接操作键值对。MapReduce InputSplit 的长度是以字节来度量的,每个 InputSplit 都有相应的存储位置(主机名称)。MapReduce 利用分片存储位置,把 map原创 2021-02-05 08:18:18 · 37892 阅读 · 0 评论 -
Hadoop系列之MapReduce InputFormat(23)
MapReduce InputFormatHadoop InputFormat 会检查作业的数据输入规范,它把输入文件分割成 InputSplit 分片,并发送给 Mapper。Hadoop InputFormat输入文件的分片和读取是由 InputFormat 定义的。InputFormat 主要负责创建数据分片,并把它转换成记录(即键值对),如果你还不熟悉 MapReduce 作业的工作原理,请参考 MapReduce 工作原理。MapReduce 任务处理的数据是存储在输入文件的,而输入文件原创 2021-02-02 10:04:33 · 38021 阅读 · 0 评论 -
Hadoop系列之MapReduce 键值对(22)
MapReduce 键值对Apache Hadoop 主要用于数据分析,我们利用数据分析里面的统计和逻辑技术来描述,说明和评估数据。Hadoop 可以用来处理机构化,非结构化和半结构化数据。在使用 Hadoop 的时候,当模式是静态的时候,我们可以直接使用模式的列,如果模式是非静态的,就不能用列的,因为没有列的概念了,只能使用键和值来处理数据。键和值并非是数据的固有属性,它只是在对数据做分析时人为选择的一种策略。MapReduce 是 Hadoop 的核心组件,主要用于数据处理。Hadoop MapRe原创 2021-02-02 10:03:51 · 40206 阅读 · 2 评论 -
Hadoop系列之MapReduce的Mapper(21)
MapReduce Mapperhadoop mapper 任务主要负责处理每个输入记录,并生成一个新 键值对,这个 键值对跟输入记录是完成不一样的。mapper 任务的输出数据由这些 键值对组成的集合。在 mapper 任务把数据写到本地磁盘之前,数据会被按 key 进行分区并排序,分区的目的是要把 key 相同的值聚集在一起。MapReduce 框架为每个 InputSplit(数据分片)生成一个 map 任务,这里的 InputSplit 是由 InputFormat 生成的。mapper 只会原创 2021-02-01 08:43:52 · 38546 阅读 · 0 评论 -
Hadoop系列之MapReduce工作原理(20)
MapReduce 工作原理本节主要详细介绍 MapReduce 的工作原理。核心组件上面这个流程图已经把 MapReduce 的工作过程说的很清楚了,下面我们来一个一个拆解一下。输入文件首先,MapReduce 任务的目的是处理数据,那数据从哪里来?一般一个 MapReduce 任务的输入数据是来自于 HDFS 文件,这里的数据文件就叫做 MapReduce 任务的输入文件,而 HDFS 上文件的格式多种多样,比如有文本文件,二进制文件等。InputFormatInputFormat 是原创 2021-01-30 09:59:46 · 38092 阅读 · 0 评论 -
Hadoop系列之MapReduce初识(19)
MapReduce初识MapReduce 是 Hadoop 生态下面的计算层,它把任务分割成小任务并分发到集群的机器上并行执行。您只需要按照 MapReduce 提供的编程接口开发业务逻辑代码即可,剩下的事情 MapReduce 框架会自动完成。比如,任务分割,任务分发等。MapReduce 程序具有函数式风格,输入是数据列表,输出依然是数据列表。MapReduce 是 Hadoop 的核心。Hadoop 如此强大就是因为 MapReduce 的并行处理能力。了解 Hadoop MapReduceMa原创 2021-01-30 09:57:16 · 38087 阅读 · 0 评论 -
Hadoop系列之HDFS 纠删码(18)
HDFS 纠删码Hadoop HDFS 纠删码已经克服了之前使用的数据块多副本策略的限制,它具有和多副本策略相同的容错效果,但需要的存储空间却少很多。使用纠删码技术可以减少 50% 的存储空间。HDFS 副本策略的问题HDFS 为了数据容错,在存储的时候回,每个数据块会被复制3次。为了防止由于 Datanode 发生故障带来数据丢失,这是一种简单且健壮的方式。利用本地存储多个数据块副本的方式,还可以减轻 MapReduce 任务或者其他计算任务的负担。但数据块复制技术的开销比较大,3个副本就需要 20原创 2021-01-28 08:47:41 · 38820 阅读 · 0 评论 -
Hadoop系列之HDFS 磁盘均衡(17)
HDFS 磁盘均衡HDFS 磁盘均衡器HDFS 提供了一个用于 Datanode 内多磁盘之间的数据均衡工具,即 Diskbalancer (磁盘均衡器),它把数据均衡的分发到一个 Datanode 下的多个磁盘。Diskbalancer 和 Hadoop 2.0 版本以前提供的 Balancer 不同,因为 Balancer 关心的是不同 Datanode 之间的数据均衡,Datanode 内多个磁盘的数据均衡它是不起作用的。HDFS 由于以下原因,在把数据存储到 Datanode 多个磁盘的时候,原创 2021-01-26 08:49:40 · 39253 阅读 · 0 评论 -
Hadoop系列之HDFS Federation(联邦机制) (16)
HDFS Federation(联邦机制)HDFS Federation 中文意思为 HDFS 联盟或者 HDFS 联邦。这里并非指多个集群,更准确的应该是一个集群有多个命名空间,即多个 Namenode。Hadoop 1.0 HDFS 架构Hadoop HDFS 有两个主要的分层:HDFS包含两个层次:命名空间管理(Namespace) 和 块/存储管理(Block Storage)。命名空间管理(Namespace)HDFS的命名空间包含目录、文件和块。命名空间管理是指命名空间支持对HDF原创 2021-01-26 08:43:38 · 39059 阅读 · 1 评论 -
Hadoop系列之HDFS Namenode 高可用(15)
HDFS Namenode 高可用在 Hadoop 2.0.0 之前,一个集群只有一个Namenode,这将面临单点故障问题。如果 Namenode 机器挂掉了,整个集群就用不了了。只有重启 Namenode ,才能恢复集群。另外正常计划维护集群的时候,还必须先停用整个集群,这样没办法达到 7 * 24小时可用状态。Hadoop 2.0 及之后版本增加了 Namenode 高可用机制,下面详细介绍。Hadoop Namenode 高可用架构Hadoop 2.0 克服了 Namenode 单点故障问题原创 2021-01-25 08:51:10 · 39395 阅读 · 0 评论 -
Hadoop系列之HDFS 高可用与容错(14)
HDFS 高可用与容错HDFS 是一个分布式文件系统,它会给文件创建副本并把副本分发到集群的节点上,因此,在读取数据的时候可以从多个节点上读取。这对数据的容错是非常有益的,在读取的时候,节点挂了,可以去其他节点读取相同的数据。HDFS 就是通过这种方式实现了数据的高可用和容错。HDFS 如何实现高可用一个 HDFS 集群一般有很多 Datanode 节点,并且会定期给 Namenode 发送心跳信息,如果 Namenode 在规定时间内没接收到 Datanode 的心跳信息,那么它就会认为该 Dat原创 2021-01-25 08:49:49 · 39412 阅读 · 1 评论 -
Hadoop系列之HDFS机架感知(13)
HDFS 机架感知客户端向 Namenode 发送写请求时,Namenode 为这些数据分配 Datanode 地址,HDFS 数据块副本的放置对于系统整体的可靠性和性能有关键性影响。一个简单但非优化的副本放置策略是,把副本分别放在不同机架,甚至不同IDC,这样可以防止整个机架,甚至整个IDC崩溃带来的数据丢失,但是这样文件写必须在多个机架之间、甚至IDC之间传输,增加了副本写的代价,是否有较优的方案来解决这个问题呢?机架感知是什么告诉 Hadoop 集群中哪台机器属于哪个机架。那通过什么方式告知呢原创 2021-01-24 12:44:58 · 38204 阅读 · 0 评论 -
Hadoop系列之HDFS 数据块(12)
HDFS 数据块要把大文件存储在 HDFS上,HDFS 会把大文件分割成小块,即我们通常说的数据块( block ),它是 Hadoop 分布式文件系统最小的存储单元,而且我们没办法决定指定块的存储节点地址,这些 Namenode 会替我们决定。数据块默认大小是 128MB,比操作系统里面的块概念要大很多(操作系统块大小是 4KB ),我们可以根据实际需求修改 HDFS 块大小。文件的所有数据块大小都是一样的,除了最后一个,它可能小于块大小或者刚好等于块大小。文件会被分割成若干个 128MB 的小数据块,原创 2021-01-24 12:43:43 · 40174 阅读 · 0 评论 -
Hadoop系列之HDFS 常用命令(11)
HDFS 常用命令本节主要介绍 HDFS 常用命令,HDFS 命令和 Linux Shell 命令比较相似。每个命令将结合实例进行说明。version查看 Hadoop 版本。格式:version示例:hdfs dfs versionmkdir创建 HDFS 文件系统目录。格式:mkdir <path>示例:hdfs dfs -mkdir /user/dir1ls类似 Linux Shell 的 ls 命令。用它可以列出指定目录下的所有文件。格式:ls <原创 2021-01-24 12:42:57 · 39805 阅读 · 0 评论 -
Hadoop系列之HDFS数据读写流(10)
HDFS 数据读写流程HDFS 是 Hadoop 生态里面的数据存储层,它是一个具有容错性的非常可靠的分布式文件系统。HDFS 以主从( Master / Slave )架构的方式工作,Namenode 是 Master 节点上的守护进程,而 Datanode 是 Slave 节点上的守护进程。如果需要使用 HDFS 需要先按照 Hadoop,可按照下面教程安装。Ubuntu 安装 Hadoop 2.0(伪分布式)Ubuntu 安装 Hadoop 2.0(分布式)本教程将详细介绍 HDFS 数原创 2021-01-23 11:26:38 · 39161 阅读 · 2 评论 -
Hadoop系列之HDFS 架构(9)
HDFS 架构Hadoop HDFS是一个主从(Master / Slave)架构,其中Master是Namenode节点,它主要用来存储元数据,Slave是Datanode节点,用来存储实际业务数据的节点。HDFS架构用一个Namenode和多个Datanode组成。下面详细介绍HDFS里面的各个部分。HDFS NameNodeNamenode其实就是Master节点,它主要用来存储元数据,比如数据块的数量,副本和其他细节。这些元数据是存储在Master节点的内存里面的,因为要保证元数据的快速查原创 2021-01-22 09:01:43 · 39620 阅读 · 0 评论 -
Hadoop系列之HDFS 简介(8)
HDFS 简介本节我们开始介绍Hadoop生态里面的其中一个组件——HDFS,包括HDFS架构,数据是怎么在HDFS存储的,HDFS的特性,比如分布式存储、容错性,高可用,可靠性以及块概念等。另外还会涉及到HDFS的操作,比如如何从HDFS读写数据,还有HDFS的机架感知算法介绍。HDFS(Hadoop Distribute File System)是大数据领域一种非常可靠的存储系统,它以分布式方式存储超大数据量文件,但它并不适合存储大量的小数据量文件。Hadoop HDFS是Hadoop和其他组件的数原创 2021-01-22 09:00:46 · 39369 阅读 · 2 评论 -
Hadoop系列之Hadoop3.x 新特性(7)
Hadoop 3.x 新特性相对于之前主要生产发布版本 Hadoop 2,Apache Hadoop 3 整合许多重要的增强功能。 Hadoop 3 是一个可用版本,提供了稳定性和高质量的 API,可以用于实际的产品开发。最低 Java 版本要求从 Java7 变为 Java8,所有 Hadoop 的 jar 都是基于 Java 8 运行是版本进行编译执行的,仍在使用Java 7或更低Java版本的用户需要升级到Java 8。下面简要介绍一下Hadoop3的主要变化。HDFS 支持纠删码(erasur原创 2021-01-21 13:40:00 · 39923 阅读 · 0 评论 -
Hadoop系列之Hadoop分布式缓存(6)
Hadoop 分布式缓存什么是 Hadoop 分布式缓存分布式缓存是 Hadoop MapReduce 框架提供的一种数据缓存机制。它可以缓存只读文本文件,压缩文件,jar包等文件。一旦对文件执行缓存操作,那么每个执行 map/reduce 任务的节点都可以使用该缓存的文件。分布式缓存的优点存储复杂的数据它分发了简单、只读的文本文件和复杂类型的文件,如jar包、压缩包。这些压缩包将在各个slave节点解压。数据一致性Hadoop分布式缓存追踪了缓存文件的修改时间戳。然后当job在执行时,它原创 2021-01-21 13:39:09 · 39306 阅读 · 0 评论 -
Hadoop系列之Hadoop任务调度器(5)
Hadoop 任务调度器Hadoop 是一个可以高效处理大数据量的分布式集群,并且支持多用户多任务执行。在 Hadoop1.0 版本有一个调度器是集成在 JobTracker 里面,对于传统的 Hadoop 批处理任务(日志挖掘、Web 页面索引),这种调度器是比较合适的,但这种调度器并不具备可扩展性。在Hadoop早期版本是以一种比较简单的方式对任务进行调度的,即FIFO调度器,它是按任务的提交顺序来调度任务的,并且可以使用 mapred.job.priority 配置或者利用 JobClient 的原创 2021-01-20 09:44:23 · 39733 阅读 · 0 评论 -
Hadoop系列之Hadoop 高可用(4)
Hadoop 高可用在Hadoop 2.0以前的版本,NameNode面临单点故障风险(SPOF),也就是说,一旦NameNode节点挂了,整个集群就不可用了,而且需要借助辅助NameNode来手工干预重启集群,这将延长集群的停机时间。而Hadoop 2.0版本支持一个备用节点用于自动恢复NameNode故障,Hadoop 3.0则支持多个备用NameNode节点,这使得整个集群变得更加可靠。什么是 Hadoop 高可用Hadoop 2.0版本支持一个备用节点用于自动恢复NameNode故障,Hado原创 2021-01-20 09:42:42 · 39262 阅读 · 0 评论 -
Hadoop系列之Hadoop 常用命令(3)
Hadoop 常用命令所有的 Hadoop 命令均由 bin/hadoop 脚本引发。不指定参数运行hadoop脚本会打印所有命令的描述。用法:hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]Hadoop 有一个选项解析框架用于解析一般的选项和运行类。命令选项描述—config confdir覆盖缺省配置目录。缺省是${HADOOP_HOME}/conf。GENERIC_OPT原创 2021-01-20 09:41:36 · 39278 阅读 · 0 评论 -
Hadoop系列之Hadoop工作原理(2)
在大数据领域,Hadoop 已经成为一种流行的解决方案。Hadoop 的设计考虑到了很多方面,比如故障容错性,海量数据处理,数据本地化,跨异构硬件和软件平台的可移植性等等。本节课程详细介绍了 Hadoop 的3个重要的组件。原创 2021-01-19 14:14:40 · 39703 阅读 · 0 评论 -
Hadoop系列之什么是Hadoop(1)
Hadoop 是使用 Java 编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache 的开源框架。 Hadoop 框架应用工程提供跨计算机集群的分布式存储和计算的环境。 Hadoop 是专为从单一服务器到上千台机器扩展,每个机器都可以提供本地计算和存储。Hadoop 可以用单节点模式安装,但是只有多节点集群才能发挥 Hadoop 的优势,我们可以把集群扩展到上千个节点,而且扩展过程中不需要先停掉集群。原创 2021-01-19 14:03:39 · 39574 阅读 · 1 评论