hadoop 初探之第二篇(杂谈)
NameNode:名称节点,主要功能在于实现保存文件元数据,这些元数据直接保存在内存中,为了保证元数据的持久性,而也会周期性的同步到磁盘上去。磁盘上的数据通常被称为元数据的映像数据 image file
以防万一,如果服务或机器崩溃了,它会基于Image File以及各个DateNode的报告信息重新生成元数据。
·Secondary NameNode:第二名称节点,NameNode在早期只有一个,后来提供了第二个名称节点Secondry NameNode ,万一主节点崩溃,secondary无非是将image file整合到本地实现快速启动节点而已,同时也能够对Namenode节点映像文件合并的功能,平时不提供任何节点的服务。
·HDFS DataNode:所有大数据都保存在数据节点上,我们称为DataNode
HDFS不支持FUSE挂载到本地,所以支持基于HDFS的AIP(HadoopAPI)来进行访问,因此必须自己去研发专用的命令行工具。
服务是如何在HDFS中写数据:
(1) 当我们创建一个数据时候,需要先向NameNode发起请求;
(2)NameNode收到请求之后,会告知HDFSDataNode,说明需要分别存储至什么位置,当报告返回回来之后,HDFS Client将对其发起写操作请求;
(3)NameNode会为HDFS Client会分配一个DataNode数据节点;
(4)数据节点可能是多个,但HDFS Client却无知这一点,只需要向其一节点发起写操作即可;
(5)第一个数据节点datanode 接到请求之后,自行将数据复制到其它节点
(#一个数据块 报文为64k 于是其按报文逐一开始存放)
(为了保证数据可用性以及降低集群的成本,hadoop是工作在商用计算机硬件(说白了就是服务器或专业级存储),而且服务器不需要做RAID,它会在磁盘上自行存储多个副本,而且是在不同主机上)
(6)每个数据块存储结束之后,数据节点DataNode都要向Namenode报告存储完毕,接着存放下一个数据块然后报告。。。以此类推;
(7)一旦所有数据都存储完成,NameNode会保存一个列表,记录着数据的副本保存在哪个数据节点上。
如何在HDFS中读取数据:
比如文件file1 分别存储在 D1 D2 D3 上,所以一旦有请求读取数据时,那么3个节点都有数据,那么该找谁去读取呢?如上图所示:
当 客户端要请求访问某个数据块的时候,一个数据块可能在多个节点都有,那么所以这时候名称节点NameNode会告知它第一个块或文件 分别存储在D1 D2 D3 这么3个节点上,那么我们的客户端将会去第一个节点datanode1上去取数据,datanode1接到请求,将数据返回给客户端,假如中途出现中断的 情况,那么客户端则去找datanode2,datanode2接到请求后如果有数据那么则将数据返回给用户
其实用户请求的为列表,告知的节点上都存在同样的数据;
如果用户请求存放某大文件,那么会被分割为报文,以报文形式存储到datanode 再由datanode相互复制 从而达到并行存储;
同样,也可以并行去读取文件,如果某台数据节点出现问题,那么肯定会导致数据不统一,所以每个datanode每隔3秒钟会向namenode报告自己的心跳信息、所持有的数据块的列表,如果超过阀值则将移除可用列表
在向namenode报告时候为了避免报告出错,还要检验一次数据块是否有问题,如果没有问题则报告,如果namenode没有接到其报告信息,则认为这个数据块缺少副本,并找将报告的完整副本完全复制到其故障节点上
hadoop 初探之第二篇(杂谈)的更多相关文章
- Hadoop环境搭建|第二篇:hadoop环境搭建
硬件配置:1台NameNode节点.2台DataNode节点 一.Linux环境配置 这里我只配置NameNode节点,DataNode节点的操作相同. 1.1.修改主机名 命令:vi /etc/sy ...
- Hadoop初探
本文转自:https://blog.csdn.net/column/details/14334.html 前言 Hadoop是什么? 用百科上的话说:“Hadoop是一个由Apache基金会所开发的分 ...
- 跟我学SpringCloud | 第二篇:注册中心Eureka
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...
- EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念
目录 1. 使用Anypoint Studio开发 2. Mule ESB Application Structure - Mule ESB应用程序结构 3. Mule ESB Application ...
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- (转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
原文地址: http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集 ...
- 深入理解javascript对象系列第二篇——属性操作
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
- 前端工程师技能之photoshop巧用系列第二篇——测量篇
× 目录 [1]测量信息 [2]实战 [3]注意事项 前面的话 前端工程师使用photoshop进行的大量工作实际上是测量.本文是photoshop巧用系列第二篇——测量篇 测量信息 在网页制作中需要 ...
随机推荐
- Docker容器跨主机通信--overlay网络
一.Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接 ...
- linux命令总结之查找命令find、locate、whereis、which、type
我们经常需要在系统中查找一个文件,那么在Linux系统中我们如何准确高效的确定一个文件在系统中的具体位置呢?一下我总结了在linux系统中用于查找文件的几个命令. 1.find命令 find是最常用也 ...
- etcd启用https服务
目录 cfssl相关工具下载 生成etcd所需要的ssl证书 生成ca证书 生成etcd服务端证书 生成etcd客户端证书 修改etcd集群配置文件 重启etcd集群 验证集群健康情况 关于etcd的 ...
- 转:IOS:查找SDK路径和Framework头文件
通过Terminal进入Xcode.app所在目录,可以找到相应的SDK路径,相关 的Framework的头文件也在改目录下. 示例如下: Frameworks /Applications/xcode ...
- bzoj千题计划163:bzoj1060: [ZJOI2007]时态同步
http://www.lydsy.com/JudgeOnline/problem.php?id=1060 以激发器所在节点为根 终止节点一定是叶节点 记录点的子树内最深的终止节点 然后从根往下使用道具 ...
- bzoj千题计划160:bzoj2599: [IOI2011]Race
http://www.lydsy.com/JudgeOnline/problem.php?id=2599 点分治 mi[i] 记录边权和为i时的最少边数 先更新答案,再更新mi数组,换根时清空mi # ...
- js事件的捕获和冒泡阶段
讨论的主要是两个事件模型:IE事件模型与DOM事件模型 IE内核浏览器的事件模型是冒泡型事件(没有捕获事件过程),事件句柄的触发顺序是从ChildNode到ParentNode. <div id ...
- Document对象中的一些重要的属性和方法(笔记)
Document对象:每一个web浏览器窗口.标签页和框架由一个window对象所表示.每个window对象都有一个document属性引用的是Document对象,它是一个巨大的API中的核心对象, ...
- 奇怪的C代码
; int ans = (++i)+(++i)+(++i); ans等于多少?我想大多数同学都会和我一样的认为: ans = 4 + 5 + 6 = 15. 而实际结果呢? - Linux下用gcc编 ...
- [csp-201509-3]模板生成系统
#include<bits/stdc++.h> using namespace std; ; string a[N],b[N],c[N]; int main() { //freopen(& ...