Cloudera Quickstart VM 5.7 を使って見る

前回アップグレードが完了したCloudera Quickstart VM。ふと見ると本家に5.7が.. orz…

cm57quickstarthttp://www.cloudera.com/downloads/quickstart_vms/5-7.html

前回アップグレードした版、あるいはこのver 5.7のVMのどちらを使っても同じ結果になるはずですが、せっかくなので5.7をダウンロードし、新しい仮想マシンを使ってみます。 (続きを読む)

YARN/MapReduce v2のチューニング

Tuning the Cluster for MapReduce v2 (YARN)

良いYARN/MapReduce v2のチューニングドキュメントがあったので共有。

http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_yarn_tuning.html

抜粋すると、24core/256GBのワーカーノードを例にして、HDFSやMapReduce/YARN、HBase、ImpalaやSolr、各種エコシステムのデーモンを実行する場合の

  • それぞれのデーモンへのリソースの配分
  • ノードマネージャーのプロパティと計算式(!)
  • リソースマネージャーのプロパティとサイジングと計算式(!)
  • ゲートウェイとクライアントの設定
  • コンテナのプロパティとサイジングと計算式(!)

比較的シンプルなMapReduce v1と比べると、YARN/MapReduce v2の設定は複雑でわかりにくいですが、この資料はよくまとまっていると思います。チューニングの際にはきっと役立つでしょう。

Hadoopのいろんな言語でwordcount(3) : Apache Crunch

Hadoop関連(全部俺) Advent Calendar 2014:16日目の記事です

#あと8日。そろそろ気力と体力の限界が、、、

wordcountの最終回です。今日はApache Crunchです。CrunchでMapReduceとSparkの両方でwordcountを実行してみましょう。

githubにコードを置きました:https://github.com/kawamon/wordcount.git (続きを読む)

Hadoopのいろんな言語でwordcount(1)

Hadoop関連(全部俺) Advent Calendar 2014:14日目の記事です

Apache Crunchを少し調べたついでに、Hadoopでいろんな言語を用いてwordcountを実行してみました。まずはMapReduce, HadoopStreamingHivePigwordcountを実行します。

(追記)githubにコードを置きました:https://github.com/kawamon/wordcount.git

ワードカウントの余談

ワードカウントは、HadoopのMapReduceの最初の説明によく利用される、いわゆる”Hello World”のような意味をもちます。

HadoopのMapReduceではワードカウントがサンプルとして取り上げられる理由が曖昧なことが多いのですが、なぜワードカウントなのでしょうか?

いわゆる量の多いビッグデータを処理するには2つの課題があります。

  1. ストレージに保存された大量のデータをCPUで処理するために読み込むため、データの移動に時間がかかる
  2. 1台のマシンで実行するには時間がかかりすぎる(メモリに乗り切らない、あるいは1台のCPUではまかなえないほど量が多い)

このような課題の解決には、1台のマシンをスケールアップして対応するには限界があるかもしれません。そのため、複数のマシンを使ってスケールアウトする、「分散処理」が力を発揮します。ワードカウントは大量のデータを「分散」して処理できるサンプルとして取り上げられています。
(続きを読む)

MRv1におけるフェアスケジューラでのプリエンプション

5日目です

3日目に書いたMapReduceのスケジューラでうち、フェアスケジューラには「プリエンプション」という設定ができます。この設定をすることで、例えば緊急度の高くない長時間実行されているタスクを強制的にKillして、すぐに実行する必要があるジョブのタスク用にスロットを空けることができます。 (続きを読む)

MapReduce v1のスケジューリングアルゴリズム

3日目です。

本日のHadoopアドベントカレンダー2013は@shiumachi氏の「HBase 0.96 で導入される新しいコンパクション「Exploring Compaction」」です。コンパクションも進化しているということがわかりますね。

さて、MapReduceでJobTrackerにジョブを投入すると、スケジューリングアルゴリズムに従って分散実行が行われます。スケジューリングアルゴリズムは、管理者がアルゴリズムを指定することができます。MapReduce version 1では下記の3つのスケジューリングアルゴリズムが用意されています。 (続きを読む)

JobTracker Higth Availability

なぜかJobTracker Recoveryページへのアクセスが多いので、JobTracker HA(高可用性JobTracker)についても再度触れておきます。

以前書いたように、CDH4.2以降では JobTrackerを高可用性にすることができるようになっています。これにより、JobTrackerに障害が生じた場合のダウンタイムを減らすことができます。※残念ながらApacheの1.0系には取り込まれていません。 (続きを読む)

MapReduceの中間データを保持する(2)

昨年の夏、ブログ、MapReduceの中間データを保持する、を書いてからその後全く確認をしていなかったところ、何とCDH4.1.1で動かないことが判明!(当時はCDH4のリリース前だったので、CDH3で検証していた)

結果として原因は些細なことでしたが、かなり試行錯誤してしまい、MLなどで情報収集しても解決せずでした。同様の問題に悩んでいる方もいらっしゃるようです。訂正かつ補足します。

2. 条件に基づいてファイルを残す
(続きを読む)

MapReduceの中間データを保持する

MapReduceでジョブの実行時に生成される中間データは、ジョブの終了時に削除されます。これにより不要なデータは削除され、ディスク容量が圧迫されることがなくなります。

しかし、デバッグのために中間データを保持しておきたいと言うこともあるでしょう。今回はCDH3を使用した2つのやり方を紹介します。

1. 失敗時のみファイルを残す

keep.failed.task.files

このパラメータをtrueにすることにより、失敗したジョブの中間データは削除されないようになります。

2. 条件に基づいてファイルを残す
(続きを読む)