什么是HDFS?

hadoop distributed file system(hadoop分布式文件系统)

是一种允许文件通过网络在多台主机上分享的文件系统,

可让多机器上的多用户分享文件和存储空间.

特点:

1.通透性.让实际上是通过网络来访问文件的动作,由程序与用户看来,

就像是访问本地的磁盘一般.

2.容错性.即使系统中有某些节点脱机,整体来说系统仍然可以持续运作

而不会有数据损失.

适用场景:

适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适.

HDFS的架构

主从结构

主节点,只有一个: namenode

从节点,有很多个: datanodes

namenode负责:

接收用户操作请求

维护文件系统的目录结构

管理文件与block之间关系,block与datanode之间关系

datanode负责:

存储文件

文件被分成block存储在磁盘上

为保证数据安全,文件会有多个副本

NameNode(可以理解为老大)

是整个文件系统的管理节点.它维护着整个文件系统的文件目录树,

文件/目录的元信息和每个文件对应的数据块列表.接收用户的操作请求.

文件包括(这三个都保存在linux的文件系统中):

fsimage:元数据镜像文件,存储某一时段NameNode内存元数据信息.

edits:操作日志文件.

fstime:保存最近一次checkpoint的时间

工作特点:

1.Namenode始终在内存中保存metedata,用于处理"读请求".

2.到有"写请求"到来时,namenode会首先写editlog到磁盘,

即向edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回.

3.Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,

但是fsimage不会随时与namenode内存中的metedata保持一致,

而是每隔一段时间通过合并edits文件来更新内容.Secondary namenode

就是用来合并fsimage和edits文件来更新NameNode的metedata的.

DataNode(可以理解为小弟)

提供真实文件数据的存储服务.

最基本的存储单位:block(文件块),默认大小为64M

Secondary NameNode(可以理解为老大的助理)

HA(High Available)的一个解决方案.但不支持热备.配置即可

默认在安装在NameNode节点上,但这样...不安全!

(生产环境中,建议分开安装)

执行过程:

从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成

新的fsimage,在本地保存,并将其推送到NameNode,替换旧的fsimage.

工作流程:

1.secondarynamenode通知namenode切换edits文件

2.secondarynamenode从namenode获得fsimage和edits(通过http)

3.secondarynamenode将fsimage载入内存,然后开始合并edits

4.secondarynamenode将新的fsimage发回给namenode

5.namenodenamenode用新的fsimage替换旧的fsimage

hadoop的整个体系结构就是构建在RPC之上的

RPC(Remote Procedure Call),(RPC采用客户机/服务器模式)

远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,

而不需要了解底层网络技术的协议.

具体实现过程:

首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,

然后等待应答信息.在服务器端,进程保持睡眠状态直到调用信息的到达为止.

当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,

然后等待下一个调用信息,

最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行.

服务端提供的对象必须是一个接口,接口extends VersioinedProtocal

客户端能够的对象中的方法必须位于对象的接口中.

http://m.oschina.net/blog/212102

hadoop的两大核心之一:HDFS总结的更多相关文章

  1. Java轻量级业务层框架Spring两大核心IOC和AOP原理

    IoC(Inversion of Control): IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些 ...

  2. Flask框架简介,常用扩展包及两大核心

    Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎所有的功能都 ...

  3. Java入门到精通——框架篇之Spring源码分析Spring两大核心类

    一.Spring核心类概述. Spring里面有两个最核心的类这是Spring实现最重要的部分. 1.DefaultListableBeanFactory 这个类位于Beans项目下的org.spri ...

  4. Spring 两大核心 IOC 和 AOP

    如果你的简历上写着Spring (请详述一下spring的两大核心)这个问题一定会被问到. 一.什么叫IOC 1. IOC 全称(Inversion of Control)-- 控制反转. IOC 只 ...

  5. hadoop两大核心之一:MapReduce总结

    MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,MapReduce程序 本质上是并行运行的,因此可以解决海量数据的计算问题. MapReduce任务过程被分为两个处理阶段 ...

  6. hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件

    sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeor ...

  7. hadoop创建两大错误:Bad connection to FS. command aborted. exception和Shutting down NameNod...

    我的hadoop启动后,各个节点都正常,但是无法查看hdfs目录,错误提示 Bad connection to FS. command aborted.  查了下网上的解决办法,主要是删除tmp下的所 ...

  8. spring两大核心对象IOC和AOP(新手理解)

    现在自己对spring的理解是:spring的主要的作用是用来进行业务的处理和实现类与类之间的解耦. 其中实现解耦功能 是IOC(控制反转)通过sessionfactory工厂来为需要的对象注入对应的 ...

  9. 【CDN+】 CDN项目的两大核心--缓存与回源

    前言 项目中碰到CDN专用名词: 回源, 然后不知道什么意思,反过来查询了一下CDN相关的一些基本术语,特做记录 CDN基础概念 CDN (Content Delivery Network,即内容分发 ...

随机推荐

  1. 转:css知多少(1)——我来问你来答

    1. 引言 各位前端或者伪前端(比如作者本人)的同志们,css对你们来说不是很陌生.比如我,在几年之前上大学的时候,给外面做网站就用css,而且必须用css.这样算下来也得六年多了,有些功能可能轻车熟 ...

  2. mybatis进阶--mapper输入映射和输出映射

    我们知道,mapper.xml是我们配置操作数据库的sql语句的地方.其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型.那么这些类型都是怎么配置的呢?今天我们来一起学习下. 输入映 ...

  3. BZOJ1051或洛谷2341 [HAOI2006]受欢迎的牛

    BZOJ原题链接 洛谷原题链接 显然在一个强连通分量里的奶牛都可以相互喜欢,所以可以用\(tarjan\)求强连通并缩点. 要求明星奶牛必须被所有人喜欢,显然缩点后的图必须满足只有一个点没有出度,因为 ...

  4. 洛谷4782 【模板】2-SAT 问题

    原题链接 \(2-SAT\)模板 #include<cstdio> using namespace std; const int N = 2e6 + 10; int fi[N], di[N ...

  5. There are stopped jobs

    问题背景 系统:ubuntu,当输入exit退出shell时,出现There are stopped jobs 无法退出shell 解决办法 找到这个stopped job然后终止它 jobs 或者 ...

  6. String、StringBuffer、StringBuilder和StringTokenizer的区别

    1)String.StringBuffer.StringBuilder都用于字符串操作,其中,String是不可变类,即String对象一旦被创建,其值不能被修改,而StringBuffer和Stri ...

  7. [Jmeter] 将参数从Jenkins传递给Jmeter

    Configuration in Jmeter Configuration in Jenkins

  8. 我们最常见的UX设计交付成果有哪些?

    以下内容由摹客团队翻译整理,仅供学习交流,摹客iDoc是支持智能标注和切图的产品协作设计神器. 有人会好奇,用户体验(UX)设计师每天都在做些什么呢?说实话,有很多事情!作为UX专家,需要将自己的设计 ...

  9. 如何获取堆的dump 的信息,如何分析

    获取方式: 1. jdk 自带启动参数 -XX:+HeapDumpBeforeFullGC -XX:HeapDumpPath=/x/x 产生dump日志,然后用visualVm分析 2. jmap 命 ...

  10. 将Struts放入spring框架中

    第一步:写好ACtion package com.inspur.actions; import javax.servlet.http.HttpServletRequest;import javax.s ...