Hadoop中的HDFS

HDFS(分布式文件系统)

一:作用

为了解决大量文件存储的问题,hadoop提供了一个组件HDFS。可以将文件分散到不同的服务器上。

二:角色分配

分为namenode跟datenode。

namenode主要作用:存储目录信息,存储元数据信息,管理datenode。

datenode主要作用:存储具体的文件的block块。

三:详细介绍namenode

1,记录元数据信息:文件的路径,文件的块信息,文件块的位置,文件的切块大小,文件的副本数量。

2,响应客户端的请求。

3,平衡datenode上文件块存储负载:datenode在启动时,会向namenode报告自身所持有的block,当客户端要上传文件时,namenode会优先分配空间剩余比较多的datenode给客户端使用。

4,元数据:完整的元数据存储在内存中,查询快,修改快,但是断电数据即丢失。解决办法,将数据序列化到磁盘中。

5,namenode还会对客户端引起元数据变化的操作进行日志记录。

6,SecondaryNameNode会定期从namenode上下载新编号的日志到本地,与fsiage文件进行合并处理,处理完成之后返回给namenode

SecondaryNameNode

1,向namenode请求checkpoint

2,将日志文件下载到自己的磁盘(合并日志文件)

3,SecondaryNameNode会定期从namenode上下载新编号的日志到本地,与fsiage文件进行合并处理,处理完成之后返回给namenode

datenode

1,接收客户端发送过来的block

2,为客户端读取指定的文件块block

3,定期向namenode汇报自身所持有的block


hdfs读写数据流程









### Hadoop HDFS Shell 命令集合 以下是 Hadoop HDFS 中常用的 Shell 命令列表: #### 文件操作类命令 1. **上传文件到 HDFS** - 使用 `copyFromLocal` 或 `put` 将本地文件复制到 HDFS 上。 ```bash hadoop fs -copyFromLocal [本地地址] [hadoop目录] hadoop fs -put [本地地址] [hadoop目录] ``` 这两个命令功能相同,均用于将数据从本地文件系统传输至 HDFS[^1]。 2. **下载文件到本地** - 使用 `get` 或 `copyToLocal` 将 HDFS 文件下载到本地。 ```bash hadoop fs -get [hdfs路径] [本地地址] hadoop fs -copyToLocal [hdfs路径] [本地地址] ``` 3. **查看文件内容** - 查看 HDFS 文件的内容。 ```bash hadoop fs -cat [hdfs路径] ``` 4. **显示部分文件内容** - 显示文件开头部分内容(类似于 Linux 的 head 命令)。 ```bash hadoop fs -head [hdfs路径] ``` 5. **删除文件或目录** - 删除单个文件或整个目录。 ```bash hadoop fs -rm [hdfs路径] hadoop fs -rm -r [hdfs路径] ``` 6. **移动文件** - 移动文件位置或将文件重命名。 ```bash hadoop fs -mv [源路径] [目标路径] ``` 7. **创建空白文件** - 创建一个新的空文件(不推荐使用此方法)。 ```bash hadoop fs -touchz [hdfs路径] ``` #### 目录操作类命令 1. **创建目录** - 在 HDFS 上创建新目录。 ```bash hadoop fs -mkdir -p [hdfs路径] ``` 2. **列出目录内容** - 列出指定目录下的所有文件和子目录。 ```bash hadoop fs -ls [hdfs路径] ``` 3. **更改权限** - 修改文件或目录的访问权限。 ```bash hadoop fs -chmod [权限模式] [hdfs路径] ``` 4. **更改所有权** - 更改文件或目录的所有者。 ```bash hadoop fs -chown [用户名[:组名]] [hdfs路径] ``` #### 配置与状态查询类命令 1. **设置副本数量** - 设置 HDFS 文件的副本数量。 ```bash hadoop fs -setrep [-w] <副本数> <hdfs路径> ``` 如果需要递归地应用到目录中的所有文件,则加上 `-R` 参数[^2]。 2. **统计磁盘空间** - 统计当前目录及其子目录占用的空间大小。 ```bash hadoop fs -du -s -h [hdfs路径] ``` 3. **检查文件健康状况** - 检查 HDFS 文件的状态并报告损坏情况。 ```bash hadoop fsck [hdfs路径] ``` 4. **显示配置信息** - 展示客户端连接到 NameNode 和 DataNodes 的详细信息。 ```bash hadoop fs -stat [hdfs路径] ``` #### 集群管理类命令 1. **启动/停止集群服务** - 启动或关闭 HDFS 和 YARN 服务。 ```bash sbin/start-dfs.sh sbin/start-yarn.sh sbin/stop-dfs.sh sbin/stop-yarn.sh ``` 2. **单独控制节点进程** - 单独启停 NameNode/Datanode 或 ResourceManager/Nodemanager。 ```bash sbin/hadoop-daemon.sh start namenode sbin/hadoop-daemon.sh stop datanode sbin/yarn-daemon.sh start resourcemanager sbin/yarn-daemon.sh stop nodemanager ``` --- ### 注意事项 - 当执行某些敏感操作时可能会遇到错误提示。例如,在尝试调整副本策略时,需确认 `hdfs-site.xml` 是否已正确配置替换策略属性[^5]。 ```xml <property> <name>dfs.client.block.write.replace-datanode-on-failure.policy</name> <value>NEVER</value> </property> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值