hail.utils.java.FatalError: IllegalStateException: unread block data
hail.utils.java.FatalError: IllegalStateException: unread block data
我正在尝试 运行 spark 集群上的一个基本脚本,它接收一个文件,将其转换并以不同的格式输出。目前的 spark 集群由 1 个主节点和 1 个从节点组成,两者都 运行 在同一个节点上。完整的命令是:
nohup spark-submit --master spark://tr-nodedev1:7077 --verbose --conf spark.driver.port=40065 --driver-memory 4g --conf spark.driver.extraClassPath=/opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar
--conf spark.executor.extraClassPath=./hail-all-spark.jar ./hail_scripts/v02/convert_vcf_to_hail.py /clinvar_37.vcf -ht
--genome-version 37 --output /seqr-reference-hail2/clinvar_37.ht &
并且报错:
hail.utils.java.FatalError: IllegalStateException: unread block data
更详细的堆栈跟踪可以在我问过同样问题的另一个论坛上找到:
https://discuss.hail.is/t/unread-block-data-error-spark-master-slave-issue/1182
这样的命令工作正常:
nohup spark-submit --conf spark.driver.extraClassPath=/opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar
--conf spark.executor.extraClassPath=./hail-all-spark.jar ./hail_scripts/v02/convert_vcf_to_hail.py /hgmd_pro_2019.3_hg19_noDB.vcf -ht
--genome-version 37 --output /seqr-reference-hail2/hgmd_2019.3_hg19_noDB.ht &
因此,在本地模式下 运行 没问题,但在独立模式下则不然。所以,我猜测是主从不同设置的问题,可能JAVA
。但是,像这样将它们设置在 spark-env.sh
中:
export JAVA_HOME=/usr/lib/jvm/java
export SPARK_JAVA_OPTS+=" -Djava.library.path= $SPARK_LIBRARY_PATH : $JAVA_HOME "
没有解决问题。要启动 master + slave,我只使用 start-all.sh
脚本。任何建议将不胜感激。
好的,我们修复了它,解决方案是将以下设置添加到我们运行脚本的命令中:
–jars /opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar
因此,工作命令如下:
spark-submit --master spark://ai-grisnodedev1:7077 --verbose --conf spark.driver.port=40065 --driver-memory 4g --conf spark.driver.extraClassPath=/opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar --conf spark.executor.extraClassPath=./hail-all-spark.jar --jars /opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar test_hail.py
对于未来的 Hail 0.2 用户可能很重要要知道这个 --jars 参数需要指定,并且应该指向 hail-all-spark.jar。
我正在尝试 运行 spark 集群上的一个基本脚本,它接收一个文件,将其转换并以不同的格式输出。目前的 spark 集群由 1 个主节点和 1 个从节点组成,两者都 运行 在同一个节点上。完整的命令是:
nohup spark-submit --master spark://tr-nodedev1:7077 --verbose --conf spark.driver.port=40065 --driver-memory 4g --conf spark.driver.extraClassPath=/opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar
--conf spark.executor.extraClassPath=./hail-all-spark.jar ./hail_scripts/v02/convert_vcf_to_hail.py /clinvar_37.vcf -ht
--genome-version 37 --output /seqr-reference-hail2/clinvar_37.ht &
并且报错:
hail.utils.java.FatalError: IllegalStateException: unread block data
更详细的堆栈跟踪可以在我问过同样问题的另一个论坛上找到:
https://discuss.hail.is/t/unread-block-data-error-spark-master-slave-issue/1182
这样的命令工作正常:
nohup spark-submit --conf spark.driver.extraClassPath=/opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar
--conf spark.executor.extraClassPath=./hail-all-spark.jar ./hail_scripts/v02/convert_vcf_to_hail.py /hgmd_pro_2019.3_hg19_noDB.vcf -ht
--genome-version 37 --output /seqr-reference-hail2/hgmd_2019.3_hg19_noDB.ht &
因此,在本地模式下 运行 没问题,但在独立模式下则不然。所以,我猜测是主从不同设置的问题,可能JAVA
。但是,像这样将它们设置在 spark-env.sh
中:
export JAVA_HOME=/usr/lib/jvm/java
export SPARK_JAVA_OPTS+=" -Djava.library.path= $SPARK_LIBRARY_PATH : $JAVA_HOME "
没有解决问题。要启动 master + slave,我只使用 start-all.sh
脚本。任何建议将不胜感激。
好的,我们修复了它,解决方案是将以下设置添加到我们运行脚本的命令中:
–jars /opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar
因此,工作命令如下:
spark-submit --master spark://ai-grisnodedev1:7077 --verbose --conf spark.driver.port=40065 --driver-memory 4g --conf spark.driver.extraClassPath=/opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar --conf spark.executor.extraClassPath=./hail-all-spark.jar --jars /opt/seqr/.conda/envs/py37/lib/python3.7/site-packages/hail/hail-all-spark.jar test_hail.py
对于未来的 Hail 0.2 用户可能很重要要知道这个 --jars 参数需要指定,并且应该指向 hail-all-spark.jar。