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提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分 ...
随机推荐
- OSS层基础:平台区分
#define PLATFORM_WINDOWS 1 #define PLATFORM_MAC 2 #define PLATFORM_UNIX 3 #if defined(_WIN32) #defin ...
- Android的5大组件
1. Activity组件 Activity组件通常的表现形式是一个单独的界面(screen).每个Activity都是一个单独的类,它扩展实现了Activity基础类.这个类显示为一个由Views组 ...
- Leetcode Distinct Subsequences
Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...
- bzoj3212 pku3468 A Simple Problem with Integers
一个有初值的数列.区间加.区间查 用线段树直接水过 然而并没有1A,主要是做题太快没看规模结果没注意线段树要用longlong建 卧槽怎么可以这么坑爹,害得我看见wa心慌了,还以为连线段树都要跪 一开 ...
- Redis的PHP操作手册(转)
String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-> ...
- ZeroMQ接口函数之 :zmq_z85_encode – 使用Z85算法对一个二进制秘钥进行加密,输出可打印的文本
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq-z85-encode zmq_z85_encode(3) ØMQ Manual - ØMQ/4. ...
- [canvas]利用canvas绘制自适应的折线图
前段时间学习了用canvas绘制折现图,且当画布变换大小,折现图会随之变化,现附上代码 <!DOCTYPE html> <html lang="en"> & ...
- C++的简单“五子棋”游戏,只是核心代码,资源代码未添加
ChessBoard.h #ifndef __CHESS_BOARD_H__ #define __CHESS_BOARD_H__ #include "DataStruct.h" # ...
- MySQL配置文件my.cnf 例子最详细翻译
转的 MySQL配置文件my.cnf 例子最详细翻译,可以保存做笔记用. #BEGIN CONFIG INFO#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载 ...
- 关于string.format() 转
string.format()函数用来生成具有特定格式的字符串,这个函数有两个参数,第一个参数为格式化串:由指示符和控制格式的字符组成.第二个参数是对应格式中每个代号的各种数据. 格式字符串可能包含以 ...