Hadoop优化及问题汇总

1 HDFS副本设置

说明:HDFS文件上传默认创建3个副本,在3个节点上面分别写入一个副本;

这里修改副本数为默认2个。

修改client端的hdfs-site.xml文件,哪里上传,哪里修改。

  • 修改hdfs-site.xml中的dfs.replication参数,默认为3,这里修改为1

image-20210716155859672

  • 也可以通过命令更改已经上传的文件的副本数。
1
hadoop fs -setrep -R 2 /
  • 通过命令指定上传文件的副本数
1
hadoop dfs -D dfs.replication=1 -put testfile /testdir/
  • 服务端的修改方式,可以登录各个datanode节点修改hdfs-size.xml文件,也可以通过修改Ambari平台进行修改

HDFS>>configs>>Adbanced

image-20210716160920131

保存,重启指定服务。

2 删除HDFS文件空间不释放-回收站

core-size.xml 中的fs.trash.interval 参数

删除检查点后的分钟数。如果为零,则禁用垃圾功能。可以在服务器和客户机上配置此选项。如果禁用了垃圾桶服务器端,则检查客户端配置。如果在服务器端启用了垃圾桶,那么将使用在服务器上配置的值,并忽略客户机配置值。

core-size.xml 中的fs.trash.checkpoint.interval 参数

垃圾检查点之间的分钟数。应小于或等于fs.trash.interval。如果为,则该值设置为fs.trash.interval的值。每次检查点运行时,它都会在当前之外创建一个新的检查点,并删除几分钟前创建的超过fs.trash.interval的检查点。

fs.trash.interval是在指在这个回收周期之内,文件实际上是被移动到trash的这个目录下面,而不是马上把数据删除掉。等到回收周期真正到了以后,hdfs才会将数据真正删除。默认的单位是分钟
fs.trash.checkpoint.interval则是指垃圾回收的检查间隔,应该是小于或者等于fs.trash.intervalimg

2.1 举例操作

2.1.1 一个副本

备注:下面操作上传文件,默认只创建一个副本

通过hdfs dfs -rm 命令删除HDFS集群文件后,集群空间不释放(即DFS Used

image-20210716160643775

1
2
3
4
5
# 上传文件
hadoop fs -put /hw1/* /hw1/
# 删除文件
hadoop fs -rm /hw1/*
# 因为默认开启了垃圾回收功能,文件被放到了回收站,所以容量没有变化

image-20210716162443573

1
2
# 清空回收站(跟windows不一样,它是打包,文件名为时间戳,时间到了依然删除)
hadoop fs -expunge

发现清空回收站后,DFS Used依然没有变化。

image-20210716162443573

image-20210716164654420

手动删除回收站文件

1
2
# 手动删除回收站的文件,查看空间回收
hadoop fs -rm -f /user/hdfs/.Trash/210716162922

image-20210716165645746

通过命令删除文件,跳过回收站

1
2
# 跳过回收站,可达到上面操作删除文件释放空间同样的效果
hadoop fs -rm -r -skipTrash /hw1/*

2.1.2 多个副本

image-20210716160643775

1
2
3
4
5
# 上传600M文件创建2份副本,占用空间是双倍的
hadoop fs -D dfs.replication=2 -put /hw1/* /hw1/
# 删除文件
hadoop fs -rm /hw1/*
# 因为默认开启了垃圾回收功能,文件被放到了回收站,所以容量没有变化

image-20210716170651159

1
2
# 跳过回收站删除文件,空间回收了
hadoop fs -rm -r -skipTrash /hw1/*

image-20210716170910796

image-20210716170933232

3 Ambari启动成功后File View无法访问

参考链接

基本类似页面无法访问均可以通过重新创建可以得到解决

启动成功后,打开文件视图报错Issues detected
Service ‘hdfs’ check failed: Server Error

在这里插入图片描述

在这里插入图片描述

查看日志:
Caused by: org.apache.ambari.server.ClusterNotFoundException: Cluster not found, clusterId=2
at org.apache.ambari.server.state.cluster.ClustersImpl.getCluster(ClustersImpl.java:277)
at org.apache.ambari.server.view.ViewRegistry.getCluster(ViewRegistry.java:928)
… 101 more

在这里插入图片描述

出现原因:在新建文件视图之后,对俩个文件视图进行了对比,怀疑可能是集群名字的问题

在这里插入图片描述

解决方案:
新建一个文件视图

在这里插入图片描述

在这里插入图片描述

发现可以成功查看

image-20210716172839414

4 Ambari Hive View 页面提示错误

Service ‘userhome’ check failed: File does not exist: /user/admin

我访问Ambari页面的电脑默认的用户名是admin

image-20210716174501747

解决办法:自己创建一个

1
hadoop fs -mkdir /user/admin

image-20210716174626773

5 Ambari Server Alert 的故障排查

问题现象

本篇文章适用于 HDI(3.6) ,内置 Ambari-2.5 以上版本中常见的异常报警:

1
There are xx stale Alerts from 1 host(s):

问题分析

如果在 Ambari Server 中突然发现了大量的 stale alerts(>20),通常来说是因为 Ambari-agent 出现了线程异常,导致无法正常将 metrics 的结果返回给 Server。

该问题通常表现为所有的 HDI 服务都可以正常访问,但是 Ambar 监控界面中断断续续的出现 Ambari Server Alert 并且会断断续续的出现。

问题截图如下:

1
There are 36 stale Alerts from 1 host(s):

01 02

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

There are 27 stale alerts from 1 host(s):
NameNode High Availability Health,
hdp4.test
[Ambari Agent Distro/Conf Select Versions (1h 30m),
DataNode Health Summary (1h 26m),
DataNode Heap Usage (1h 28m),
DataNode Process (1h 26m),
DataNode Storage (1h 28m),
DataNode Unmounted Data Dir (1h 28m),
DataNode Web UI (1h 26m),
Flume Agent Status (1h 26m),
HBase RegionServer Process (1h 26m),
HDFS Capacity Utilization (1h 28m),
HDFS Pending Deletion Blocks (1h 28m),
HDFS Upgrade Finalized State (1h 26m),
Host Disk Usage (1h 26m),
JournalNode Web UI (1h 26m),
Metrics Monitor Status (1h 26m),
NameNode Blocks Health (1h 28m),
NameNode Client RPC Processing Latency (Hourly) (1h 30m),
NameNode Client RPC Queue Latency (Hourly) (1h 30m),
NameNode Directory Status (1h 26m),
NameNode Host CPU Utilization (1h 30m),
NameNode Last Checkpoint (1h 26m),
NameNode RPC Latency (1h 28m),
NameNode Web UI (1h 26m),
NodeManager Health (1h 26m),
NodeManager Web UI (1h 26m),
ZooKeeper Failover Controller Process (1h 26m)]

解决办法

  1. 使用 putty 登入头节点。

  2. 使用命令确认 Ambari-agent 的 PID: Ambari-agent status 。

    03

  3. 使用命令: top |grep 5130 确认 Ambari-agent 进程的 CPU 使用率. 5130 需要替换成上条命令中的结果。

    04

  4. 如果 CPU 使用率为 100% 则使用命令: service Ambari-agent restart 来重启 Ambari-agent service.

  5. 稍等几分钟,再次刷新 Ambari 界面,Alert 消失。

-------------本文结束感谢您的阅读-------------

本文标题:Hadoop优化及问题汇总

文章作者:OperationMAN

发布时间:2021年07月16日 - 14:07

最后更新:2022年06月05日 - 21:06

原始链接:https://kxinter.gitee.io/2021/07/16/Hadoop优化及问题汇总/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!