HDFS04

===================HDFS副本放置策略===================

一个文件划分成多个block,每个 block存多份,如何为每个block选 择节点存储这几份数据?

Block副本放置策略:

√副本1:同Client节点上

√副本2:不同机架的节点上

√副本3:与第二个副本同一机架的另一个节点上

√其他副本:随机挑选

 

 

 

===================HDFS不适合存储小文件===================

 元信息存储在NameNode内存中 ------------->

√一个节点的内存是有限的

存储大量小文件消耗大量的寻到时间 ------------->

√类比拷贝大量小文件与拷贝同等大小的一个大文件

NameNode存储block数目有限 ------------->

√一个block元信息消耗大约150byte内存

√存储1亿个block,大约需要20GB内存

√如果一个文件大小为10K,则1亿个文件大小仅为1TB(但要消耗掉 NameNode 20GB内存)

 

转载于:https://www.cnblogs.com/xtdxs/p/7074649.html

### HDFS NameNode Format 操作教程 #### 1. **HDFS NameNode 格式化概述** HDFS 的 `hdfs namenode -format` 是用于初始化 HDFS 文件系统的命令。该命令会创建必要的元数据目录结构并写入 VERSION 文件到指定路径下,通常位于 `/tmp/...` 或者由配置文件中的参数定义的位置。 此操作仅需在首次部署 HDFS 集群或者重新初始化集群时执行一次。如果已经存在旧的数据,则需要谨慎处理以防丢失重要信息[^1]。 --- #### 2. **准备工作** ##### a. 确认环境变量设置 确保 `$HADOOP_HOME` 和 PATH 已正确定义。如果没有正确加载 Hadoop 路径,可能会遇到 `hdfs command not found` 错误。可以通过编辑 `/etc/profile` 添加如下内容实现: ```bash export HADOOP_HOME=/path/to/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source /etc/profile ``` 验证是否生效可以运行以下命令测试: ```bash echo $HADOOP_HOME which hdfs ``` 上述步骤解决了因未找到 Hadoop 安装路径而导致的格式化失败问题[^3]。 --- ##### b. 编辑核心配置文件 两个重要的 XML 配置文件分别是 `core-site.xml` 和 `hdfs-site.xml`: - **core-site.xml**: 设置 NameNode 数据存储位置。 ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> ``` - **hdfs-site.xml**: 自定义副本数、共享日志地址等高级选项。 ```xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/data-hadoop/namenode</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://dem02:8485;dem03:8485;dem04:8485/mycluster</value> </property> </configuration> ``` 注意:如果 `dfs.namenode.shared.edits.dir` 中主机名拼写有误(如将 slave 写成 dem02),可能导致格式化失败。修正后再次尝试即可成功。 --- #### 3. **执行格式化命令** 完成以上准备后,在终端中切换至具有管理员权限的状态,并运行下列指令完成 NameNode 初始化工作: ```bash sudo bin/hdfs namenode -format ``` 若无特殊需求,默认情况下无需额外参数;但为了区分不同用途可附加自定义名称作为标记,例如 `-nonInteractive myClusterName`[^2]。 某些场景下由于先前残留临时文件干扰新实例建立过程,建议清理后再试: ```bash rm -rf /tmp/* rm -rf /path/to/QJEditsData/ ``` 这里提到 QJEditsData 文件夹是因为它可能是在多节点环境中产生的多余记录项之一[^4]。 另外需要注意的是,当 core-site.xml 存在语法错误比如标签闭合不当等情况也会引发异常终止现象(`java.io.IOException`)。此时应仔细核对每处细节直至完全匹配标准模板为止[^5]。 --- #### 4. **后续验证** 一旦顺利完成格式化进程,可通过检查目标磁盘分区是否存在相应子目录确认实际效果。接着启动整个服务链路观察状态变化情况: ```bash start-dfs.sh jps | grep NameNode ``` 正常状况下应该能看到类似下面这样的输出结果表明一切就绪待命: ``` 12345 NameNode ``` --- ### 注意事项总结 - 如果之前已做过多次格式化而当前又报错,请先彻底清除所有关联缓存区域再重头开始。 - 对于涉及敏感生产资料的操作务必提前做好充分备份以免造成不可逆损害。 - 正确填写各个组件间通信所需的具体 IP 地址而非泛指 localhost 可提高跨网段协作效率减少潜在冲突风险。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值