hadoop日常维护之问题解决01

时间:2022-12-18 04:40:26

执行hadoop任务遇到的问题:

Caused by: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/hive/warehouse/rec_new2.db/user_session/.hive-staging_hive_2017-12-10_08-22-41_311_4339813855157373054-1/-ext-10000/_temporary/0/_temporary/attempt_20171210082241_0000_m_000000_3/appid=10017/dt=2017-12-09/part-00000 could only be replicated to 0 nodes instead of minReplication (=1).  There are 3 datanode(s) running and no node(s) are excluded in this operation

当时遇到无论是hive向hadoop写入数据还是spark、storm写入数据都报以上错误:

一开始网上各种找,冷静下仔细看hadoop运行日志信息,

日志查看:

$HADOOP_HOME/logs

通过在master节点查看,tail –f hadoop-root-namenode-hadoop-master.log  监听namenode运行日志信息,发现问题所在:

原来在hadoop配置文件中,预留磁盘大小为20G,通过df -hl 命令查看磁盘空间大小,发现hadoop-slave3 磁盘空间只剩17G,导致数据无法插入;

解决方案:增大磁盘空间或删除较大文件,达到配置预留磁盘空间即可;

由于spark配置的是standalone模式,导致每执行一个spark任务,运行日志中都会有一个运行任务所需jar包;累积下来占用磁盘空间;可定期删除,也可以配置spark-env.sh 每执行完后直接删除运行日志信息及jar包;

spark运行任务查看运行日志信息及jar包所在位置:$SPARK_HOME/work

运行完直接删除运行日志信息及jar包,在spark-env.sh中加入如下内容:

SPARK_WORKER_OPTS=”-Dspark.worker.cleanup.enabled=true”

注意官方文档中说不管程序是否已经停止,都会删除文件夹,这是不准确的,只有停止掉的程序文件夹才会被删除

附:

Hdfs-site.xml:

可以通过配置,修改配置只需停掉集群重启即可:

$HADOOP_HOME/conf/hdfs-site.xml 文件里的 dfs.datanode.du.reserved 属性来配置HDFS预留磁盘的空间大小,从而限制 data node 的磁盘使用量(单位是字节数),如以下配置会给磁盘预留20GB的空间:

<property>

<name>dfs.datanode.du.reserved</name>

<!-- reserved space in bytes -->

<value>21474836480</value>

<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.

</description>

</property>