当前位置:首页 » 存储配置 » 用hdfs进行文件存储

用hdfs进行文件存储

发布时间: 2023-02-08 01:46:19

㈠ Hadoop HDFS处理大量的小文件

小文件是指文件大小明显小于HDFS上块(block)大小(默认64MB)的文件。如果存储小文件,必定会有大量这样的小文件,否则你也不会使用Hadoop(If you’re storing small files, then you probably have lots of them

(otherwise you wouldn’t turn to Hadoop)),这样的文件给hadoop的扩展性和性能带来严重问题。当一个文件的大小小于HDFS的块大小(默认64MB),就将认定为小文件否则就是大文件。为了检测输入文件的大小,可以浏览Hadoop DFS 主页 http://machinename:50070/dfshealth.jsp ,并点击Browse filesystem(浏览文件系统)。

首先,在HDFS中,任何一个文件,目录或者block在NameNode节点的内存中均以一个对象表示(元数据)(Every file, directory and block in HDFS is represented as an object in the namenode’s memory),而这受到NameNode物理内存容量的限制。每个元数据对象约占150byte,所以如果有1千万个小文件,每个文件占用一个block,则NameNode大约需要15G空间。如果存储1亿个文件,则NameNode需要150G空间,这毫无疑问1亿个小文件是不可取的。

其次,处理小文件并非Hadoop的设计目标,HDFS的设计目标是流式访问大数据集(TB级别)。因而,在HDFS中存储大量小文件是很低效的。访问大量小文件经常会导致大量的寻找,以及不断的从一个DatanNde跳到另一个DataNode去检索小文件(Reading through small files normally causes lots of seeks and lots of hopping from datanode to datanode to retrieve each small file),这都不是一个很有效的访问模式,严重影响性能。

最后,处理大量小文件速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个slot,而task启动将耗费大量时间甚至大部分时间都耗费在启动task和释放task上。

Hadoop存档文件系统通常将HDFS中的多个文件打包成一个存档文件,减少namenode内存的使用

hadoop archive命令创建HAR文件

from:https://blog.csdn.net/sunnyyoona/article/details/53870077

㈡ hadoop 中文件是怎么存储的

1、存储文件的时候需要指定存储的路径,这个路径是HDFS的路径。而不是哪个节点的某个目录。比如./hadoopfs-putlocalfilehdfspat

一般操作的当前路径是/user/hadoop比如执行./hadoopfs-ls.实际上就相当于./hadoopfs-ls/user/hadoop

2、HDFS本身就是一个文件系统,在使用的时候其实不用关心具体的文件是存储在哪个节点上的。如果需要查询可以通过页面来查看,也可以通过API来实现查询。

㈢ hadoop 中文件是怎么存储的

1、存储文件的时候需要指定存储的路径,这个路径是HDFS的路径。而不是哪个节点的某个目录。比如./hadoop fs -put localfile hdfspat
一般操作的当前路径是/user/hadoop比如执行./hadoop fs -ls .实际上就相当于./hadoop fs -ls /user/hadoop
2、HDFS本身就是一个文件系统,在使用的时候其实不用关心具体的文件是存储在哪个节点上的。如果需要查询可以通过页面来查看,也可以通过API来实现查询。

㈣ hdfs适合存储多大的单个文件

首先hdfs是建立在多个机器文件系统上的一个逻辑上的文件系统。它的底层数据以数据块方式存储,块大小可进行调整。
假如你设置一个数据块大小为256M,上传一个1G的文件,它底层会将这个文件分成4块存储,每个块256M。你在hdfs上看到的是一个完整的文件,随时可对这个文件进行操作,无需关注它的存储。就像你在操作系统上操作文件一样,无需关注它存在那个磁盘哪个扇区

㈤ Python使用hdfs存放文件时报Proxy error: 502 Server dropped connection解决方案

Python3 使用hdfs分布式文件储存系统

from pyhdfs import *

client = HdfsClient(hosts="testhdfs.org, 50070",

user_name="web_crawler")    #    创建一个连接

client.get_home_directory()    # 获取hdfs根路径

client.listdir(PATH)    # 获取hdfs指定路径下的文件列表

client._from_local(file_path, hdfs_path, overwrite=True)    # 把本地文件拷贝到服务器,不支持文件夹;overwrite=True表示存在则覆盖

​client.delete(PATH, recursive=True)    # 删除指定文件

hdfs_path必须包含文件名及其后缀,不然不会成功

如果连接

HdfsClient

报错

Traceback (most recent call last):

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code

    exec(code_obj, self.user_global_ns, self.user_ns)

  File "

    client.get_home_directory()

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 565, in get_home_directory

    return _json(self._get('/', 'GETHOMEDIRECTORY', **kwargs))['Path']

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 391, in _get

    return self._request('get', *args, **kwargs)

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 377, in _request

    _check_response(response, expected_status)

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 799, in _check_response

    remote_exception = _json(response)['RemoteException']

  File "C:\Users\billl\AppData\Local\Continuum\anaconda3\lib\site-packages\pyhdfs.py", line 793, in _json

    "Expected JSON. Is WebHDFS enabled? Got {!r}".format(response.text))

pyhdfs.HdfsException: Expected JSON. Is WebHDFS enabled? Got '\n\n\n\n

502 Server dropped connection

\n

The following error occurred while trying to access http://%2050070:50070/webhdfs/v1/?user.name=web_crawler&op=GETHOMEDIRECTORY :

\n 502 Server dropped connection

\n

Generated Fri, 21 Dec 2018 02:03:18 GMT by Polipo on .\n\r\n'

则一般是访问认证错误,可能原因是账户密码不正确或者无权限,或者本地网络不在可访问名单中

㈥ hadoop面试题之HDFS

1、简单介绍下hadoop吧?

    广义上hadoop是指与hadoop相关的大数据生态圈。包含hive、spark、hbase等。

    狭义上hadoop指的是apache的开源框架。有三个核心组件:

----hdfs:分布式文件存储系统

----yarn:分布式资源管理调度平台

----mr:分布式计算引擎

2、介绍下hdfs?

全称为Hadoop Distributed File System。有三个核心组件:

namenode:有三个作用,第一是负责保存集群的元数据信息,第二是负责维护整个集群节点的正常运行。

第三是负责处理客户端的请求。

datanode:负责实际保存数据。实际执行数据块的读写操作。

secondarynamenode:辅助namenode进行元数据的管理。不是namenode的备份。

3、namenode的工作机制?

    namenode在内存中保存着整个内存系统的名称空间和文件数据块的地址映射。整个hdfs可存储的文件数受限于namenode的内存大小。所以hdfs不适合大量小文件的存储。

---namenode有三种元数据存储方式来管理元数据:

    》内存元数据:内存中保存了完整的元数据

    》保存在磁盘上的元数据镜像文件(fsimage):该文件时hdfs存在磁盘中的元数据检查点,里面保存的是最后一次检查点之前的hdfs文件系统中所有目录和文件的序列化信息。

    》数据操作日志文件(edits):用于衔接内存meta data和持久化元数据镜像fsimage之间的操作日志文件。保存了自最后一次检查点之后所有针对hdfs文件系统的操作。如对文件的增删改查。

4、如何查看元数据信息?

    因为edits和fsimage文件是经过序列化的,所以不能直接查看。hadoop2.0以上提供了查看两种文件的工具。

----命令:hdfs oiv 可以将fsimage文件转换成其他格式,如xml和文本文件。-i 表示输入fsimage文件。-o 输出文件路径,-p 指定输出文件

                hdfs oev可以查看edits文件。同理需要指定相关参数。

详情查看: https://www.imooc.com/article/79705

4、datanode的工作机制?

    1)以数据块的形式存储hdfs文件

    2)datanode响应客户端的读写请求

    3)周期性的向namenode汇报心跳信息、数据块信息、缓存数据块信息

5、secondary namenode工作机制?

    当发生checkpoint机制时会触发second namenode进行工作。checkpoint:

    新的edists文件不会立即和fsimage文件合并,是在edits文件大小超过(默认)64m,或者时间超过(默认)1小时,会触发checkpoint操作。当checkpoint时,namenode会新建一个edits.new的文件,此时second namenode将文件fsimage文件和edits文件(http get)到本地,然后加载到内存中进行合并,完成的文件名称为fsimage.ckpt。最后 second namenode将该文件(http post)到namenode,然后edits.new和fsimage.ckpt文件转换为fsimage和edits。

6、hdfs的文件副本机制?

    所有的文件都是以块的形式保存到hdfs中。块的大小默认为128m。在hdfs-site文件中进行指定。

    动态副本创建策略:默认副本数是3,可以在上传文件时,显式设定replication。也可以通过指令修改文件的副本数 hadoop fs -setrep -R 1

7、为实现高可用,hdfs采用了哪些策略?

    副本机制、机架感知、心跳机制、安全模式、校验和、回收站、元数据保护、快照机制(具体介绍导航- https://www.jianshu.com/writer#/notebooks/44567747/notes/66453316 )

8、hdfs的存储过程?

    ①client向hdfs发起写请求,通过RPC与namenode建立通讯。namenode检查文件是否存在等信息,返回是否可以存储。

    ②client将文件切割为一个个block块,client申请存储第一块block。namenode返回可以存储这个block块的datanode的地址,假设为ABC。

    ③A到B到C逐级构建pipeline。client向A上传第一个packet,默认为64k。A收到一个packet后会将packet传给B,再传给C。pipeline反方向返回ack信息。最终由第一个节点A将pipelineack发送给client

    ④一个block完成之后,再进行下一个block的存储过程。

9、hdfs的读过程?

10、hdfs的垃圾桶机制?

    hdfs的垃圾桶机制默认是关闭的,需要手动开启。hdfs删除的文件不会立刻就删除,而是在设定的时间后进行删除。

11、hdfs的扩容和缩容



12、

㈦ HDFS的数据存储之block

HDFS被设计成支持非常大的文件,与HDFS兼容的应用是那些处理大数据集的应用。这些应用程序处理非常大的文件在具有只被创建和写入一次,被读取一次或多次的特性,即HDFS中存储的大文件是一次写入多次读取不支持修改的,同时要求HDFS满足应用程序以流读取速度的要求。

正是因为大数据系统对所需的文件系统有这些要求,就决定了HDFS在存储模型上具有以下特点:

㈧ 3.4 HDFS存储原理

一、涉及的问题

1. 冗余数据保存

2. 数据保存策略

3. 数据恢复

二、冗余数据保存问题

1. 冗余因子

出于成本考虑(也是HDFS优势),HDFS常架构在廉价机器上——经常出故障。所以必须有冗余机制。一般每个块都保存3份,即冗余因子默认是3

注意:伪分布式配置,即名称节点和数据节点都放在同一个机器上,则冗余因子显然只能是1,因为只有一个机器

2. 冗余机制的好处

(1) 加快数据传输速度——当多个客户端同时想访问相同数据块时,可以同时并行而不需要排队

(2) 很容易检查数据错误——互相对照发现错误

(3) 保证数据可靠性——HDFS有这样的机制:一旦探测到一个副本故障,会自动复制正确副本,使冗余因子恢复默认值

三、数据保存与读取

1. 第一副本存放策略:

(1) 如果保存请求来自集群内部,第一个副本放在发起者(应用)所在节点。比如一个在DataNode1上的应用发起存数据请求,那就把它第一份副本也存在DataNode1

(2) 如果保存请求来自集群外部,HDFS会随机挑选一台磁盘不太忙且CPU不太忙的节点来放置第一个副本

2. 第二个副本存放策略:

放在和第一副本不同的机架的节点上 。如下图中DataNode4,它和DataNode1在不同机架上

3. 第三副本放置策略:

放在和第一副本相同的机架的其他节点。如图中的DataNode2或DataNode3

4. 更多副本存放策略:

全部随机放置(依靠随机算法

5、数据读取

原则:就近读取

——HDFS提供一个API可以告诉数据节点的机架ID,客户端也可以用API诊断自己所在机架ID。ID相同说明在同一机架。而相同机架数据间通信很快,它们就是“相近”的数据。

——而前面也说了,每个数据块都有多个不同的副本,如果找到某个副本和客户端在同一个机架上,就优先选此副本。如果没有就随机找一个副本读取

四、数据的错误与恢复

1. 名称节点出错

只有一个名称节点,而且它保存了核心数据结构FsImage和EditLog。恢复方法:

(1) 在HDFS1.0里只能暂停服务,从第二名称节点(冷备份)恢复

(2) 在HDFS2.0里可以直接用热备份恢复而不用暂停服务

2. 数据节点出错

(1) 如何发现数据节点出问题:

在整个运行期间,DataNode都会定期通过远程调用向NameNode发送心跳信息。一旦隔了一个周期收不到心跳信息,则NameNode就知道这个DataNode发生了故障

(2) 如何恢复数据节点:

NameNode会在状态列表里把出错的DataNode标记为不可用(宕机),然后把它里面的数据块对应的备份(在其他DataNode上)复制到另一个DataNode上去

——HDFS和其他分布式文件系统最大的区别就是 可以调整冗余数据位置 。这种调整不仅发生在故障时,也可以在在机器负载不均衡时把一个DataNode的数据迁移到另一个上面以平衡负载

3. 数据出错

(1) 如何发现数据出错:

“校验码机制”——客户端每写入一个数据块,都会为其生成一个校验码并保存在同一文件目录下。读取数据块同时会核对其校验码,如果不对说明数据出问题了。

(2) 如何恢复数据:

从备份复制过来

Reference:

https://www.icourse163.org/learn/XMU-1002335004#/learn/content?type=detail&id=1214310117&cid=1217922275&replay=true

热点内容
天龙八部自动挖矿脚本怎么写 发布:2025-07-15 07:42:01 浏览:644
本地编译器怎么运行 发布:2025-07-15 07:42:00 浏览:993
加密狗会坏吗 发布:2025-07-15 07:38:32 浏览:562
jdbc读取数据库 发布:2025-07-15 07:38:23 浏览:319
华为手机如何设置隐私密码锁 发布:2025-07-15 07:36:09 浏览:979
java怎么导入jar 发布:2025-07-15 07:22:02 浏览:394
雷蛇键盘配置文件怎么设置完整视频 发布:2025-07-15 07:20:31 浏览:409
存储器1b 发布:2025-07-15 07:09:03 浏览:975
雷电共享存储 发布:2025-07-15 07:09:02 浏览:59
威纶通反编译后字体变大了 发布:2025-07-15 07:08:56 浏览:713