執行hadoop任務遇到的問題: Caused by: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/hive/warehouse/rec_new2.db/user_session/.hive-stagi ...
執行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>