トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Hadoop with S3

[Hadoop]

Hadoop with S3

  • AWS上のHadoopとS3のファイルを連携させたい
    • というのは、いろいろ文献を読んでいるとHadoop環境自体を全部データ置き場にするのはあまり定石ではなさそうなのだ
    • S3やそれをベースにしたHBaseをデータ置き場にして、残りをコンピューティングリソースにしてやるほうが良さそうだ

  S3 Support in Apache Hadoop

上記のサイトによれば、現在Hadoop-2.7+では、S3に対して以下のようなプロトコルが許容されている

  • S3A (URI scheme: s3a://) - Hadoop 2.7+
  • S3N FileSystem (URI scheme: s3n://)
  • S3 Block FileSystem (URI scheme: s3://)

  Amazon EMRでのS3のサポート (S3 Support in Amazon EMR)

 Amazon's EMR Service is based upon Apache Hadoop, 
 but contains modifications and their own, proprietary, S3 client. 
 Consult Amazon's documentation on this. Due to the fact that their code is proprietary, 
 only Amazon can provide support and/or field bug reports related to their S3 support.

AmazonのEMRはApache Hadoopを元にしているが、AWS側による彼ら自身の商用のS3クライアントについての改変が含まれている。Amazonのドキュメントはこれを参照せよ。彼らのコードが商用であるという事実により、AmazonのみがS3のサポートについてのバグやサポートを提供できる。

  具体的な連携

$ hive
> CREATE EXTERNAL TABLE example (
- 定義…
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = "\t",
   "quoteChar"     = "\""
)
LOCATION 's3n://your-s3-directory-is/'
;

-- コマンドがOKで返ったらhiveからselectできる
> select * from example limit 20;

Apache HBase with S3

  HBase on EMRの評価

 3 つ目のコストについては、HBase は 24 時間 365 日止められないので、
 ホストしている EC2 のコストがバカになりません(毎月のコストの約 4 割が HBase にかかってる)。
 これは Amazon EMR の欠点というより、自分たちの選択ミスです…。
 ぶっちゃっけ NoSQL の分散データベースなら DynamoDB のほうがいいと思います。
 チーム内でも HBase をやめて DynamoDB に移行しようという話が出ています。

結構お値段高めのようだ

  蓄積データベースとしてのDynamoDBの評価

 この辺の事柄に気をつけても遅いときは本当に遅い。
 DynamoDBはid_hashやid_rangeで一本釣りできるような場合は有効だけど、ログの蓄積とか集計用途には向いてない気がする。

生データの永続化(蓄積)における S3 vs 分散データベース

これについては2人ほど、答えを出している人がいる

驚くべきことに、HadoopからHiveを使ってS3に対してクエリを投げたほうが効率がよかった。ということはS3に生データを蓄積しとくのが正解のようですね。

お名前: コメント: