私はGoogleのdataprocクラスタ上のスパークジョブを実行しようとしているが、次のエラーを取得しています:HadoopのセキュリティGroupMappingServiceProvider例外
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: class org.apache.hadoop.security.JniBasedUnixGroupsMapping not org.apache.hadoop.security.GroupMappingServiceProvider
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2330)
at org.apache.hadoop.security.Groups.<init>(Groups.java:108)
at org.apache.hadoop.security.Groups.<init>(Groups.java:102)
at org.apache.hadoop.security.Groups.getUserToGroupsMappingService(Groups.java:450)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:310)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:277)
at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:833)
at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:803)
at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:676)
at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2430)
at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2430)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2430)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:295)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
at com.my.package.spark.SparkModule.provideJavaSparkContext(SparkModule.java:59)
at com.my.package.spark.SparkModule$$ModuleAdapter$ProvideJavaSparkContextProvidesAdapter.get(SparkModule$$ModuleAdapter.java:140)
at com.my.package.spark.SparkModule$$ModuleAdapter$ProvideJavaSparkContextProvidesAdapter.get(SparkModule$$ModuleAdapter.java:101)
at dagger.internal.Linker$SingletonBinding.get(Linker.java:364)
at spark.Main$$InjectAdapter.get(Main$$InjectAdapter.java:65)
at spark.Main$$InjectAdapter.get(Main$$InjectAdapter.java:23)
at dagger.ObjectGraph$DaggerObjectGraph.get(ObjectGraph.java:272)
at spark.Main.main(Main.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:755)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.RuntimeException: class org.apache.hadoop.security.JniBasedUnixGroupsMapping not org.apache.hadoop.security.GroupMappingServiceProvider
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2324)
... 31 more
Dataprocバージョンを:1.1.51と1.2 0.15
ジョブ構成:
地域:グローバル
クラスタ私クラスタ
ジョブの種類:スパーク
JARファイル:GS://bucket/jars/spark-job.jar
メインクラスまたはjar:spark.Main
引数:
プロパティ:
spark.driver.extraClassPath:
spark.driver.userClassPathFirst /path/to/google-api-client-1.20.0.jar:真
私はそれをコマンドライン上でこの方法を実行している問題はない:
spark-submit --conf "spark.driver.extraClassPath=/path/to/google-api-client-1.20.0.jar" --conf "spark.driver.userClassPathFirst=true" --class spark.Main /path/to/spark-job.jar
しかし、UI/APIを使用すると、クラス名とjarファイルの両方に合格することはできませんので、代わりに次のようになります。
spark-submit --conf spark.driver.extraClassPath=/path/to/google-api-client-1.20.0.jar --conf spark.driver.userClassPathFirst=true --class spark.Main --jars /tmp/1f4d5289-37af-4311-9ccc-5eee34acaf62/spark-job.jar /usr/lib/hadoop/hadoop-common.jar
それはextraClassPathを提供するとの問題がある場合、私は把握することはできません
かspark-job.jarとhadoop-common.jarが何らかの形で矛盾している場合
ありがとうございました。私は既にmavenを使用しているので、ここで説明した移転を追加しました(https://stackoverflow.com/questions/33922719/running-app-jar-file-on-spark-submit-in-a-google-dataproc-cluster -instance/33925408)。 これで、extraClassPathを使わずにジョブを開始できますが、別のハープオーバーエラーが発生します。 'java.util.ServiceConfigurationError:org.apache.hadoop.io.compressCompressionCodec:プロバイダorg.apache.hadoop.io.compress.Lz4Codecサブタイプではありません。 ' org.apache.hadoop.ioの再配置を使用する.compressは役に立たなかった。 – MRR
これはuserClassPathFirstであるかどうかですか? api-clientがあなたのjarに再配置されると、userClassPathFirstを使わずにあなたの仕事を実行できることを期待します。 –
また、userClassPathFirst 'spark-submit --conf spark.driver.userClassPathFirst = false --class spark.Main --jars /path/to/spark-job-SHADED.jar/usr/lib/hadoop/hadoop-commonもありません。 jar' – MRR