Hadoop的核心组件和生态圈
1.hadoop核心组件—HDFS
■ HDFS的文件被分成块进行存储,块的默认大小128M,块是文件存储处理的逻辑单元
■ HDFS中有两类节点NameNode和DataNode:
NameNode是管理节点,存放文件元数据:(1)文件与数据块的映射表(2)数据块与数据节点的映射表。
DataNode是工作节点,存放数据块
SecondaryNameNode的职责是合并NameNode的edit logs到fsimage文件中
NameNode与DataNode有心跳检测,DataNode定期向NameNode发送心跳消息;SecondaryNameNode定期同步元数据映像文件和修改日志。
客户端从hdfs读取文件时的元数据访问流程,如下图:

客户端向hdfs中上传文件时的元数据访问流程,如下图:

SecondaryNameNode同步元数据映像文件和修改日志,如下图:

上面的这张图片展示了NameNode怎么把元数据保存到磁盘上的。这里有两个不同的文件:
1.fsimage - 它是在NameNode启动时对整个文件系统的快照
2.edit logs - 它是在NameNode启动后,对文件系统的改动序列
■ HDFS中数据管理与容错:对于最常见的 3 个复制块,分布在两个机架内的三个节点。第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。
■ HDFS的特点:
数据冗余,硬件容错
流式的数据访问(一次写入,多次读取,修改是删除之前块,写新块)
存储大文件
■ HDFS的适用性和局限性:
适合数据批量读写,吞吐量高
不适合交互式应用,低延迟很难满足
适合一次写入多次读取,顺序读写
不支持多用户并发写相同文件
■ HDFS实现思想和概念

■ HDFS简单使用:
hadoop fs -mkdir filetest #建立filetest文件夹
hadoop fs -ls #显示HDFS文件列表
hadoop fs -put hello.java filetest/ #将hello.java文件put到filetest目录下
hadoop fs -ls /user/hadoop/filetest #显示filetest目录下的文件
hadoop fs -cat filetest/hello.java #输出filetest目录下hello.java文件内容
hadoop fs -get filetest/hello.java hello2.java #将filetest目录下的hello.java获取到本地,命名为hello2.java
hadoop fs -rmr filetest # 删除filetest文件夹 hadoop dfsadmin -report #打印文件系统的信息

2.hadoop核心组件——MapReduce
■ MapReduce思想:分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)。Job,一个作业,被拆分成多个Task(MapTask、ReduceTask)

MapReduce只是分布式运算框架的一种实现,类似的框架还有很多,比如Storm(流式计算)、Spark(内存迭代计算)。MapReduce是离线批量计算,Storm、Spark是实时计算。
■ 在hadoop1.x中, MapReduce引擎由JobTrackers和TaskTrackers组成
JobTracker承担的任务有:接受任务、计算资源、分配资源、与DataNode进行交流 。
TaskTracker承担的任务有:从JobTracker接收并执行各种命令:运行任务、提交任务、杀死任务等;另一方面,将本地节点上各个任务的状态通过心跳周期性汇报给 JobTracker,这些信息包括两部分:机器级别信息(节点健康情况、资源使用情况等)、任务级别信息(任务执行进度、任务运行状态等)。
TaskTracker与JobTracker和Task之间采用了RPC协议进行通信
■ 在hadoop2.x中, MapReduce引擎由ResourceManager和NodeManaer组成. 这就是Yarn资源调度框架。 Yarn的基本思想是拆分资源管理的功能,作业调度/监控到单独的守护进程。
ResourceManager是全局的,负责对于系统中的所有资源有最高的支配权。ResourceManager有两个组件:调度器和应用程序管理器。
ApplicationMaster 每一个job有一个ApplicationMaster 。AppMaster负责向ResourceManager索要NodeManager执行任务所需要的资源容器,更具体来讲是ApplicationMaster负责从Scheduler申请资源,以及跟踪这些资源的使用情况以及任务进度的监控
NodeManager是基本的计算框架。NodeManager 是客户端框架负责 containers, 监控他们的资源使用 (cpu, 内存, 磁盘, 网络) 和上报给 ResourceManager/Scheduler.
为何要使用yarn?我们看到JobTracker的功能被分散到各个进程中包括ResourceManager和NodeManager:比如监控功能,分给了NodeManager,和Application Master。ResourceManager里面又分为了两个组件:调度器及应用程序管理器。Yarn重构后,JobTracker的功能,被分散到了各个进程中。同时由于这些进程可以被单独部署所以这样就大大减轻了单点故障,及压力。如下图,展示了yarn的工作流程及与hadoop1.x的区别:

3.hadoop生态圈
■ Hive:数据仓库与hql操作mr
■ pig:数据流语言,是hadoop轻量级封装,相对于它,hive是重量级
■ HBase: 基于列存储的nosql数据库,可以用于海量数据存储和实时查询
■ Sqoop:在数据库和HDFS之间高效传输数据的工具
■ Storm: 分布式实时计算,强调实时性,常用于实时性要求较高的地方
■ Spark:基于map reduce算法实现的分布式计算框架
拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法
Hadoop的核心组件和生态圈的更多相关文章
- 一篇了解大数据架构及Hadoop生态圈
一篇了解大数据架构及Hadoop生态圈 阅读建议,有一定基础的阅读顺序为1,2,3,4节,没有基础的阅读顺序为2,3,4,1节. 第一节 集群规划 大数据集群规划(以CDH集群为例),参考链接: ht ...
- 大数据之路week06--day07(Hadoop生态圈的介绍)
Hadoop 基本概念 一.Hadoop出现的前提环境 随着数据量的增大带来了以下的问题 (1)如何存储大量的数据? (2)怎么处理这些数据? (3)怎样的高效的分析这些数据? (4)在数据增长的情况 ...
- Hadoop的介绍、搭建、环境
HADOOP背景介绍 1.1Hadoop产生背景 HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严 ...
- hadoop 核心概念及入门
Hadoop Hadoop背景 什么是HADOOP HADOOP是apache旗下的一套开源软件平台HADOOP提供利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理,HADOOP的核 ...
- Hadoop(一) HADOOP简介
1. HADOOP背景介绍 1.1 什么是HADOOP HADOOP是apache旗下的一套开源软件平台 HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 H ...
- Hadoop学习之路(二)Hadoop发展背景
Hadoop产生的背景 1. HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题—— ...
- 大数据入门第五天——离线计算之hadoop(上)概述与集群安装
一.概述 根据之前的凡技术必登其官网的原则,我们当然先得找到它的官网:http://hadoop.apache.org/ 1.什么是hadoop 先看官网介绍: The Apache™ Hadoop® ...
- 1.0 Hadoop的介绍、搭建、环境
HADOOP背景介绍 1.1 Hadoop产生背景 HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了 ...
- HADOOP背景介绍
1. HADOOP背景介绍 1.1 什么是HADOOP 1. HADOOP是apache旗下的一套开源软件平台 2. HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分 ...
随机推荐
- UDP协议开发
UDP是用户数据报协议(User Datagram Protocol,UDP)的简称,其主要作用是将网络数据流量压缩成数据报形式,提供面向事务的简单信息传送服务.与TCP协议不同,UDP协议直接利用I ...
- Unity4.0的使用
最近公司用到了Unity,自己就研究了一下. 新建一个ASP.NET MVC基本项目,在NuGet上引入Unity4.0.1最新版. 因为我使用的项目为ASP.NET MVC,所以又添加一个Unity ...
- iOS 两行代码解决数据持久化
在实际的iOS开发中,有些时候涉及到将程序的状态保存下来,以便下一次恢复,或者是记录用户的一些喜好和用户的登录信息等等. 这就需要涉及到数据的持久化了,所谓数据持久化就是数据的本地保存,将数据从内存中 ...
- 基于RXTX的串口通讯 windows64位系统可用
项目地址 http://download.csdn.net/detail/xqshishen/7739539
- SRM 618 DIV1 500
非常棒的组合问题,看了好一会,无想法.... 有很多做法,我发现不考虑顺序的最好理解,也最好写. 结果一定是两种形式 A....A dp[n-1] A...A...A sgma(dp[j]*dp[ ...
- Updating My Notepad_1.1
The old version Notepad 1.0 you can get it from below link : My Notepad I am very happy to announce ...
- T4学习资料
网址:http://www.olegsych.com/2007/12/text-template-transformation-toolkit/
- CSV格式数据如何导入SqlServer?
一.使用微软数据库IDE管理软件:Microsoft SQL Server Management Studio 1.标准的CSV文件格式如下: 2.建数据表 3.在需要导入的数据库右键点击“任务”,选 ...
- 四种常见的 POST-------- content-type数据提交方式
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...
- C#中的简单工厂和单例
下面首先来说说简单工厂 举个例子: 首先是父类 public abstract class Pizza { public abstract string Info(); } } 子类 public c ...