Tech Blog 〜ぞうの日記

HadoopやLinux関連の技術的な内容の紹介です

(3日目)MapReduce v1のスケジューリングアルゴリズム

元記事

 

3日目です。 本日のHadoopアドベントカレンダー2013は@shiumachi氏の「HBase 0.96 で導入される新しいコンパクション「Exploring Compaction」」です。コンパクションも進化しているということがわかりますね。 さて、MapReduceでJobTrackerにジョブを投入すると、スケジューリングアルゴリズムに従って分散実行が行われます。スケジューリングアルゴリズムは、管理者がアルゴリズムを指定することができます。MapReduce version 1では下記の3つのスケジューリングアルゴリズムが用意されています。

続きを読む

(2日目)HDFSとMapReduceのハートビートの設定

元記事

 

2日目です。書き溜めた技術情報を書き続けてみるテスト中。

技術ネタ

HDFSのハートビートなど

a) ハートビート(デフォルト3秒: dfs.heartbeat.interval)

1) DataNodeからNameNodeに一定間隔で送付される。以下の情報が含まれる。(容量、使用量、残量、送信実行中の数、xceiver数(コネクション数)、failedVolumesなど。 2) NameNodeからの応答の中に、ローカルブロックの無効化依頼や、それらを他のDNにコピーする指示が含まれる

b) ブロックレポート(デフォルト1時間毎:dfs.blockreport.intervalmsec)

1) ブロック情報。DNが全てのローカルに保存されているブロックについての情報をNNに通知

2) 応答で削除すべきブロックについての情報を返す

c) ブロックスキャナーレポート(デフォルト3週間毎:fs.datanode.scan.period.hours)

2) DNが自分の管理しているブロックに対してチェックを行う(間隔)

MapRecuce のハートビートなど

HDFS同様に、TaskTracker -> JobTrackerは定期的にハートビート通信を行っている。 DataNode -> NameNode 間のハートビートと異なり、値は調整できません。 (詳細は MAPREDUCE-1906 を参照:https://issues.apache.org/jira/ browse/MAPREDUCE-1906) タスクのプロセス(子プロセス)とTaskTrackerの間のチェック方法/間隔です が、

i) 子プロセスが進行状況を報告

ii) TaskTrackerのスレッドが定期的にチェック (3s)。タイムアウトはmapred.task.timeout で調整可能。

Cloudera World Tokyo 2013の資料

さて、本日、Cloudera World Tokyo 2013の資料が公開されたようです。 http://www.cloudera.co.jp/cwt2013-session.html 未公開セッションのうち、一部の資料は講演の方に掲載確認中とのこと。 当日はほとんどセッションに参加できなかったので、公開されたのは非常に嬉しい限り。これを読んで勉強します。

Hadoop Advent Calendar 2013

本日のHadoopアドベントカレンダー2013は garagekidztweetz さんです。無茶振りにも関わらず、快く引き受けていただきました。いつも素晴らしいブログを拝見させていただいています。ありがとうございます。http://d.hatena.ne.jp/garage-kid/20131202/hadoopadventcalendarday2

(1日目)2013年の象(Hadoop)四方山話

元記事

Hadoopアドベントカレンダー2013、1日目です。 IMG_4731 みんな大好き、かわいい象のマスコット(画像)でお馴染みのApache Hadoop(以下Hadoop)。運良く初日を取れたので、2013年のHadoop関連の話題をまとめてみました。 ※このブログの内容は所属している組織には関係なく、個人的な雑感です。間違いがあればご指摘下さい。 ※なお、中立的に書いているつもりですが、多少偏りがあるかもしれません。特に悪意はありません :p

俺的Hadoopの話題2013:ベスト3

  1. ついにHadoop 2系がGAに!
  2. 分散クエリエンジンの乱立
  3. Hadoopのセキュリティもホットに (次点:Hadoop用のGUI、Hue))

番外編

  1. Hadoopの日本語書籍が充実
  2. 日本でのHadoop関連イベント
  3. 日経トレンディの技術部門でHadoopが10位に!?

当初はベスト10にしようと意気込んでブログを書いていたところ、ものすごい長文になったので、涙をのんで3つに絞りました。漏れたネタはおいおい紹介します。


1. ついにHadoop 2系がGAに!

2006年4月1日、Doug Cutting氏らによってHadoopの最初のバージョンが公開されました。その後Hadoopは順調に成長を続け、昨年1.0.0が公開。2.0系は長らくアルファ版、ベータ版で公開されていましたが、ついに先月正式版がリリースされました。Hadoopはかなり不思議なバージョニング[*1]になっていましたが、ようやく落ち着いたはず? [table id=1 /]

Hadoop 2.2.0で何が変わったのか?

興味のあるところを大雑把に。

HDFS

  • ネームノードが高可用性に対応。単一障害点の解消 [*2]
  • よりスケールアウトするため、フェデレーション構成が可能に [*2]
  • HDFSスナップショット機能に対応
  • NFSv3に対応
  • キャッシング機能を搭載(予定)

HDFSはマスターノードが単一障害点、エンタープライズじゃ使えない!と言われてきました(まだ言っている人も。。)が、ネームノードは高可用性に対応しています。象本3版、またはパカ本、徹底入門2版あたりにも書かれているので、ウェブで見かけたら記載日時をチェックしましょう。スライドシェアならこのあたりが参考になるかもしれません。少なくともCDH4に関しては、ネームノードとジョブトラッカーはともに高可用性に対応しており、多くの環境で高可用性で動作しているの実績があります。 Hadoop 2.2.0からはNFSv3にも対応し、NFSクライアントからHDFSをマウントできるようになっています。まだいくつかの制限はありますが、非Hadoop環境との間でファイルのコピーを行いたい場合には便利ですね。以前試してみましたが、普通にあっさりと使えました。-> NFSv3を試したブログ その他、HDFSのスナップショットHDFSでのキャッシングに対応する予定など、機能は追加され、性能は改善され続けています。最近のHDFSのパフォーマンス、数年前と比べるとかなり向上しています。さらには、今後導入HDFSのキャッシングも導入される予定。個人的にかなり期待しています。

実行基盤

従来のHadoopの分散処理の実行基盤、MapReduce(便宜的にMRv1と呼びます)では、リソース管理、フレームワーク、MapReduce APIの3つのコンポーネントをひとつで担っていました。Hadoop 2系ではこれを分離し、リソース管理をYARN (Yet Another Resource Negotiator)が行い、MapReduce(MRv2)はYARN上で動作するアプリケーションとして、フレームワークAPIとを提供します。 従来のMapReduceでは管理者が設定した「スロット」の数に基づいて、スレーブノードに処理を振り分けていましたが、YARNではメモリとCPUコアの「リソース」に基づいて処理を振り分けるので、効率的なリソース管理を行うことができます。また、YARNはMapReduceに特化していないので、MapReduceだけではなく、グラフ処理のGiraphや、Cloudera Impalaなども対応してきています。今後の分散処理基盤としての地位を築いていくのでしょうか。 とはいえMRv1に慣れている方にとっては、わざわざ新しい環境に移行するのをためらう方も多いでしょう。でも、幸いなことにMRv1とMRv2にはコンパチビリティがあります。また、HiveやPigなどの利用者は、抽象化されているのであまり気にしなくても良いのかもしれません。(しかし、設定方法、運用テクニック、チューニング手法、トラブルシュートなどが大きく変わるので、管理者は大変でしょうが。。。)

2. 分散クエリエンジンの乱立

昨年のStrata+Hadoop World 2012で発表された、分散クエリエンジンCloudera Impalaに続き、今年はいくつかの分散クエリエンジンが公開/アナウンスされています。そのうちのいくつかを紹介。

  1. Cloudera Impala
  2. The Stinger Initiative
  3. Facebook Presto
  4. Apache Drill

Cloudera Impalaは昨年リリースされた分散クエリエンジンです。Apacheライセンスでソースコードが公開されているオープンソースソフトウェアで、GoogleのDremel、GoogleのF1に影響を受けて開発されています。C++で開発され、技術的にはMapReduceを使わずに分散処理を行います。アーキテクチャClouderaのブログの絵がわかりやすいかもしれません。 なお、近々オライリーさんからImpalaのフリーブックの日本語版がダウンロードできるようになる予定です。 The Stinger InitiativeApache Hiveのクエリを高速化するもので、将来的にApache Tez (incubator) 上で動作することを目指しています。 Prestoは先月Facebookオープンソース公開したクエリエンジンです。Impalaと似たアーキテクチャーになっているようですね。 Apache Drill (incubator)GoogleのDremelを参考に開発が始まったオープンソースソフトウェアですが、現時点ではアルファ版のようです(あまり情報がなかったので、どこまで動作するのかは不明) 他にも「HiveよりXX倍速い」というフレーズのニュース記事を見かけることも多い、かなりアツい領域です。最適化やクエリの種類によって得意/不得意があるので、なんだかなぁとも思いますが、結論としては「みんなSQL好き」ということかと(笑

3. Hadoopのセキュリティ

Hadoopは、当初検索エンジンのインデックスを作成するために開発されたということもあり、比較的最近になってからセキュリティに対する取り組みがされています。最近ではHadoopがより多くの用途で利用されるようになり、必然的に重要な情報を扱うケースも増えたことから、セキュリティに関する話題も増えています。 例: Strata + Hadoop World 2013: Securing the Apache Hadoop Ecosystem ZDNet: The Odd Couple: Hadoop and Data Security InfoQ: Big Data Security: The Evolution of Hadoop’s Security Model 最近のHadoopでは通信の暗号化もでき、HiveやImpalaのデータの認可を行うモジュールが公開されたりしています Apache Sentry (Incubator)。(slideshareはこちらがわかりやすい)。HDFSでの暗号化に関するチケットもあるようなので、いずれは暗号化も対応するのかも?。 ということで、HadoopでKerberos認証を利用する企業は既に一般的になってきています。エンタープライズでの用途が増えるに従い、セキュリティは強化されていくことでしょう。

おまけ. HadoopGUI、Hue

Hadoop用に開発されているブラウザベースのGUI、Hue(「ひゅー」と読む)はオープンソースで開発(https://github.com/cloudera/hue)されており、ClouderaのCDHだけではなく、多くのディストリビューションで採用され始めています。 Hueに関してはHadoopオペレーションの付録に寄稿したり、このブログでも何回か取り上げていますが、個人的に一押しです。Hueによりコマンドラインを使う必要が減るため、多くの方にとって嬉しいツールでしょう。Hueのブログを日本語化を手伝っているので、興味があれば是非ご覧下さい。 また、Hueは新機能がどんどん実装されています。現在開発されているHueの3.5では、HBase、ZooKeeper、Search (Solr)、あるいは外部ツールとの連携や、Apache Sparkにも対応しつつあります。HueはHadoopのユーザー用GUIツールとしての大本命[*3]ではないでしょうか。

番外編

1. Hadoopの日本語書籍が充実

日本語のHadoop関連の書籍も増えましたね。今年発売された書籍をあげてみると、、

日本語に翻訳している玉川竜司 (@tamagawa_ryuji)さんには感謝してもしつくせません。さらに日本語の情報もますます充実していくといいですね。 (出版されている書籍が漏れていたらすみません)

2. Hadoop関連イベント

日本では、まず年明けに東京ビッグサイトで開催されたHadoop User Conference Japan 2013。(思えば当日インフルエンザで自宅謹慎になり、@dice_氏にImpalaの発表を代打をしてもらった思い出がm(__)m)。あとは、Hadoop Summit 2013(過去のイベント情報が消えてる?)、定番のStrata+Hadoop World 2013、HBase単体でも開催されているHBaseCon 2013。先日東京で開催された Cloudera World Tokyo 2013など、多くのイベントが開催されています。とはいえ、StrataやCloudera World Tokyoではデータサイエンス系のセッションも多く、Hadoopが多くの領域で利用されていることがわかります。

3. 日経トレンディの技術部門でHadoopが10位に!?

日経トレンディによる「今年、社会にインパクトを与えた技術ベスト10」の第10位に「Hadoop(ハドゥープ)」ランクイン。(' jjj ') さすが人気沸騰。象のパワー、恐るべし、、、

まとめ

ここ数年のHadoopアドベントカレンダーを見ると、数年前はHadoopの技術的な話が多かったようですが、今年はかなり多様化していますね。アドベントカレンダー明日以降も興味深い内容が多く楽しみです。まだまだ飽きが来ない象の世界、来年も盛り上げて行きましょう! [*1] 何と言ってもエイプリルフールのネタになるぐらいですから。。0.23の方が0.22より早くリリースされるという摩訶不思議な事件もあったし [*2] CDH4から利用可能です [*3] 管理ツールとしてはCloudera Managerも一押しです。Enterprisezineで記事を連載しているので、興味があればご一読下さい。

Hadoopのアドベントカレンダー2013

Hadoop Advent Calendar 2013が始まっています!

 

初日分は本家のブログに書きましたが、こっそりと一人アドベントカレンダー(?)でHadoopネタを書き溜めています(笑

どこまで続けられるかわかりませんが、こちらにも転記しておくことにします

「Hadoopを40分で理解する」のスライド公開!

Cloudera World 2013の資料が公開されました

先週開催されたCloudera World Tokyo 2013、資料が公開され始めました。
http://www.cloudera.co.jp/cwt2013-session.html

まだ全てのスライドは揃っていませんが、順次公開されるとのこと。
Hadoopを40分で理解する」のスライド(pdf)もダウンロードできるようになっています。

スライドシェアにも上げてあります。

#cwt2013

 

(余談)

VPSのサーバを変更してから本家 (linux.wwing.net)の調子がすこぶる良いので、はてなブログはバックアップ用に使っています。もしご興味がありましたら本家もご覧下さい。

祝! Hive 0.12リリース

Hive 0.12もリリース!

Hadoop Worldが近いことは全く関係ないかと思いますが、Hadoop 2.2.0の公開の少し前にHive 0.12も公開されています。

http://hive.apache.org/releases.html#15+October%2C+2013%3A+release+0.12.0+available

あとでチケットを見る予定ですが、一応リンクを、、。

https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12324312&styleName=Text&projectId=12310843

 

注)本家ブログは http://linux.wwing.netです。はてなブログはバックアップ/待避用のため、内容が古いことがあります。

祝! Apache Hadoop 2.2.0 GAリリース

Apache Hadoop 2.2.0 GAがついに公開!

Hadoop2.xといいながらも、今まで2.0.xはアルファ版、2.1.xがベータ版という不思議なリリースが続いていましたが、ついに2.2.0でGAとなりました。 http://hadoop.apache.org/releases.html#15+October%2C+2013%3A+Release+2.2.0+available

 

全く貢献できていませんが、公開おめでとうございます!

このリリースによってYARNの利用が促進されるのか、あるいはWindowsユーザーが増えるのかどうかはわかりませんが、より安定してエンタープライズ環境で広範囲に利用されることを願っています。

HDFSの拡張:スナップショットとNFSv3対応

そういえばHDFSはスナップショットに対応し、ついにNFSv3でもアクセスできるようになります。一部の方々にとっては朗報しれません。

NFSはスケーラブルではないので、FlumeやSqoopの方が使い勝手は良いかもしれないですが、、、

 

2013/10/16更新:目玉機能を書けと言われたので追記します。リリースノートから興味深いものを抜粋。

YARN

YARN(Yet Another Resource Negotiator)、MapReduce version2 (MRv2)やApache Giraph、Mahoutなどにも利用される分散処理の実行基盤。いくつか不具合が残っていましたが、このリリースで修正されています。MRv2でフェアスケジューラも利用できるようになったようですね。

Resource Managerの高可用性(YARN-149)はまだ対応できていない模様。

 

HDFSはかなり機能追加されています。多いので目についたものだけ。

HDFS SnapShot

スナップショットは任意の時点における、読み取り専用のHDFSのコピーです。元々HDFSはライトワンスのため更新できない(追記はできる)のですが、任意の時点でのバックアップを取りたい場合、ディザスタリカバリに役立つことが期待されています。スナップショットは実際のブロックのコピーを取るわけではないので、かかる時間もボリュームのサイズに依存せず、O(1)となります。既にスナップショットのページも用意されているので、興味があるかたはご覧になってはいかがでしょう。

NFSv3対応

JIRAのチケットが分散していますが、HADOOP-9515「Add general interface for NFS and Mount」とHDFS-4750「Support NFSv3 interface to HDFS」、HDFS-4762「Provide HDFS based NFSv3 and Mountd implementation」あたりのチケットをみると良さそうです。 まだ追えていないんですが、デザインドキュメントを見ると、HttpFsのように、NFSゲートウェイを置き、クライアントからアクセスするモデルのようです。 NFSv3 design

これを見ると、単一サーバーはスケールアウトしないんじゃないの?とか、単一障害点では?いう方もいらっしゃるでしょう。細かいことは調べていないのでわかりませんが、HDFS-4750をフォローすると良さそうです。今回は最初のリリースですし、(そもそもNFS必要な人ってそんなに多い?)きっとOSSのチカラで良いものになっていくと思います。

バランサーが新しいトポロジー形式に対応

HDFS-3495「Update Balancer to support new NetworkTopology with NodeGroup」を見ると、NodeGroupでのネットワークトポロジーをサポートするようにリバランス処理が変更されたようです。(良く読んでいない)

データノードでのブロックボリュームデバイスの選択ポリシー

以前Twitterでも書きましたが、先行してCDH4.3に含まれていたのがこれです。データノードに複数のディスクがある場合、ディスク間でのバランシングは行っていませんでした。(データノード間のリバランスは従来より可能。これは同一データノード内に複数のディスクがある場合のバランシングです)。このHDFS−1804はディスクボリューム間でのリバランスポリシーの機能です。

NameNodeのリカバリーツール

HDFS-3004もCDH4では利用できていましたが、正式に(?)利用できるようになった模様です。日本語のブログ:HDFSにおける、NameNodeのリカバリ・ツールについて

 

他にもいろいろありますが、この辺で。。

 

2013/10/17 0:00更新

書き忘れていましたが、このバージョンでWindowsがサポートされましたね。運用ノウハウやチューニング、Windowsに特化した問題など、課題はいくつもありそうですが、選択肢が増えることは喜ばしいです。

 

注)本家ブログは http://linux.wwing.netです。はてなブログはバックアップ/待避用のため、内容が古いことがあります。