web-dev-qa-db-ja.com

ルートスクラッチディレクトリ:HDFSの/ tmp / Hiveは書き込み可能である必要があります。現在の権限は次のとおりです。rw-rw-rw-(Windows)

Windows 7でSparkを実行しています。Hiveを使用すると、次のエラーが表示されます

The root scratch dir: /tmp/Hive on HDFS should be writable. Current permissions are: rw-rw-rw- 

権限は次のように設定されます

C:\tmp>ls -la
total 20
drwxr-xr-x    1 ADMIN Administ        0 Dec 10 13:06 .
drwxr-xr-x    1 ADMIN Administ    28672 Dec 10 09:53 ..
drwxr-xr-x    2 ADMIN Administ        0 Dec 10 12:22 Hive

Windows-> properties-> security-> Advancedからすべてのユーザーに「フルコントロール」を設定しました。

しかし、まだ同じエラーが表示されます。助けてください?たくさんのリンクをチェックしましたが、これはSpark 1.5のバグです。これは本当ですか?

ありがとう、アーティ

41
user1384205

まず、OSに適切なWinutilsを使用していることを確認してください。次のステップは許可です。
Windowsでは、cmdで次のコマンドを実行する必要があります。

D:\winutils\bin\winutils.exe chmod 777 D:\tmp\Hive

Winutilsを既にダウンロードして、HADOOP_HOMEを設定してください。

72
Nishu Tayal

まず、コンピュータードメインを確認します。試して

c:\work\hadoop-2.2\bin\winutils.exe ls c:/tmp/Hive

このコマンドがaccess deniedまたはFindFileOwnerAndPermissionエラー(1789):このワークステーションとプライマリドメイン間の信頼関係に失敗しましたの場合。

これは、コンピューターのドメインコントローラーに到達できないことを意味します。考えられる理由は、システムドメインコントローラーと同じVPNに接続していないことです。VPNに接続して再試行してください。

ViktorまたはNishuが提供するソリューションを試してください。

24
Aaditya Raj

次のソリューションは私のためにWindowsで機能しました。

  • 最初に、HADOOP_HOMEを定義しました。詳細に説明しました ここ
  • 次に、私はNishu Tayalが好きでしたが、違いが1つありました:C:\temp\hadoop\bin\winutils.exe chmod 777 \tmp\Hive

\tmp\Hiveはローカルディレクトリではありません

11
L. Viktor

ローカルファイルシステムではなく、HDFSでこのディレクトリの権限を設定する必要があります。 /tmpは、core-site.xmlでC:\tmpfs.defaultFsに設定しない限り、file://c:/を意味しません。これはおそらく悪い考えです。

を使用して確認してください

hdfs dfs -ls /tmp 

使用して設定

hdfs dfs -chmod 777 /tmp/Hive
10
cricket_007

VM Windowsで実行中のスパークシェルの開始中にエラーが発生しました:エラーメッセージ:ルートスクラッチディレクトリ:HDFSの/ tmp/Hiveは書き込み可能である必要があります。許可が拒否されました。

解決策:/ tmp/Hiveは一時ディレクトリです。この場所には一時ファイルのみが保持されます。このディレクトリを削除しても問題ありません。適切な権限が必要なときに作成されます。

手順1)hdfsで、/ tmp/Hiveディレクトリを削除==> "hdfs dfs -rm -r/tmp/Hive"

2)OSレベルでも、dir/tmp/Hive ==> rm -rf/tmp/Hiveを削除します

この後、スパークシェルを開始し、正常に動作しました。

8
SNK

これは簡単な4ステップのプロセスです。

Spark 2.0 +:の場合

  1. Hadoop for Windows/Winutilsをダウンロードする
  2. これをコードに追加します(before SparkSession初期化):

     if(getOS()== "windows"){
     System.setProperty( "hadoop.home.dir"、 "C:/Users//winutils-master/hadoop-2.7.1 "); 
    } 
    
  3. これをスパークセッションに追加します(これはC:/Tempの代わりにデスクトップ)

    。config( "Hive.exec.scratchdir"、 "C:/ Users // Desktop/tmphive")
    
  4. Cmd.exeを開き、次を実行します。

     "path\to\hadoop-2.7.1\bin\winutils.exe" chmod 777 C:\ Users \\ Desktop\tmphive 
    
3

主な理由は、間違ったディレクトリでspark=を開始したことです。D:// tmp/Hiveにフォルダを作成し(完全なアクセス権を付与)、spark D:ドライブD:>スパークシェル

今では動作します.. :)

2

sparkバージョン2.0.2(2016年11月14日)。このバージョンを使用します。バージョン2.1.0 2016年12月28日リリースにも同じ問題があります。

1
user7735815

私もこの問題に直面しました。この問題はネットワークに関連しています。特定のドメインを使用してWindows 7にsparkをインストールしました。

ドメイン名を確認できます

スタート->コンピューター->右クリック->プロパティ->コンピューター名、ドメインおよびワークグループ設定->変更をクリック->コンピューター名(タブ)->変更->ドメイン名をクリックします。

Spark-Shellコマンドを実行すると、エラーなく正常に動作します。

他のネットワークでは、書き込み許可エラーを受け取りました。このエラーを回避するには、上記のパスで指定されたドメインでsparkコマンドを実行します。

1
Mayank Gupta

Spark Jiraにも同じバグがあります。これは数日前に解決されました。ここにリンクがあります。

https://issues.Apache.org/jira/browse/SPARK-10528

コメントにはすべてのオプションがありますが、解決策は保証されていません。

1
sunil

「winutils.exe」の最新バージョンを使用して試してください。 https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe

0
Nagaraj Vittal

Windows 7で、「HDFSのルートスクラッチディレクトリ:/ tmp/Hiveは書き込み可能である必要があります。現在のアクセス許可はrw-rw-rw-」という同じエラーが表示されていました。

  1. C:\ Program Files(x86)にSparkをインストールしていました...)、Cの下で/ tmp/Hiveを探していました:すなわち、C:\ tmp\Hive
  2. WinUtils.exeを https://github.com/steveloughran/winutils からダウンロードしました。 Sparkをインストールしたときにhadoopパッケージ用に選択したものと同じバージョンを選択しました。つまり、hadoop-2.7.1(binフォルダーの下にあります https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin
  3. 次のコマンドを使用して、c:\ tmp\Hiveフォルダーを書き込み可能にしますwinutils.exe chmod 777\tmp\Hive

:以前のバージョンのwinutilsでも、chmodコマンドは必要な権限をエラーなしで設定していましたが、spark/tmp/Hiveフォルダーが書き込み可能ではないという苦情がまだあります。

0
Vid123

正しいバージョンのwinutils.exeを使用すると、私にとってはうまくいきました。 winutilsは、Sparkが事前に構築されているHadoopのバージョンからのものでなければなりません。

HADOOP_HOME環境変数をwinutils.exeのbinの場所に設定します。 winutils.exeをC:\ Spark\binファイルと共に保存しました。だから今、私のSPARK_HOMEとHADOOP_HOMEは同じ場所C:\Sparkを指している。

Winultilsがパスに追加されたので、winutils.exe chmod 777 C:\tmp\Hiveを使用してHiveフォルダーのアクセス許可を付与します

0
Harsha

私は、sparkは他のユーザーカテゴリに含まれる)匿名ユーザーとして実行され、このアクセス許可は再帰的であると考えているため、フォルダ/ tmp/Hiveに777アクセス許可を与えてみてください。 spark Hiveの1.5.1バージョンでも同じ問題が発生し、Linuxで以下のコマンドを使用して777の許可を与えることで機能しました。

chmod -r 777 /tmp/Hive
0
Reena Upadhyay