hadoop以及hdfs的若干问题
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

hadoop以及hdfs的若干问题

yuc
yuc
2024-04-24 / 最后修改: 2024-04-24 03:32 / 0 评论 / 6 阅读 / 正在检测是否收录...
hdfs丢失块过多的问题

在HDFS客户端,并执行如下命令:

执行命令退出安全模式
hadoop dfsadmin -safemode leave
执行健康检查,删除损坏掉的block
hdfs fsck  /  -delete
namenode 空间不足无法使用

在导入数据的时候把namenode误作为datanode,直接从namenode上传数据到hdfs中,当namenode的磁盘完全被存满之后报错namenode is in safemode。想要删除上传的文件,发现已经无法删除,并且再次提示此错误,想通过以下命令强制离开安全模式safemode:

hadoop dfsadmin -safemode leave

但再次操作删除文件仍然进入safemode,此时进入循环 最后的解决方案:重启hadoop集群,查看是否在safemode中,不是,则删除文件,成功

datanode各节点分布数据差异大

分布最小的节点20%,最大的60%,这样下次导入数据容易导致磁盘不足,需要对集群中分布的数据做balancer,在任意节点执行:

hadoop balancer -threshold 5     #节点之间允许5%大小的容量差值,大小在0-100
设置hdfs中平衡数据的传输带宽

如果传输的带宽过大或者过小都有可能影响节点性能,需要根据情况取一个合适的值,参数 dfs.balance.bandwidthPerSec 默认值: 1048575(1M/s),在balancer的时候每个节点传输的最大带宽,可以修改hdfs-site.xml来修改平衡的带宽

<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>20971520</value>
<description>  Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description>
</property>

这里调整传输的最大带宽为 20M/s,当然也可以临时修改带宽:

hdfs dfsadmin -setBalancerBandwidth 104857600

如果是cdh,则可以通过图形化页面修改值来持久化修改

对当前上传的文件设置冗余

hdfs中上传的文件,如果不特定修改参数,那么副本数就是之前的默认值,但如果对于一些临时大文件,不想要多个副本,则可以在上传的时候手动设置其副本数即可:

hadoop fs -D dfs.replication=1 -put /file/to/path /file/to/hadooppath

如果想要修改以前已上传文件的副本数,则可以通过如下命令:

hadoop fs -setrep -R
cdh中root用户无法在任何hdfs文件夹中创建文件

发现使用root用户也无法在hdfs 根目录下创建文件夹,google了一下,有几个解决办法: 方法一:

a. In cloudera manager, you can change the settings: hdfs->configuration->view&edit, uncheck the Check HDFS Permissions dfs.permissions and restart the hdfs.
# 具体操作:在cdh的web中点击集群-hdfs-配置

方法二:

b.  I resolved the issue by creating a supergroup in /etc/group and updated the user logins on it. I mean user should be part of HDFS supergroup to have access to write on HDFS.
# 具体操作:在服务器中添加supergroup组,然后添加root用户到这个组中/etc/group文件内容直接修改即可supergroup:x:501:root
0

评论

博主关闭了当前页面的评论