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