Hadoop HDFS (1)

HDFS是Hadoop Distributed Filesystem,Hadoop分布式文件系统。

当数据大到一台机器无法存储时,就要把它分散到多台机器上去,通过网络管理多台计算机上的存储空间的文件系统,就称为分布式文件系统。网络程序的复杂性使得分布式文件系统比普通的磁盘文件系统复杂得多,例如其中最大的挑战之一就是要容错,要在其中一个或几个节点死掉后,仍能保证数据完整。

HDFS是Hadoop的旗舰文件系统,但是Hadoop还有一个抽象的文件系统,用于整合其它文件系统,例如本地存储。

HDFS是为存储非常大的文件设计的文件系统,适合于流式数据访问,运行于普通商业计算机集群。

“非常大的文件”:指几百MB,几GB甚至几TB的数据。Yahoo曾经在4000个节点上存储上PB的数据。

“流式数据访问”:是指数据被写入一次,然后被多次读取并分析计算。而且每次计算都几乎要用到文件中的大部分数据,而不是只用其中的第一行数据。

“普通商业计算机集群”:是指Hadoop不要求运行于非常昂贵的可靠性很高的服务器上,而是设计成运行于普通的计算机上。这就意味着节点是不可靠的,节点故障退出集群是很正常的事。HDFS就是设计成在节点故障时,不让用户有明显的感觉。

相对应的,HDFS也有其不适用的场景。

“即时数据访问”:HDFS不适合于即时系统。HDFS针对高吐吞量进行优化,对于处理大量数据有优势,但不适合于那种在大量数据中处理一小部分,然后快速响应返回的系统。

“大量小文件”:文件元信息是存储在namenode的内存里的,100万个文件,元信息将占用namenode机器内存300M左右。因此,尽管几百万个文件可以承受,但几十亿个文件对于当前流行的硬件配置就吃不消了。

“大量写操作和文件中间修改”:HDFS目前只支持单线程写操作,并且只能在文件尾写。不支持修改文件中的任意位置。(也许在以后的版本中会支持,但即使支持,也一定效率很差。)

时间: 2024-10-30 23:17:00

Hadoop HDFS (1)的相关文章

Hadoop hdfs&mapreduce核心概念

1.HDFS(分布式文件系统体系) 1.1.NameNode:(名称节点) Hdfs的守护程序 记录文件是如何分割成数据块的,以及这些数据块被存储到了哪些节点上 对内存和I/O进行集中管理 是个单点,发生故障将使集群崩溃 1.2.SecondaryNamenode(辅助名称节点):发生故障进行人工的设置才能实现集群崩溃的问题 监控HDFS状态的辅助后台程序 每个集群都有一个 与NameNode进行通讯,定期保存HDFS元数据快照 与NameNode故障可以作为备用NameNode使用 1.3.D

kafka-connect-hdfs连接hadoop hdfs时候,竟然是单点的,太可怕了。。。果断改成HA

2017-08-16 11:57:28,237 WARN [org.apache.hadoop.hdfs.LeaseRenewer][458] - <Failed to renew lease for [DFSClient_NONMAPREDUCE_-1756242047_26] for 30 seconds. Will retry shortly ...> org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyE

Datanode启动问题 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool &lt;registering&gt;

2017-04-15 21:21:15,423 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: supergroup = supergroup 2017-04-15 21:21:15,467 INFO org.apache.hadoop.ipc.CallQueueManager: Using callQueue: class java.util.concurrent.LinkedBlockingQueue queueCapacity:

Hadoop HDFS编程 API入门系列之HDFS_HA(五)

不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs3; import java.io.FileInputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.URI; import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSyst

【转】Hadoop HDFS分布式环境搭建

原文地址  http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统,因此研究了一下如何在Linux 下配置一个HDFS Clust.小记一下,以备将来进一步研究和记忆. HDFS简介 全称 Hadoop Distributed File System, Hadoop分布式文件系统. 根据Google的GFS论文,由Doug Cutting使用JAVA开发的开源项目

Hadoop HDFS (3) JAVA访问HDFS

现在我们来深入了解一下Hadoop的FileSystem类.这个类是用来跟Hadoop的文件系统进行交互的.虽然我们这里主要是针对HDFS,但是我们还是应该让我们的代码只使用抽象类FileSystem,这样我们的代码就可以跟任何一个Hadoop的文件系统交互了.在写测试代码时,我们可以用本地文件系统测试,部署时使用HDFS,只需配置一下,不需要修改代码了. 在Hadoop 1.x以后的版本中引入了一个新的文件系统接口叫FileContext,一个FileContext实例可以处理多种文件系统,而

kafka-connect-hdfs重启,进去RECOVERY状态,从hadoop hdfs拿租约,很正常,但是也太久了吧

虽说这个算是正常现象,等的时间也太久了吧.分钟级了.这个RECOVERY里面的WAL有点多余.有这么久的时间,早从新读取kafka写入hdfs了.纯属个人见解. @SuppressWarnings("fallthrough") public boolean recover() { try { switch (state) { case RECOVERY_STARTED: log.info("Started recovery for topic partition {}&quo

Hadoop HDFS源码分析 关于数据块的类

Hadoop HDFS源码分析 关于数据块的类 1.BlocksMap 官方代码中的注释为: /** * This class maintains the map from a block to its metadata. * block's metadata currently includes blockCollection it belongs to and * the datanodes that store the block. */ BlocksMap数据块映射,管理名字节点上的数据

基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口

对于hadoop HDFS 中的所有命令进行解析(其中操作流程是自己的想法有不同意见欢迎大家指正) 接口名称 功能 操作流程 get 将文件复制到本地文件系统 .如果指定了多个源文件,本地目的端必须是一个目录. (1)按照上述机制,在Config server上的存储引擎中逐层读取K-V,直到获得文件名(或大文件元数据信息): (2)根据文件名(或大文件元数据信息)到相应的Data server中获取相应的文件(大文件需要拼接): (3)将获取的文件写入本地文件系统. put 从本地文件系统中复

Hadoop HDFS编程 API入门系列之简单综合版本1(四)

不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs4; import java.io.IOException; import java.net.URISyntaxException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.BlockLocation;import org.apache.hadoop.fs.FileStatus