大数据之HDFS

在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为 分布式文件系统

HDFS (Hadoop Distributed File System)是 Hadoop 的核心组件之一, 非常适于存储大型数据 (比如 TB 和 PB), HDFS 使用多台计算机存储文件,并且提供统一的访问接口,像是访问一个普通文件系统一样使用分布式文件系统。

HDFS是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的 高容错、高可靠性、高可扩展性、高获得性、高吞吐率 等特征为海量数据提供了不怕故障的存储,为超大数据集的应用处理带来了很多便利。

HDFS 具有以下 优点

当然 HDFS 也有它的 劣势 ,并不适合以下场合:

HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。

Namenode是整个文件系统的管理节点,负责接收用户的操作请求。它维护着整个文件系统的目录树,文件的元数据信息以及文件到块的对应关系和块到节点的对应关系。

Namenode保存了两个核心的数据结构:

在NameNode启动的时候,先将fsimage中的文件系统元数据信息加载到内存,然后根据edits中的记录将内存中的元数据同步到最新状态;所以,这两个文件一旦损坏或丢失,将导致整个HDFS文件系统不可用。

为了避免edits文件过大, SecondaryNameNode会按照时间阈值或者大小阈值,周期性的将fsimage和edits合并 ,然后将最新的fsimage推送给NameNode。

并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。其主要任务是辅助 NameNode,定期合并 fsimage和fsedits。

Datanode是实际存储数据块的地方,负责执行数据块的读/写操作。

一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据,包括数据块的长度,块数据的校验和,以及时间戳。

文件划分成块,默认大小128M,以快为单位,每个块有多个副本(默认3个)存储不同的机器上。

Hadoop2.X默认128M, 小于一个块的文件,并不会占据整个块的空间 。Block数据块大小设置较大的原因:

文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。

Client 还提供一些命令来管理 HDFS,比如启动或者关闭HDFS。

Namenode始终在内存中保存metedata,用于处理“读请求”,到有“写请求”到来时,namenode会首 先写editlog到磁盘,即向edits文件中写日志,成功返回后,才会修改内存 ,并且向客户端返回,Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,但是fsimage不会随时与namenode内存中的metedata保持一致,而是每隔一段时间通过合并edits文件来更新内容。

HDFS HA(High Availability)是为了解决单点故障问题。

HA集群设置两个名称节点,“活跃( Active )”和“待命( Standby )”,两种名称节点的状态同步,可以借助于一个共享存储系统来实现,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点。

为了保证读写数据一致性,HDFS集群设计为只能有一个状态为Active的NameNode,但这种设计存在单点故障问题,官方提供了两种解决方案:

通过增加一个Secondary NameNode节点,处于Standby的状态,与Active的NameNode同时运行。当Active的节点出现故障时,切换到Secondary节点。

为了保证Secondary节点能够随时顶替上去,Standby节点需要定时同步Active节点的事务日志来更新本地的文件系统目录树信息,同时DataNode需要配置所有NameNode的位置,并向所有状态的NameNode发送块列表信息和心跳。

同步事务日志来更新目录树由JournalNode的守护进程来完成,简称为QJM,一个NameNode对应一个QJM进程,当Active节点执行任何命名空间文件目录树修改时,它会将修改记录持久化到大多数QJM中,Standby节点从QJM中监听并读取编辑事务日志内容,并将编辑日志应用到自己的命名空间。发生故障转移时,Standby节点将确保在将自身提升为Active状态之前,从QJM读取所有编辑内容。

注意,QJM只是实现了数据的备份,当Active节点发送故障时,需要手工提升Standby节点为Active节点。如果要实现NameNode故障自动转移,则需要配套ZKFC组件来实现,ZKFC也是独立运行的一个守护进程,基于zookeeper来实现选举和自动故障转移。

虽然HDFS HA解决了“单点故障”问题,但是在系统扩展性、整体性能和隔离性方面仍然存在问题:

HDFS HA本质上还是单名称节点。HDFS联邦可以解决以上三个方面问题。

在HDFS联邦中,设计了多个相互独立的NN,使得HDFS的命名服务能够水平扩展,这些NN分别进行各自命名空间和块的管理,不需要彼此协调。每个DN要向集群中所有的NN注册,并周期性的发送心跳信息和块信息,报告自己的状态。

HDFS联邦拥有多个独立的命名空间,其中,每一个命名空间管理属于自己的一组块,这些属于同一个命名空间的块组成一个“块池”。每个DN会为多个块池提供块的存储,块池中的各个块实际上是存储在不同DN中的。



  • 澶ф暟鎹 HDFS 鏈夊摢浜涘熀纭鎿嶄綔?
    绛旓細1. 鏂囦欢涓庣洰褰曠鐞 棣栧厛锛屼娇鐢╤adoop fs 鈥搇s鏌ョ湅鐩綍鍐呭锛屼緥濡傦細hadoop fs 鈥搇s /user/wangwu锛岃兘娓呮櫚灞曠ず鎸囧畾璺緞涓嬬殑鏂囦欢鍜屽瓙鐩綍銆傞氳繃hadoop dfs 鈥揷at [file_path]锛屽彲浠ヨ交鏉炬煡鐪嬫枃浠跺唴瀹癸紝濡傦細hadoop fs -cat /user/wangwu/data.txt銆2. 鏂囦欢涓婁紶涓庝笅杞 灏嗘湰鍦版枃浠朵笂浼犺嚦HDFS锛屼娇鐢╤adoop ...
  • hdfs鐨鐗圭偣
    绛旓細榛樿鎯呭喌涓嬶紝HDFS鍒涘缓涓変釜鍓湰锛屼竴涓瓨鍌ㄥ湪鏈湴鏈烘灦鐨勮妭鐐逛笂锛屼竴涓瓨鍌ㄥ湪鍏朵粬鏈烘灦鐨勮妭鐐逛笂锛屾渶鍚庝竴涓牴鎹渶瑕佸湪鍏朵粬鍦版柟瀛樺偍銆傝繖绉嶇瓥鐣ョ‘淇濅簡鏁版嵁鐨勫彲闈犳у拰鍙敤鎬э紝鍗充娇鍦ㄦ晠闅滃彂鐢熺殑鎯呭喌涓嬨3. 閫傚悎澶勭悊澶ф暟鎹锛欻DFS鏄负澶勭悊澶ф暟鎹璁$殑銆傚畠鍙互澶勭悊TB绾у埆鐨勬暟鎹紝杩欏浜庝紶缁熸枃浠剁郴缁熸潵璇存槸寰堥毦澶勭悊鐨勩...
  • 澶ф暟鎹箣HDFS
    绛旓細HDFS 锛圚adoop Distributed File System锛夋槸 Hadoop 鐨勬牳蹇冪粍浠朵箣涓锛 闈炲父閫備簬瀛樺偍澶у瀷鏁版嵁 (姣斿 TB 鍜 PB)锛 HDFS 浣跨敤澶氬彴璁$畻鏈哄瓨鍌ㄦ枃浠讹紝骞朵笖鎻愪緵缁熶竴鐨勮闂帴鍙o紝鍍忔槸璁块棶涓涓櫘閫氭枃浠剁郴缁熶竴鏍蜂娇鐢ㄥ垎甯冨紡鏂囦欢绯荤粺銆侶DFS鏄垎甯冨紡璁$畻涓暟鎹瓨鍌ㄧ鐞嗙殑鍩虹锛屾槸鍩轰簬娴佹暟鎹ā寮忚闂拰澶勭悊瓒呭ぇ鏂囦欢鐨勯渶姹傝...
  • hdfs鏄粈涔
    绛旓細HDFS鏄疕adoop Distributed File System鐨勭缉鍐欙紝瀹冩槸涓绉嶅垎甯冨紡鏂囦欢绯荤粺銆備笅闈㈣缁嗕粙缁HDFS鐨姒傚康鍜岀壒鐐广備竴銆佸畾涔変笌姒傝堪 HDFS鏄笓涓澶ф暟鎹瀛樺偍鑰岃璁$殑鍒嗗竷寮忔枃浠剁郴缁燂紝瀹冭兘澶熷瓨鍌ㄥぇ閲忕殑鏁版嵁骞惰兘澶熶互娴佸紡鐨勬柟寮忚闂繖浜涙暟鎹傚叾鏍稿績璁捐鐩爣鏄珮瀹归敊銆佹祦寮忔暟鎹闂互鍙婂ぇ瑙勬ā鏁版嵁瀛樺偍銆傞氳繃澶氬彴鏈嶅姟鍣ㄥ叡鍚屽崗浣滐紝...
  • hdfs鎶鏈槸浠涔堟剰鎬?
    绛旓細HDFS鎶鏈槸浠涔堟剰鎬濓紵HDFS鏄疕adoop Distributed File System鐨勭缉鍐欙紝鏄竴绉嶅垎甯冨紡鏂囦欢绯荤粺鎶鏈傚畠璁捐鐢ㄤ簬瀛樺偍澶ц妯℃暟鎹泦锛屽悓鏃舵彁渚涢珮鍙潬鎬с侀珮鍚炲悙閲忓拰楂樺彲鎵╁睍鎬с傚湪Hadoop鐢熸佺郴缁熶腑锛孒DFS鏄渶鏍稿績鐨勬ā鍧椾箣涓锛岃骞挎硾搴旂敤浜澶ф暟鎹瀛樺偍鍜屽鐞嗐傞鍏堬紝HDFS鎶鏈殑鏍稿績鎬濇兂鏄皢澶氫釜鐗╃悊鑺傜偣闂寸殑瀛樺偍绌洪棿姹囪仛...
  • hdfs鏄粈涔堟剰鎬
    绛旓細鎬荤殑鏉ヨ锛HDFS鏄竴涓笓涓哄鐞嗗ぇ瑙勬ā鏁版嵁闆嗚岃璁$殑鍒嗗竷寮忔枃浠剁郴缁熴傚畠閫氳繃灏嗘暟鎹垎鍓叉垚澶氫釜鍧楀苟鍒嗗竷鍦ㄤ笉鍚岀殑鏁版嵁鑺傜偣涓婏紝瀹炵幇浜嗛珮鍚炲悙閲忕殑鏁版嵁璁块棶銆傚悓鏃讹紝閫氳繃鍏冩暟鎹鐞嗚妭鐐癸紙NameNode锛夋潵缁存姢鏂囦欢绯荤粺鐨勫厓鏁版嵁锛屼繚璇佷簡鏁版嵁鐨勪竴鑷存у拰鍙潬鎬с傝繖浣垮緱HDFS鎴愪负澶ф暟鎹澶勭悊棰嗗煙涓殑鍏抽敭缁勪欢涔嬩竴銆
  • 绠杩癶adoop 鏄粈涔?瀹冪殑姣忎釜缁勪欢鍒嗗埆鍏锋湁浠涔堜綔鐢?
    绛旓細Hadoop鏄竴涓紑婧愮殑鍒嗗竷寮忓鐞嗘鏋讹紝瀹冭兘澶熷鐞嗗拰瀛樺偍澶ц妯℃暟鎹泦锛屾槸澶ф暟鎹澶勭悊鐨勯噸瑕佸伐鍏枫侶adoop涓昏鐢变袱涓牳蹇冪粍浠舵瀯鎴愶細Hadoop Distributed File System (HDFS) 鍜 Hadoop MapReduce銆1. Hadoop Distributed File System (HDFS)锛欻DFS鏄疕adoop鐨勫垎甯冨紡鏂囦欢绯荤粺锛岃璁$敤鏉ュ瓨鍌ㄥ拰澶勭悊澶ц妯$殑鏁版嵁闆嗐傚畠杩愯...
  • HDFS 涓轰綍鍦澶ф暟鎹棰嗗煙缁忎箙涓嶈“?
    绛旓細澶ф暟鎹涓渶瀹濊吹銆佹渶闅句互浠f浛鐨勫氨鏄暟鎹,涓鍒囬兘鍥寸粫鏁版嵁銆 HDFS鏄渶鏃╃殑澶ф暟鎹瓨鍌ㄧ郴缁,瀛樺偍鐫瀹濊吹鐨勬暟鎹祫浜,鍚勭鏂扮畻娉曘佹鏋惰鎯冲緱鍒板箍娉涗娇鐢,蹇呴』鏀寔HDFS,鎵嶈兘鑾峰彇宸插瓨鍌ㄥ湪閲岄潰鐨勬暟鎹傛墍浠ュぇ鏁版嵁鎶鏈秺鍙戝睍,鏂版妧鏈秺澶,HDFS寰楀埌鐨勬敮鎸佽秺澶,瓒婄涓嶅紑HDFS銆 HDFS涔熻涓嶆槸鏈濂界殑澶ф暟鎹瓨鍌ㄦ妧鏈,浣嗕緷鐒舵槸鏈閲嶈鐨...
  • HDFS鐨璁捐鎬濇兂鏄粈涔?
    绛旓細澶ф暟鎹璁$畻浣撶郴鍙綊绾充笁涓熀鏈眰娆★細鏁版嵁搴旂敤绯荤粺锛屾暟鎹鐞嗙郴缁燂紝鏁版嵁瀛樺偍绯荤粺.璁$畻鐨勬讳綋鏋舵瀯. HDFS (Hadoop 鍒嗗竷寮忔枃浠剁郴缁) (1)璁捐鎬濇兂锛氬垎鑰屾不涔嬶紝灏嗗ぇ鏂囦欢澶ф壒閲忔枃浠讹紝鍒嗗竷寮忓瓨鏀惧湪澶ч噺鏈嶅姟鍣ㄤ笂锛屼互渚夸簬閲囧彇鍒嗚屾不涔嬬殑鏂瑰紡瀵规捣閲忔暟鎹繘琛岃繍绠楀垎鏋愩 (2)棣栧厛锛屽畠鏄竴涓枃浠剁郴缁燂紝鐢ㄤ簬瀛樺偍鏂囦欢锛...
  • hdfs鏄粈涔堟妧鏈鏋
    绛旓細鎬讳箣锛HDFS鏄竴涓珮鏁堛佸彲闈犮佸彲鎵╁睍鐨勫垎甯冨紡鏂囦欢绯荤粺鎶鏈鏋讹紝涓澶ф暟鎹澶勭悊鍜屽垎鏋愭彁渚涗簡寮烘湁鍔涚殑鏀寔銆hdfs鎶鏈鏋剁殑搴旂敤 1銆佸垎甯冨紡瀛樺偍锛欻DFS鍙互灏嗗ぇ瑙勬ā鐨勬暟鎹垎鏁e瓨鍌ㄥ湪澶氫釜鑺傜偣涓婏紝浣垮緱鏁版嵁鐨勫瓨鍌ㄥ拰璁块棶閮芥洿鍔犻珮鏁堝拰鍙潬銆傚畠鍙互浣滀负鍏朵粬鍒嗗竷寮忕郴缁熺殑鏁版嵁瀛樺偍鍚庣锛屼緥濡傛悳绱㈠紩鎿庛佸唴瀹圭紦瀛樼瓑銆2銆佹暟鎹...
  • 扩展阅读:www.sony.com.cn ... 在大数据关键技术中hadoop ... hdfs dfs ls ... 在一个基本的hadoop集群中 ... 红鲤大数据官网 ... hdfs put ... sas ... hadoop-hdfs是什么 ... jvm ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网