2017-12-19 3 views
0

SparkRを初期化しようとしていますが、アクセス権エラーが発生しています。私のスパークバージョンはspark-2.2.1-bin-hadoop2.6です。私はこのエラーとそれを解決する方法を探し、いくつかの関連するトピックを見つけました。しかし、私はこれらのトピックと同じアプローチを使って解決することができません。その解決策は、次のコマンドを使用して、/ tmp/hiveディレクトリにパーミッションを与えていることです(SparkRエラー:HDFS上のルートスクラッチディレクトリ:/ tmp/hiveは書き込み可能である必要があります

十分な知識を持っている人なら誰でも私に別の解決策を教えていただけますか?

エラースタックトレースは、次のいずれかです。

$ sudo ./bin/sparkR 

R version 3.4.2 (2017-09-28) -- "Short Summer" 
Copyright (C) 2017 The R Foundation for Statistical Computing 
Platform: x86_64-pc-linux-gnu (64-bit) 

R is free software and comes with ABSOLUTELY NO WARRANTY. 
You are welcome to redistribute it under certain conditions. 
Type 'license()' or 'licence()' for distribution details. 

    Natural language support but running in an English locale 

R is a collaborative project with many contributors. 
Type 'contributors()' for more information and 
'citation()' on how to cite R or R packages in publications. 

Type 'demo()' for some demos, 'help()' for on-line help, or 
'help.start()' for an HTML browser interface to help. 
Type 'q()' to quit R. 

Launching java with spark-submit command /opt/cloudera/parcels/spark-2.2.1-bin-hadoop2.6/bin/spark-submit "sparkr-shell" /tmp/RtmpecLPo8/backend_port4be122057a03 
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 
Setting default log level to "WARN". 
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). 
17/12/19 12:53:17 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
17/12/19 12:53:17 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041. 
17/12/19 12:53:23 ERROR RBackendHandler: getOrCreateSparkSession on org.apache.spark.sql.api.r.SQLUtils failed 
java.lang.reflect.InvocationTargetException 
    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.api.r.RBackendHandler.handleMethodCall(RBackendHandler.scala:167) 
    at org.apache.spark.api.r.RBackendHandler.channelRead0(RBackendHandler.scala:108) 
    at org.apache.spark.api.r.RBackendHandler.channelRead0(RBackendHandler.scala:40) 
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:336) 
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:336) 
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:336) 
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:336) 
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:643) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:566) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:480) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131) 
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.hive.HiveSessionStateBuilder': 
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$instantiateSessionState(SparkSession.scala:1062) 
    at org.apache.spark.sql.SparkSession$$anonfun$sessionState$2.apply(SparkSession.scala:137) 
    at org.apache.spark.sql.SparkSession$$anonfun$sessionState$2.apply(SparkSession.scala:136) 
    at scala.Option.getOrElse(Option.scala:121) 
    at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:136) 
    at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:133) 
    at org.apache.spark.sql.api.r.SQLUtils$$anonfun$setSparkContextSessionConf$2.apply(SQLUtils.scala:71) 
    at org.apache.spark.sql.api.r.SQLUtils$$anonfun$setSparkContextSessionConf$2.apply(SQLUtils.scala:70) 
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:893) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1336) 
    at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) 
    at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732) 
    at org.apache.spark.sql.api.r.SQLUtils$.setSparkContextSessionConf(SQLUtils.scala:70) 
    at org.apache.spark.sql.api.r.SQLUtils$.getOrCreateSparkSession(SQLUtils.scala:63) 
    at org.apache.spark.sql.api.r.SQLUtils.getOrCreateSparkSession(SQLUtils.scala) 
    ... 36 more 
Caused by: org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwx------; 
    at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:106) 
    at org.apache.spark.sql.hive.HiveExternalCatalog.databaseExists(HiveExternalCatalog.scala:194) 
    at org.apache.spark.sql.internal.SharedState.externalCatalog$lzycompute(SharedState.scala:105) 
    at org.apache.spark.sql.internal.SharedState.externalCatalog(SharedState.scala:93) 
    at org.apache.spark.sql.hive.HiveSessionStateBuilder.externalCatalog(HiveSessionStateBuilder.scala:39) 
    at org.apache.spark.sql.hive.HiveSessionStateBuilder.catalog$lzycompute(HiveSessionStateBuilder.scala:54) 
    at org.apache.spark.sql.hive.HiveSessionStateBuilder.catalog(HiveSessionStateBuilder.scala:52) 
    at org.apache.spark.sql.hive.HiveSessionStateBuilder.catalog(HiveSessionStateBuilder.scala:35) 
    at org.apache.spark.sql.internal.BaseSessionStateBuilder.build(BaseSessionStateBuilder.scala:289) 
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$instantiateSessionState(SparkSession.scala:1059) 
    ... 52 more 
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwx------ 
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522) 
    at org.apache.spark.sql.hive.client.HiveClientImpl.<init>(HiveClientImpl.scala:191) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:264) 
    at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:362) 
    at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:266) 
    at org.apache.spark.sql.hive.HiveExternalCatalog.client$lzycompute(HiveExternalCatalog.scala:66) 
    at org.apache.spark.sql.hive.HiveExternalCatalog.client(HiveExternalCatalog.scala:65) 
    at org.apache.spark.sql.hive.HiveExternalCatalog$$anonfun$databaseExists$1.apply$mcZ$sp(HiveExternalCatalog.scala:195) 
    at org.apache.spark.sql.hive.HiveExternalCatalog$$anonfun$databaseExists$1.apply(HiveExternalCatalog.scala:195) 
    at org.apache.spark.sql.hive.HiveExternalCatalog$$anonfun$databaseExists$1.apply(HiveExternalCatalog.scala:195) 
    at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:97) 
    ... 61 more 
Caused by: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwx------ 
    at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:612) 
    at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554) 
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508) 
    ... 75 more 
Error in handleErrors(returnStatus, conn) : 
    java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.hive.HiveSessionStateBuilder': 
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$instantiateSessionState(SparkSession.scala:1062) 
    at org.apache.spark.sql.SparkSession$$anonfun$sessionState$2.apply(SparkSession.scala:137) 
    at org.apache.spark.sql.SparkSession$$anonfun$sessionState$2.apply(SparkSession.scala:136) 
    at scala.Option.getOrElse(Option.scala:121) 
    at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:136) 
    at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:133) 
    at org.apache.spark.sql.api.r.SQLUtils$$anonfun$setSparkContextSessionConf$2.apply(SQLUtils.scala:71) 
    at org.apache.spark.sql.api.r.SQLUtils$$anonfun$setSparkContextSessionConf$2.apply(SQLUtils.scala:70) 
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733) 
    at scala.collection.Iterator$class.foreach(Iterator.sca 

のHadoopのfs -lsを/ tmpの結果:

$ hadoop fs -ls /tmp 
Found 5 items 
drwxrwxrwx - hdfs  supergroup   0 2017-12-19 14:47 /tmp/.cloudera_health_monitoring_canary_files 
drwxr-xr-x - yarn  supergroup   0 2017-11-07 12:36 /tmp/hadoop-yarn 
drwx--x--x - hbase  supergroup   0 2017-09-07 10:44 /tmp/hbase-staging 
drwx-wx-wx - josholsan supergroup   0 2017-12-19 13:09 /tmp/hive 
drwxrwxrwt - mapred hadoop    0 2017-09-12 09:34 /tmp/logs 

事前にあなたは本当にありがとうございました!!!

+0

@ cricket_007はコメント形式のため回答にお答えしました –

+0

どのようにしてSparkを設定しましたか? hdfs-site.xmlファイルに触れましたか?あなたはそれが同じHDFSファイルシステムを読んでいると確信していますか? –

+0

私が覚えている限り、私はhdfs-site.xmlに触れていません。このファイルはデフォルトでどこにありますか? 私はClouderaを使用していますが、clouderaのSparkバージョンはSparkRをサポートしていないと思いますので、最新のSparkバージョンをクラスタゲートウェイにダウンロードし、デフォルトで実行しました。私のクラスタのHDFSを指すようにSparkをダウンロードしましたか? どうすれば確認できますか? @ cricket_007 もう一度お世話になりました。 –

答えて

1

あなたのエラー権限がファイルシステムの出力と一致しないので、あなたはスパークをダウンロードしたが、それを構成していない、したがって、それはまずローカルディスクに

を不履行だように聞こえる、にCDHインストールからのみspark-shellを使用してみてくださいsmoketestを実行します。

ClouderaにはSparkRが含まれていると思います(正式にはサポートしていません)。私は彼らがインストールからそれを削除する理由は表示されません。

My Spark Version is spark-2.2.1-bin-hadoop2.6.

hadoopを含むバージョンをダウンロードしました(ファイル名の末尾に基づいています)。クラスタで設定したと言うので、あらかじめコンパイルされたHadoopなしでダウンロードオプションを使用する必要があります。実際にClouderaパーセルでない限り、/ opt/cloudera/parcelsディレクトリに置かないでください。あなたは、どこかでそれを抽出し、オープンのconf/spark-env.shことをしたら

その後、値は、少なくとも他のスパークと同じ情報を含むように

アップデート(このファイルのテンプレートをコピー) CDHに付属のインストール

HADOOP_CONF_DIRがシステムのHadoopの設定ディレクトリにあることを確認してください。 /etc/hadoop/conf/

+1

こんにちは@ cricket_007実際に私のClouderaのスパークビンフォールドにはSparkRはありませんが、とにかく、あなたのソリューションに続いてSpark-without-hadoopバージョンをダウンロードしました。その後、ClouderaのSparkのspark-env.shをダウンロードした新しいSparkにコピーし、いくつかの点を修正してSparkの正しいパスを指すようにしました。ご協力いただきありがとうございました。あなたの答えを解決策としてマークしています。もう一度、本当にありがとう。 –

関連する問題