HDFS之我遇到的各种问题

本文主要介绍了Hadoop集群中常见的技术问题及解决方案,包括Hostname解析错误、DeltaRPMs禁用、SASL启动失败等问题,并提供了HDFS客户端连接用户名配置、磁盘均衡调整等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hostname问题

问题描述

Datanode denied communication with namenode because hostname cannot be resolved (ip=xx.xx.xx.xx, hostname=xx.xx.xx.xx)
    at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:876)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:5269)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:1178)
    at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:100)
    at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService$2.callBlockingMethod(DatanodeProtocolProtos.java:29184)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2281)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2277)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2275)

解决方案

A. 在/etc/hosts中添加映射关系

IP	hostname
IP	hostname
...

B. 设置取消hostname检查

dfs.namenode.datanode.registratin.io-hostname-check: false

安装问题

deltarpm

A. 问题描述

Delta RPMs disabled because /usr/bin/applydeltarpm not installed

B. 解决方案

yum install deltarpm

SASL

A. 问题描述

Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found (code THRIFTTRANSPORT): TTransportException('Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found',)

B. 解决方案

yum -y install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi

libxslt.so

A. 问题描述

 Couldn't import snappy. Support for snappy compression disabled.
File "/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hue/build/env/lib/python2.7/site-packages/lxml-3.3.6-py2.7-linux-x86_64.egg/lxml/html/__init__.py", line 42, in <module> from lxml import etree
ImportError: libxslt.so.1: cannot open shared object file: No such file or directory

B. 解决方案

yum install httpd -y

Hive

注释中文乱码问题

alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8; 
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8; 
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8; (分区表)

HDFS

客户端连接用户名

使用Java客户端在读写HDFS时,由于在Configuration中无法配置用户,如果不指定用户,默认使用的是Java进程用户。指定用户的方法如下

## 在环境变量中添加,或使用相应的用户启动Java程序
export HADOOP_USER_NAME="[Target User]"

参考文章:Java连接hdfs指定用户名

HDFS磁盘均衡

有时候集群需要添加新的磁盘,使用原生的机制,既

## 这里选择:可用空间
dfs.datanode.fsdataset.volume.choosing.policy
## 这里配置了:0.95
dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction

但还是会存在部分告警问题,因此需要平衡一下磁盘空间。需要如下设置

dfs.disk.balancer.enabled=true

可以使用命令行手动触发磁盘平衡

## hdfs balancer
-plan [hostname or ip] ## 生成执行计划
-execute [path] ## 执行计划的路径
-report [-top N] ## 查看平衡报告
-canel ## 取消正在执行的磁盘平衡计划
-query ## 查询

手动获取最新FsImage快照

hdfs dfsadmin -fetchImage ~/

获取HDFS健康状况

hdfs dfsadmin -report
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值