Hadoop源码分析一架构关系简介
1、 简介
Hadoop是一个由Apache基金会所开发的分布式系统基础架构
Hadoop起源于谷歌发布的三篇论文:GFS、MapReduce、BigTable。其中GFS是谷歌的分布式文件存储系统,MapReduce是基于这个分布式文件存储系统的一个计算框架,BigTable是一个分布式的数据库。hadoop实现了论文GFS和MapReduce中的内容,Hbase的实现了参考了论文BigTable。
2、 hadoop架构
hadoop主要有三个组件
HDFS、YARN和MapReduce。其中YARN是hadoop2.x版本推出的。本文基于hadoop2.7.6分析。
HDFS是基于谷歌的GFS实现的,它是一个分布式的文件系统。YARN是一个资源管理系统,主要负责管理集群内的cpu和内存等资源,为MapReduce等计算任务分配资源。MapReduce即上文提到的计算框架。
hadoop的这三个组件间的关系如下图:
在hadoop1.x中YARN和MapReduce是集成在一起的,没有单独的资源管理,MapReduce执行时需要的资源由其自身的服务来确定。在2.x版本后将资源管理独立了出来,将资源管理和计算进行解耦合,使得大数据的其他计算框架也可以使用hadoop的资源管理系统。这样可以保证集群内的资源的统一调配。
3、 源码分析思路
在分析hadoop之前需要配置部署一个hadoop平台
然后先从hdfs开始分析,hdfs是yarn和MapReduce的根基。
hdfs是一个文件系统,它涉及的角色较多,主要会先从namenode开始解析,namenode属于hdfs的中心节点,hdfs的所有角色都与其有交互。
解析namenode,首先需要解析其启动过程,namenode的启动过程较为复杂,与其他角色也有交互,所以在这个过程中也会解析其他的角色与节点。
然后使用一个文件的上传与下载,来解析hdfs的文件操作。
解析完了hdfs之后在继续解析yarn和MapReduce,因为者两个原本就是在一起协同工作的,所以解析这两个的时候需要一起解析。解析yarn和MapReduce的时候,使用一个MapReduce程序,以其在整个框架中的执行流程来分析这个两个框架。
以上就是Hadoop源码分析一架构关系简介的详细内容,本系列下一篇文章传送门Hadoop源码分析二安装配置过程详解
后续Hadoop源码分析系列文章的资料请持续关注我们!
相关推荐
-
Hadoop 使用IntelliJ IDEA 进行远程调试代码的配置方法
一 .前言 昨天晚上遇到一个奇葩的问题, 搞好的环境DataNode启动报错. 报错信息提示的模棱两可,没办法定位原因. 办法,开启远程调试- 注意 : 开启远程调试的代码,必须与本地idea的代码必须保持一致. 二 .服务器端配置 2.1. 设置启动远程debug端口 修改 服务器上的配置文件 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh 增加 环境变量即可. 组件 环境变量设置 NameNode export HADOOP_NAMENODE_OPTS="-a
-
Hadoop源码分析四远程debug调试
1. hadoop远程debug 从文档(3)中可以知道hadoop启动服务的时候最终都是通过java命令来启动的,其本质是一个java程序.在研究源码的时候debug是一种很重要的工具,但是hadoop是编译好了的代码,直接在liunx中运行的,无法象普通的程序一样可以直接在eclipse之类的工具中直接debug运行. 对于上述情况java提供了一种远程debug的方式. 这种方式需要在java程序启动的时候添加以下参数: -agentlib:jdwp=transport=dt_socket
-
Hadoop源码分析二安装配置过程详解
目录 1. 创建用户 2. 安装jdk 3. 修改hosts 4. 配置ssh免密登录 5. 安装zookeeper 解压: 修改配置文件 修改内容如下: 配置环境变量 启动 6. 安装hadoop 对于三台节点的配置安排如下: 解压: 修改配置文件: 修改core-site.xml 配置hdfs-site.xml 配置mapred-site.xml 配置yarn-site.xml 配置slaves 7. 初始化 在初始化前需要将所有机器都配置好hadoop (1) 启动zookeeper (2
-
Hadoop源码分析三启动及脚本剖析
1. 启动 hadoop的启动是通过其sbin目录下的脚本来启动的.与启动相关的叫脚本有以下几个: start-all.sh.start-dfs.sh.start-yarn.sh.hadoop-daemon.sh.yarn-daemon.sh. hadoop-daemon.sh是用来启动与hdfs相关的服务的 yarn-daemon.sh是用来启动和yarn相关的服务 start-dfs.sh是用来启动hdfs集群的 start-yarn.sh是用来启动yarn集群 start-all.sh是用
-
Hadoop源码分析一架构关系简介
1. 简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构 Hadoop起源于谷歌发布的三篇论文:GFS.MapReduce.BigTable.其中GFS是谷歌的分布式文件存储系统,MapReduce是基于这个分布式文件存储系统的一个计算框架,BigTable是一个分布式的数据库.hadoop实现了论文GFS和MapReduce中的内容,Hbase的实现了参考了论文BigTable. 2. hadoop架构 hadoop主要有三个组件 HDFS.YARN和MapReduce.其
-
Hadoop源码分析五hdfs架构原理剖析
目录 1. hdfs架构 如果在hadoop配置时写的配置文件不同,启动的服务也有所区别 namenode的下方是三台datanode. namenode左右两边的是两个zkfc. namenode的上方是三台journalnode集群. 2. namenode介绍 namenode作为hdfs的核心,它主要的作用是管理文件的元数据 文件与块的对应关系中的块 namenode负责管理hdfs的元数据 namenode的数据持久化,采用了一种日志加快照的方式 最后还会有一个程序读取这个快照文件和日
-
Hadoop源码分析六启动文件namenode原理详解
1. namenode启动 在本系列文章三中分析了hadoop的启动文件,其中提到了namenode启动的时候调用的类为 org.apache.hadoop.hdfs.server.namenode.NameNode 其main方法的内容如下: public static void main(String argv[]) throws Exception { if (DFSUtil.parseHelpArgument(argv, NameNode.USAGE, System.out, true)
-
openstack云计算keystone架构源码分析
目录 keystone架构 Keystone API Router Services (1) Identity Service (2) Resource Service (3) Assignment Service (4) Token Service (5) Catalog Service (6) Policy ServicePolicy Service Backend Driver keystone管理这些概念的方法 keystone-10.0.0代码结构展示 keystone服务启动 key
-
Flink部署集群整体架构源码分析
目录 概览 部署模式 Application mode 客户端提交请求 服务端启动&提交Application session mode Cluster架构 Cluster的启动流程 DispatcherResourceManagerComponent Runner代码 HA代码框架 总结 概览 本篇我们来了解Flink的部署模式和Flink集群的整体架构 部署模式 Flink支持如下三种运行模式 运行模式 描述 Application Mode Flink Cluster只执行提交的整个job
-
java并发之AtomicInteger源码分析
问题 (1)什么是原子操作? (2)原子操作和数据库的ACID有啥关系? (3)AtomicInteger是怎么实现原子操作的? (4)AtomicInteger是有什么缺点? 简介 AtomicInteger是java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作. 还记得Unsafe吗?点击链接直达[java Unsafe详细解析] 原子操作 原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何
-
使用dynamic-datasource-spring-boot-starter实现多数据源及源码分析
简介 前两篇博客介绍了用基本的方式做多数据源,可以应对一般的情况,但是遇到一些复杂的情况就需要扩展下功能了,比如:动态增减数据源.数据源分组,纯粹多库 读写分离 一主多从.从其他数据库或者配置中心读取数据源等等.其实就算没有这些需求,使用这个实现多数据源也比之前使用AbstractRoutingDataSource要便捷的多 dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器. github: https://g
随机推荐
- JS实现一个按钮的方法
- vue.js路由跳转详解
- iOS中 UIImage根据屏宽调整size的实例代码
- JS如何实现文本框随文本的长度而增长
- ASP.NET MVC从控制器传递数据到视图的四种方式详解
- php实现以只读方式打开文件的方法
- Twig模板引擎用法入门教程
- Android开发之获取短信验证码后按钮背景变化并且出现倒计时
- 禁止mysql做域名解析(解决远程访问mysql时很慢)
- Win7安装和配置Apache2.4服务器的详细方法
- JQuery悬停控制图片轮播——代码简单
- 微信小程序 Buffer缓冲区的详解
- C++获取本机登陆过的QQ号码示例程序
- JS 树形递归实例代码
- asp.net中oracle 存储过程(图文)
- javascript 动态生成css代码的两种方法
- 对Java的面对对象编程中对象和引用以及内部类的理解
- C++俄罗斯方块游戏 无需图形库的俄罗斯方块
- C#的File类实现文件操作实例详解
- 经典排序算法之冒泡排序(Bubble sort)代码