HDFS

一、HDFS基础知识

1. namenode 负责:

管理着文件系统命名空间

– 维护着文件系统树及树中的所有文件和目录

   存储元数据

– NameNode保存元信息的种类有:

• 文件名目录名及它们之间的层级关系

• 文件目录的所有者及其权限

• 每个文件块的名及文件有哪些块组成

元数据保存在内存中

– NameNode元信息并不包含每个块的位置信息

元信息持久化

- 在NameNode中存放元信息的文件是fsimage。在系统运行期间所有对元信息的操作都保存在内存中并被持久化到另一个文件edits中。并且edits文件和fsimage文件会被SecondaryNameNode周期性的合并

fsimage: 内存中的元数据定时写入 磁盘,保存在 fsimage 中,是一个checkpoint

edits: 在这个checkpoint之后, 文件系统定时更新会记录在 edits 文件中

2. datanode 负责:

- 存储文件

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

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

3. Secondary NameNode

合并FsImage 和 EditLog 成为一个新的snapshot

定期清理和压缩NameNode的文件系统的状态信息,以便NameNode更高效

FsImage:is a snapshot of the filesystem at some checkpoint

EditLog:records each incremental change (delta) to the filesystem after that checkpoint

4. JobTracker 负责:

- 接收客户提交的计算任务

- 把计算任务分给 TaskTrackers 执行

- 监控TaskTrackers 的执行情况

5. TaskTrackers 负责:

- 执行 JobTracker 分配的计算任务

二、HDFS命令

1. hadoop fs -setrep -R -w 3 /data/analytic/     //手动设置指定路径下所有文本的副本个数

2. hadoop fsck /    可以查看/ 路径下所有文件的健康状况

3. hadoop fsck -delete 可以移除 missing block

4. hadoop fsck [filepath] -files -blocks -racks   //查看文件的具体存储信息(文件被分成多少个block, 在哪个 rack 上, 有几个replica 等)

5. hadoop fsck /path/to/corrupt/file -locations -blocks -files

6. 平衡集群

dfsadmin -setBalancerBandwidth newbandwidth   //默认值是 1MB

hadoop dfsadmin -setBalancerBandwidth 10485760   //更改成 10MB

hdfs balancer -threshold 5   //平衡集群数据分布,这个操作是带宽密集形操作,建议在凌晨或周末运行

7. 动态删除datanode

dfs.hosts.exclude   //指向一个文件,该文件每行写一个要删除的datanode 的hostname

然后运行:hadoop dfsadmin -refreshNodes

8. 动态添加datanode

对新添加的datanode进行文件配置,在各台机子的 /etc/hosts 中添加该机子的IP, 在各台机子的/etc/hadoop/conf/slaves 中添加该机子的IP

然后手动开启 这台datanode

9. distcp(同步文件)

源                           目的地

hadoop distcp /tmp/test   hdfs://hudson.novalocal:8020/tmp

10. namenode 退出安全模式:

sudo -u hdfs hdfs dfsadmin -safemode leave

hadoop 在启动时,namenode 会把img 加载进内存,在安全模式中,整个HDFS对于客户端只是可读的,系统中的block具体位置信息不是由namenode来维护的,是以block list 的形式存在datanode中的,正常工作中,namenode会在内存中保留所有block的location映射信息,在安全模式中,每个datanode会把最新的block location 信息发送给namenode

时间: 2024-10-21 07:58:32

HDFS的相关文章

三:QJM HDFS高可用

本文介绍的是HDFS的一种HA方案.虽然有checkpoint node \backup node等,但是不能实现自动的failover. http://hadoop.apache.org/docs/r2.6.3/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html 1.在2.0.0版本以下,namenode是单个的,如果namenode宕机,就会导致整个集群不可用.QJM 是HA的一种实现方式,通过master/sla

七:HDFS Permissions Guide 权限

1.权限模式     简单:启动HDFS的操作系统用户即为超级用户,可以通过HADOOP_USER_NAME指定 kerberos: 2.group mapping 组列表由group mapping service完成,该服务由hadoop.security.group.mapping参数决定,默认值是org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback,即由JNI. 如果没有JNI, 使用org.apache.had

数据采集之Web端上传文件到Hadoop HDFS

前言 最近在公司接到一个任务,是关于数据采集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志采集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好最近都有在这方面做知识储备.正所谓养兵千日,用兵一时啊.学习到的东西只有应用到真实的环境中才有意义不是么. 环境 这里只做模拟环境,而不是真实的线上环境,所以也很简单,如果要使用的话还需要优化优化. OS Debian 8.7 Hadoop 2.6.5 SpringBoot 1.5.1.RELEASE 说明一下,这

Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS、YARN、MR)安装

虽然我已经装了个Cloudera的CDH集群(教程详见:http://www.cnblogs.com/pojishou/p/6267616.html),但实在太吃内存了,而且给定的组件版本是不可选的,如果只是为了研究研究技术,而且是单机,内存较小的情况下,还是建议安装Apache的原生的集群拿来玩,生产上自然是Cloudera的集群,除非有十分强大的运维. 我这次配了3台虚拟机节点.各给了4G,要是宿主机内存就8G的,可以搞3台2G,应该也是ok的. 〇.安装文件准备 Hadoop 2.7.3:

Hadoop核心组件:四步通晓HDFS

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统,它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序,那么在实际应用中我们如何来操作使用呢? 一.HDFS操作方式: 1.  命令行操作 –FsShell:$ hdfs dfs 2. 其他的计算框架-如spark 通过URI,比如: hdfs://nnhost:port/file-,调用HDFS的协议.主机.端口或者对外提供的服务媒.以及文件,在spark的程序中实现对HDFS的访问. 3.  其

sqoop同步mysql到hdfs

链接:http://pan.baidu.com/s/1gfHnaVL 密码:7j12 mysql-connector version 5.1.32 若在安装版本过程遇到些问题,可参考http://dbspace.blog.51cto.com/6873717/1875955,其中一些问题的解决办法 下载并安装: cd /usr/local/tar -zxvf sqoop2-1.99.3-cdh5.0.0.tar.gzmv sqoop2-1.99.3-cdh5.0.0 sqoop添加sqoop2到系

eclipse 向HDFS中写入文件报错 permission denied

环境:win7  eclipse    hadoop 1.1.2 当执行创建文件的的时候, 即: fileSystem.mkdirs(Path);//想hadoop上创建一个文件报错 报错: org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 原因: 1. 当前用户

[转载]HDFS初探之旅

转载自 http://www.cnblogs.com/xia520pi/archive/2012/05/28/2520813.html , 感谢虾皮工作室这一系列精彩的文章. Hadoop集群(第8期)_HDFS初探之旅 1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上.它所具有的高容错.高可靠性.高可扩展性.高

HDFS源码学习纪录之-NameNode篇(一)

NameNode维护了HDFS命名空间的两层关系: 1) 文件与数据块之间的关系(INodeFile,INodeDirectory) 2) 数据块与DataNode之间的关系(BlockMap.BlockInfo) 首先,贴一张类图: 1. INode类: INode模仿Linux文件系统中的索引节点inode.INode为一个抽象类,INode中保存了文件名,文件所有者,文件的访问权限,文件父目录(INodeDirectory引用,无论是INode的INodeFile子类还是INodeDire