Hadoop
SherlockCharlie
这个作者很懒,什么都没留下…
展开
-
Hadoop2.8.5 节点间的数据传输
数据节点 DataNode 在运行中会与三种对端有互动。第一种是 NameNode ,如前所述,对于数据块的存储地点,虽然最初是由 NameNode 分配和指定的,但相关的信息最终来自DataNode 的报告。第二种是用户的 App (包括 Shell ),用户的 App 可以存在于集群内的任何节点上,不过那是在独立的 JVM 上,即使与 DataNode 同在一个节点上也互相独立;然而真正把数据...原创 2019-01-31 10:49:48 · 1386 阅读 · 0 评论 -
Hadoop2.8.5 数据节点 DataNode
数据节点 DataNode 在 HDFS 文件系统中处于从属的地位, 但是其结构却比处于主导地位的查名节点 NameNode 更复杂。这是因为:虽然 NameNode 起着目录的作用,但是文件的内容却是存储在 DataNode 上的,读写文件时一旦知道了哪一个块在什么节点上,或者指定存放在什么节点上,下面就不需要 NameNode 的介入了。而块的存取,却是颇为复杂的操作。再说 NameNode ...原创 2019-01-30 10:45:39 · 1061 阅读 · 2 评论 -
Hadoop2.8.5 分布式文件系统HDFS
Hadoop的两大系统之一“HDFS”。所谓分布,是说整个文件系统的内容并非集中存储在一台或几台“文件服务器上”,而是分散在集群的不同节点上。理想的情景是集群内的每一台机器都承担着一些内容的存储。HDFS 是 Hadoop 集群的文件系统,这是一种分布( distributed )、容错( faulttolerant )的文件系统。对于大数据处理系统,文件系统之所以应该是分布式的,不再仅仅是因为容...原创 2019-01-29 13:52:19 · 447 阅读 · 0 评论 -
Hadoop2.8.5 MapReduce计算流程
上一篇我们从宏观的角度从作业认领到分发考察了MapReduce框架。今天我们来探究其内部,从宏观上说, MR 框架主要就是 Map 和 Reduce 这两个阶段。但是实际上远不是那么简单,这两个宏观的阶段都进一步划分成好几个更微观的阶段,前面提到过的排序(Sort )阶段为例, Mapper 的输出端有个由框架提供的局部排序阶段,而 Reducer 输入端的收取(Fetch )和合并( Mage ...原创 2019-01-14 09:22:16 · 516 阅读 · 0 评论 -
Hadoop2.8.5 MapReduce计算框架
Hadoop 中 YARN 子系统的使命是为用户提供大数据的计算框架。早期的Hadoop ,甚至早期的 YARN 都只提供一种计算框架,那就是 MapReduce。 Hadoop 后来有了一些新的发展,除 MapReduce 外又提供了称为 Chain 和 Stream 的计算框架,一来使用户不必非得用 Java 编程;二来更允许用户利用 Linux 上的 Utility 工具软件搭建更像“数据流...原创 2019-01-13 10:48:28 · 416 阅读 · 0 评论 -
Hadoop2.8.5 作业的投运
上一篇关于容器的投运是YARN调度在受理作业后分配一个容器并投运到NM节点上,在NM上建立一个 “ 项目组长 ”,该项目组长就是 MRAppMaster。也就是说RM只管到这一级。接下来的事情由 MRAppMaster来处理。根 据 ContainerLaunchContext 中的信息将作业分解为若干任务,例如 16 个 Mapper 、 1 个 Reducer ,不用 Co nbiner ,那...原创 2019-01-11 14:46:53 · 314 阅读 · 0 评论 -
Hadoop2.8.5 容器的投运
上一篇我们考察了YARN调度系统的容器周转和分配,RM受理作业后就为该作业分配容器,最后由发射架将容器发送到对岸的NodeManager上,现在我们来看NM收到容器后如何启动JVM并创建AM作为作业的领头人,之后的事情就交给了AM。今天我们就来考察容器投运到NM这一过程。为了投运一个作业,RM 首先得在某个NodeManag er 节点上启动一个进程作为这个作业的主管,扮演类似于项目组长那样的角色...原创 2019-01-10 14:58:42 · 544 阅读 · 0 评论 -
Hadoop2.8.5 容器的周转与分配
上一篇关于作业的受理中,RM端通过RMAppImpl类表示作业,通过调度策略将作业存储后尝试运行该作业,这个时候调度器将为作业分配容器。容器代表着整个系统的资源在RM端的分配形式。 allocate (),其实只是从这个列表中收揽已经分配的容器(RMContainer 对象),并为这些容器办理使用证件( NMToken 对象),然后一并打包成一个Alloc ation 对象。每当从 newlyAl...原创 2019-01-02 16:33:36 · 458 阅读 · 0 评论 -
Hadoop2.8.5 作业的受理
上一篇作业的提交最终流转到RMAppManager手中,RM节点上的ClientRMService对象相当于接待站,而RMApp Manager对象则专门管理与作业的申请和运行相关。两个对象均由 ResourceManager 创建,都在同一个 JVM 上。ClientRMService 是 通 过 调 用 rmAppManager. submitApplication ()把 作 业 申 请 交...原创 2019-01-01 10:25:43 · 399 阅读 · 0 评论 -
Hadoop2.8.5 作业的提交
Hadoop的RPC是以CS两端协议栈和协议引擎构成的,在查看作业的提交流程过程中我们总是从两端去看的,也即作业提交的Client端和作业接收的Service端。以此将作业的提交分为两个阶段。第一阶段是Client端,主要是作业的准备以及作业如何通过RPC协议与Service通讯。第二阶段是Service端如何接收和处理RPC协议请求。 Hadoop 在其历史上曾经提供了新、老两种 API ,此外...原创 2018-12-31 14:42:33 · 393 阅读 · 0 评论 -
Hadoop2.8.5 RPC 机制 二
由上一篇我们知道 Hadoop 是利用 ProtoBuf 和 Proxy 搭建起自己的 RPC 机制的。Hadoop 的 RPC 机制在 Client 一侧就是通过 Proxy 实现的。Proxy ,即“代理”,是 JDK 提供的一个类,可以说是专为RMI 定制的。Proxy 对象的创建一定是与 InvocationHandler 联系在一起的。InvocationHandler 是JDK 中定义...原创 2018-12-27 14:18:58 · 357 阅读 · 2 评论 -
Hadoop2.8.5 RPC机制 一
RPC 是“ RemoteProcedureCall ”即“远地过程调用”的缩写。这个机制的目的,是让一台机器上的程序能像调用本地的“过程”那样来调用别的机器上的某些过程。需要特别说明的是,RPC 并非针对远地的所有过程,并不是对远地所有的过程都可以随心所欲地通过 RPC 加以调用,而只能针对预先确定的某些过程,并且在程序上得有些准备和安排。RPC 交互的两方,总有一方是通信的主动发起方,也是某种...原创 2018-12-26 16:48:57 · 363 阅读 · 1 评论 -
Hadoop2.8.5 资源管理器(RM)
YARN调度使用状态机(StateMachine)来驱动,我们以RM(ResourceManager)为例来看状态机如何驱动其运行。作为YARN的框架核心管理者整个集群的计算资源,对 于 宿 主 机 而 言,执 行 着ResourceManager 的 Java 虚拟机是个独立的进程。用户每向这个 Hadoop 平台提交一个应用程序作业,即 App ,资源管理器就会设法在某个NM 节点上为其另起...原创 2018-12-18 16:07:18 · 1151 阅读 · 0 评论 -
Hadoop2.8.5 YARN状态机
YARN主节点RM受理用户提交的作业之后,创建AM并分配资源,然后密切注视着作业的进展。YARN的代码广泛使用着状态机(StateMachine),来调度处理走走停停粗粒度的作业流程。在此“有限状态机”模型中,一个宏观的过程被抽象成一台机器,其结构包括一组“状态”,一组触发规则和一组操作。从程序设计的角度看,定义一组状态和事件可以使用枚举(enum)类型,跳转规则使用一个表,或者一个结构数组,表的...原创 2018-12-17 16:01:49 · 555 阅读 · 0 评论 -
Hadoop2.8.5 集群拓扑
Hadoop运行在多机集群上时,每台机器都成为集群的一个节点(Node),节点之间连成一个局域网,一般是二层交换机(Switch),也可能是三层交换机。集群内的节点之间可以通过 IP 地址通信,也可以通过节点的域名即 URL 通信,这就需要有 DNS ,这意味着,在网络可以通达的某处存在着 DNS 服务,因而可以根据对方的URL 查到其 IP 地址。这也意味着,集群内这些节点都应有个域名,并且登记...原创 2018-12-17 11:28:26 · 2095 阅读 · 0 评论 -
Hadoop2.9.2 源码编译
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。该项目包括以下模块:...原创 2018-11-29 14:53:36 · 1266 阅读 · 3 评论