質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.76%

Hadoopでexeを並列に実行したい

受付中

回答 0

投稿

  • 評価
  • クリップ 1
  • VIEW 612

AkiFuku

score 57

前提・実現したいこと

hadoop、Linux、Java等諸々勉強中です。
hadoopを使って大量のファイルをexeファイルの処理にかけようとしています。
そのためにMapperクラス内で処理のためのexeを実行したいのですが、exe実行時にエラーが出てしまい、どうしても実行できません。
OSはCentOS7(VMware)、Hadoop2.9.2です。現時点では疑似分散モードを使っています。
Linuxでexeを動かすためにwineを使おうとしています。

発生している問題・エラーメッセージ

wine: '/home' is not owned by you, refusing to create a configuration directory there

該当のソースコード

公式ページのチュートリアル(https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html)にあるソースをほぼそのまま使っています。
Mapperクラス内のmap()関数に以下の内容を実装し、コンパイルしたものをbin/hadoop jarで実行しています。

String fileName = ((FileSplit) context.getInputSplit()).getPath().getName();
ProcessBuilder pb = new ProcessBuilder( "./test.exe", fileName );
Process process = pb.start();
process.waitFor()
InputStream es = process.getErrorStream() // エラーメッセージ取得

試したこと

■ WINEPREFIXでディレクトリを指定
HDFS内にjavaの上記のProcessBuilder実行前に、以下を書き加えました。

ProcessBuilder pb_ex = new ProcessBuilder( "export", "WINEPREFIX=/user/(username)/wine_env" ); // ディレクトリ/user/(username)/wine_envは作成済み
Process process_ex = pb_ex.start();
process_ex.waitFor();


これについてはProcessBuilderで「export」が使えず、失敗でした。
(java.io.IOException: Cannot run program "export"…というエラーが出ます)

■ /homeを作成し、chownを使用
terminal上で以下を実行した後、jarファイルを実行しました。

bin/hdfs dfs -chown (username) /home


これについては他にsudoを頭につける、 -chown -R としてみる、というのも試しましたが、どちらも結局「wine: '/home' is not owned by you, ...」が出てしまいました。

■ アクセス権限の変更
HDFS上の/homeのアクセス権限が
【drwxr-xr-x 】
だったため、hdfs dfs -chmodを使い以下の状態に変更しました。
【drwxrwxrwx】
これでも「wine: '/home' is not owned by you, ...」が出てしまいました。

ほかのやり方が思いつかないため、アドバイス頂けると幸いです。

補足情報(FW/ツールのバージョンなど)

OS:CentOS 7(VMware)
Hadoop 2.9.2
java openjdk 1.8.0_191

exeファイルは以下のimportと-files引数を使うことで持ち込んでいます。

import org.apache.hadoop.util.GenericOptionsParser;
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る