1 HDFS副本设置
说明:HDFS文件上传默认创建
3
个副本,在3个节点上面分别写入一个副本;这里修改副本数为默认2个。
修改
client
端的hdfs-site.xml
文件,哪里上传,哪里修改。
- 修改
hdfs-site.xml
中的dfs.replication
参数,默认为3
,这里修改为1
- 也可以通过命令更改已经上传的文件的副本数。
1 | hadoop fs -setrep -R 2 / |
- 通过命令指定上传文件的副本数
1 | hadoop dfs -D dfs.replication=1 -put testfile /testdir/ |
- 服务端的修改方式,可以登录各个datanode节点修改hdfs-size.xml文件,也可以通过修改Ambari平台进行修改
HDFS>>configs>>Adbanced
保存,重启指定服务。
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.interval
。
2.1 举例操作
2.1.1 一个副本
备注:下面操作上传文件,默认只创建一个副本
通过
hdfs dfs -rm
命令删除HDFS集群文件后,集群空间不释放(即DFS Used
)
1 | # 上传文件 |
1 | # 清空回收站(跟windows不一样,它是打包,文件名为时间戳,时间到了依然删除) |
发现清空回收站后,DFS Used依然没有变化。
手动删除回收站文件
1 | # 手动删除回收站的文件,查看空间回收 |
通过命令删除文件,跳过回收站
1 | # 跳过回收站,可达到上面操作删除文件释放空间同样的效果 |
2.1.2 多个副本
1 | # 上传600M文件创建2份副本,占用空间是双倍的 |
1 | # 跳过回收站删除文件,空间回收了 |
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
出现原因:在新建文件视图之后,对俩个文件视图进行了对比,怀疑可能是集群名字的问题
解决方案:
新建一个文件视图
发现可以成功查看
4 Ambari Hive View 页面提示错误
Service ‘userhome’ check failed: File does not exist: /user/admin
我访问Ambari页面的电脑默认的用户名是admin
解决办法:自己创建一个
1 | hadoop fs -mkdir /user/admin |
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): |
1 |
|
解决办法
使用 putty 登入头节点。
使用命令确认 Ambari-agent 的 PID: Ambari-agent status 。
使用命令:
top |grep 5130
确认 Ambari-agent 进程的 CPU 使用率.5130
需要替换成上条命令中的结果。如果 CPU 使用率为 100% 则使用命令:
service Ambari-agent restart
来重启 Ambari-agent service.稍等几分钟,再次刷新 Ambari 界面,Alert 消失。