HDFS问题集,使用命令报错:com.google.protobuf.ServiceException:java.lang.OutOfMemoryError:java heap space(示例(代码
Posted 王大咩的图书馆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS问题集,使用命令报错:com.google.protobuf.ServiceException:java.lang.OutOfMemoryError:java heap space(示例(代码相关的知识,希望对你有一定的参考价值。
仅个人实践所得,若有不正确的地方,欢迎交流!
一、起因
执行以下两条基本的HDFS命令时报错
1 hdfs dfs -get /home/mr/data/* ./ 2 hdfs dfs -ls /home/mr/data/*
这是正常的两条HDFS命令,怎么会报错了?然后就打开hdfs命令查看问题。
二、分析
1)利用以下命令找到hdfs命令所在路径
1 which hdfs
使用vim hdfs打开脚本,发现当以hdfs dfs 执行时,会利用到HADOOP_CLIENT_OPTS配置项。通过查找该配置项一般在目录/etc/hadoop/conf/hadoop-env.sh中设置。
打开hadoop-env.sh脚本,发现该配置项采用的是默认配置即256M。
2)经查看/home/mr/data目录下有1W+个小文件,但大小只有100M左右,猜测可能是因为文件数据多大使得元数据过大导致加载到client客户端时会引起内存不足(猜测可能不正确,欢迎大佬给出正确解释)。
三、解决方案
加大HADOOP_CLIENT_OPTS的配置,使用两种形式均可解决问题。
1 export HADOOP_CLIENT_OPTS="-Xmx1024m $HADOOP_CLIENT_OPTS" 2 hdfs dfs -get /home/mr/data/* ./ 3 4 HADOOP_CLIENT_OPTS="-Xmx1024m" hdfs dfs -get /home/mr/data/* ./
此外,也可以通过修改hadoop-env.sh中的值连永久性修改该配置。
以上是关于HDFS问题集,使用命令报错:com.google.protobuf.ServiceException:java.lang.OutOfMemoryError:java heap space(示例(代码的主要内容,如果未能解决你的问题,请参考以下文章
报错解决:com.google.android.material.card.MaterialCardView
报错:java.lang.NoClassDefFoundError: com/google/inject/Injector
Hive初始化报错Exception in thread “main“ java.lang.NoSuchMethodError: com.google.common.base.Precondition