我使用英特尔 ISA-L 库在 RHEL 6.7 linux 机器上构建了 Hadoop 3.2.0。此外,在 Hadoop 安装中启用了本机库支持。
我已经使用带有 RS-6-3-1024k 编码器策略的“haoop fs - copyFromLocal”在这个测试集群上复制了一些 parquet 格式文件。但是,当我尝试使用 Spark 2.4.3 读取这些镶木地板文件时,我得到了如下异常。
Caused by: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-330495766-11.57.1.147-1565544876888:blk_-9223372036854684144_16436 file=/mydata/testenv/app_data/DATE=20190812/part-r-00075-afc16916-7d0c-42bb-bb20-d0240b4431d8.snappy.parquet
at org.apache.hadoop.hdfs.DFSInputStream.chooseDataNode(DFSInputStream.java:984)
at org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:642)
at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:882)
at org.apache.hadoop.hdfs.DFSInputStream.read((DFSInputStream.java:934)
at org.apache.hadoop.hdfs.DFSInputStream.read((DFSInputStream.java:735)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at org.apache.parquet.io.DelegatingSeekableInputStream.read(DelegatingSeekableInputStream.java:61)
.....
请注意,我可以使用 hadoop 命令、HDFS Web 界面等将这些文件从 HDFS 复制到本地,没有任何问题。hadoop fsck 表示复制文件的路径也很健康。
注意:虽然我在 RHEL 6.7 上构建了库,但我在 RHEL 7.5 上运行 Hadoop 集群。但是,当我运行“hadoop checknative”命令时,我没有看到任何错误。我确实看到 ISA-L 库已正确启用,即我确实在它旁边的输出中看到了“真实”文本。