DirectI/Oを使用したamazon S3からの入出力設定について

134 views
Skip to first unread message

神谷実花

unread,
Jun 27, 2013, 6:13:46 AM6/27/13
to us...@asakusafw.com
 
はじめまして、神谷と申します。
現在表題の通りS3からの入出力を行う処理を実装しています。
 
S3にCSVファイルを配置しバッチを実行すると、データ取り込み時に下記のようなエラーが発生してしまいます。
ファイルの設定がよくわからず、誤り等あればご教示いただければと存じます。
 
ファイルは s3://test/Asakusa/example/input に配置しています。
 
【エラーログ】
ERROR security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:java.io.IOException: There are no data sources for path: input
java.io.IOException: There are no data sources for path: input
 
【asakusa-resources.xml記述】
<property>
    <name>com.asakusafw.directio.s3.path</name>
    <value>s3/example</value>
</property>
<property>
    <name>com.asakusafw.directio.s3.fs.path</name>
    <value>s3://test/Asakusa/example</value>
</property>
 
【Description記述】
    @Override
    public String getBasePath() {
        return "input";
    }
    @Override
    public String getResourcePattern() {
        return "sample.csv";
    }
 
以上、よろしくお願いいたします。

sugimoto

unread,
Jun 27, 2013, 6:27:44 AM6/27/13
to us...@asakusafw.com
sugimotoと申します

当方以下の設定で動作確認できています
参考まで

        <property>
                <name>com.asakusafw.directio.root.path</name>
                <value>/</value>
        </property>
        <property>
                <name>com.asakusafw.directio.root.fs.path</name>
                <value>s3://test/Asakusa/example/</value>
        </property>




2013年6月27日木曜日 19時13分46秒 UTC+9 神谷実花:

神谷実花

unread,
Jun 28, 2013, 7:07:44 AM6/28/13
to us...@asakusafw.com
sugimotoさん
 
早速のご返信どうもありがとうございます。
 
ご案内いただきましたURL先のドキュメントの存在に気が付いておりませんでした。
今回実施しようとしている環境については、言葉が足りておりませんでしたが
AmazonEC2を利用しております。
 
EC2からS3へアクセス設定を行い、asakusa-resources.xml内にも
アクセスキー、シークレットアクセスキーを記述しています。
 
ご教示いただきました書き方をもとにいろいろと試しましたがやはりうまくいかずです。
 
もしEC2上での稼働実績もございましたらお教えいただけますと幸いです。
 
以上、よろしくお願いいたします。

2013年6月27日木曜日 19時27分44秒 UTC+9 sugimoto:

KAWAGUCHI, Akira

unread,
Jun 30, 2013, 1:04:07 AM6/30/13
to us...@asakusafw.com
かわぐちです。

> ERROR security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:java.io.IOException: There are no data sources for path: input
java.io.IOException: There are no data sources for path: input

このエラーについてですが、
設定した論理パスに対するデータソースの解決が失敗した時に表示されるものです。

「論理パスに対するデータソースの解決」については
以下に説明があります。

以下に補足します。
添付いただいた例に対しては、
以下のいずれかの方法で解消されると思います。

・DSL側の論理パスをデータソース設定側の論理パスに合わせる。

この場合、DSL側の設定 (getBasePath) の戻り値を
"s3/example/input" のようにすればよいです。

・データソース設定側の論理パスを変更する

複数のデータセット設定を使う予定がない場合や
疎通レベルでの動作確認の場合、
以下のように、単純に"/"と指定したデータセットのみを指定すれば、
DSLの論理パスに対するデータソースは全てここに引きあたります。

<property>
    <name>com.asakusafw.directio.s3.path</name>
    <value>/</value>
</property>

また、添付のデータセットに該当する物理パスは
"s3://test/Asakusa/example" なので、
先のDSLのgetBasePathに対応する物理パスは
"s3://test/Asakusa/example/input" となります。
このディレクトリ配下に"sample.csv" を配置すればOKです。

まずは上記の説明を参考に、
データソース解決に関するエラーが解消されることを
確認するのがよいと思います。


2013年6月27日木曜日 19時13分46秒 UTC+9 神谷実花:

神谷実花

unread,
Jul 1, 2013, 6:22:00 AM7/1/13
to us...@asakusafw.com
かわぐちさん
 
ご回答いただきどうもありがとうございます。
 
ご教示いただきました内容にてバッチを実行したところ、該当のエラーログは表示されなくなり
論理パスに対するデータソースのエラーは解決できました。
 
しかし今度はファイル自体の存在が認識されないのか下記のようなエラーが出てしまいます。
 
【エラーログ】
ERROR security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:java.io.IOException: Input not found (datasource=s3, basePath="s3/example/input", resourcePattern="sample.csv")
 
DSLのgetResourcePatternで指定しているファイル名と同じもの(sample.csv)を
"s3://test/Asakusa/example/input" 配下に配置しています。
(AWSコンソール上からアップロード)
実行環境上で「s3cmd ls s3://test/Asakusa/example/input/*」とコマンドをたたくと
「s3://test/Asakusa/example/input/sample.csv」が表示されます。
 
データを配置しても認識されないのはなぜなのでしょうか。
たびたびの質問恐れ入りますがご確認いただけますでしょうか。
 
以上、よろしくお願いいたします。
 

2013年6月30日日曜日 14時04分07秒 UTC+9 KAWAGUCHI, Akira:

KAWAGUCHI, Akira

unread,
Jul 1, 2013, 12:19:44 PM7/1/13
to us...@asakusafw.com
かわぐちです。

> しかし今度はファイル自体の存在が認識されないのか下記のようなエラーが出てしまいます。
> ERROR security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:java.io.IOException: Input not found (datasource=s3,basePath="s3/example/input", resourcePattern="sample.csv")

Direct I/Oの設定が正しいとして、考えられそうなのが
EMR外のHadoop環境からS3に対するアクセスとのことなので、
S3のファイルシステムの設定を s3:// ではなく s3n:// を使うべきかもしれません。

EMRとApache Hadoopなどで s3:// と s3n:// では
S3ファイルシステムの指定に対する挙動が異なるので
もしs3://というS3ブロックファイルシステムを使うことが
意図的でないならば設定を確認したほうがいいかもしれません。

詳細は以下が参考になると思います。

なお、もしS3ネイティブファイルシステムのほうを使うのであれば、
core-site.xml などHadoop側の設定の変更と、
asakusa-resources.xmlの設定の両方が必要です。
( ファイルシステムのPrefixやプロパティキーの一部を s3 から s3n に変更する )

ご利用の環境が本件の内容に関係するかわかりませんが、
まずはご参考まで。


2013年7月1日月曜日 19時22分00秒 UTC+9 神谷実花:

sugimoto

unread,
Jul 2, 2013, 8:12:49 PM7/2/13
to us...@asakusafw.com
sugimotoです

すみません、当方では
EMRでのみ稼動確認できています。

※参考までですが、EC2をお使いの用途は分かりませんが、
EMRではバッチ終了後も起動状態を維持し続けることもできます。





2013年6月28日金曜日 20時07分44秒 UTC+9 神谷実花:
Reply all
Reply to author
Forward
0 new messages