hadoop的两大核心之一:HDFS总结
什么是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总结的更多相关文章
- Java轻量级业务层框架Spring两大核心IOC和AOP原理
IoC(Inversion of Control): IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些 ...
- Flask框架简介,常用扩展包及两大核心
Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎所有的功能都 ...
- Java入门到精通——框架篇之Spring源码分析Spring两大核心类
一.Spring核心类概述. Spring里面有两个最核心的类这是Spring实现最重要的部分. 1.DefaultListableBeanFactory 这个类位于Beans项目下的org.spri ...
- Spring 两大核心 IOC 和 AOP
如果你的简历上写着Spring (请详述一下spring的两大核心)这个问题一定会被问到. 一.什么叫IOC 1. IOC 全称(Inversion of Control)-- 控制反转. IOC 只 ...
- hadoop两大核心之一:MapReduce总结
MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,MapReduce程序 本质上是并行运行的,因此可以解决海量数据的计算问题. MapReduce任务过程被分为两个处理阶段 ...
- hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件
sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeor ...
- hadoop创建两大错误:Bad connection to FS. command aborted. exception和Shutting down NameNod...
我的hadoop启动后,各个节点都正常,但是无法查看hdfs目录,错误提示 Bad connection to FS. command aborted. 查了下网上的解决办法,主要是删除tmp下的所 ...
- spring两大核心对象IOC和AOP(新手理解)
现在自己对spring的理解是:spring的主要的作用是用来进行业务的处理和实现类与类之间的解耦. 其中实现解耦功能 是IOC(控制反转)通过sessionfactory工厂来为需要的对象注入对应的 ...
- 【CDN+】 CDN项目的两大核心--缓存与回源
前言 项目中碰到CDN专用名词: 回源, 然后不知道什么意思,反过来查询了一下CDN相关的一些基本术语,特做记录 CDN基础概念 CDN (Content Delivery Network,即内容分发 ...
随机推荐
- 5J - 复习时间
为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为1 ...
- C# fckeditor浏览服务器和上传目录不一致,看不到上传过的文件
fckeditor在上传标签页面,传过文件后,在浏览服务器那里,看不到之前上传的文件,通过浏览服务器页面上传文件,保存的目录也和上传标签页面上传的不是同一个文件夹. 修改方法如下: 打开fckedit ...
- angular2.0学习笔记5.关于组件
1.组件文件应在/src/app文件夹下 2.组件文件命名应遵循小写中线形式,每个单词之间用中线分隔,并且以.component.ts结尾. 如:HeroDetailComponent类应该放在her ...
- angular2.0学习笔记1.开发环境搭建 (node.js和npm的安装)
开发环境, 1.安装Node.js®和npm, node 6.9.x 和 npm 3.x.x 以上的版本. 更老的版本可能会出现错误,更新的版本则没问题. 控制台窗口中运行命令 node -v 和 n ...
- Introduction to 3D Game Programming with DirectX 11 翻译--开篇
Direct3D 11简介 Direct3D 11是一个渲染库,用于在Windows平台上使用现代图形硬件编写高性能3D图形应用程序.Direct3D是一个windows底层库,因为它的应用程序编程接 ...
- HDOJ2586 How far away ?
一道LCA模板 原题链接 \(LCA\)模板题,不解释. 倍增版 #include<cstdio> #include<cmath> #include<cstring> ...
- 转:百度MySql5.7安装配置
原文地址:http://jingyan.baidu.com/article/8cdccae946133f315513cd6a.html MySQL 5.7以上版本的配置和以前有所不同,在这里与大家分享 ...
- MySQL学习笔记-MySQL数据库优化实践[转]
最近一段时间,我们整理了一些关于Percona,Linux,Flashcache,硬件设备的优化经验,分享给大家: 硬件 1.开启BBWC RAID卡都有写cache(Battery Backed W ...
- 动态加载及Servlet容器加载
动态加载 动态加载是 Servlet 3.0 中的新特性,它可以实现在不重启 Web 应用的情况下加载新的 Web 对象(Servlet.Filter.Listener). 为了实现动态加载的第一种方 ...
- ArrayList、Vector、LinkedList的特点和区别
ArrayList.Vector.LinkedList类均在java.util包中,均为可伸缩数组. 1)ArrayList和Vector都是基于存储元素的Object[] array来实现的,它们会 ...