Clouderaを退職しました
2018年11月30日(金)は、Cloudera株式会社への最終出社日でした。2011年4月1日に入社したので、勤続日数は2800日でした。
日本にオフィスも同僚もいない状態からのスタートでしたが、今日、多くの同僚たちに見送られる形で会社を出ることができました。
退職するときは、最後の一人として会社を去るか、自分がいなくても会社が回るようになったときか、そのどちらかにしよう、と決めていました。皆が退職することを惜しんでくれましたが、私がいなくても会社は問題なく続いていくでしょう。私が理想とする結末にたどり着くことができて、本当に嬉しいです。
7年前、ごく一部の人しか知らなかったHadoopは、今や多くの人が知るソフトとなり、Hadoopに限らず、様々なデータ基盤を活用することが当たり前の時代となりました。
この先もきっと、データ基盤の業界は伸びていくことでしょう。そしてClouderaもその中心を担う存在であり続けると信じています。
Clouderaは最高の会社です。この会社で働くことができて、本当に幸せでした。最高のチームとも出会えました。皆と一緒に仕事できなくなるのは本当に寂しいですが、自分の行く道を信じて、新しい旅に出ることにします。
週明けからはまた新たな仕事が始まります。どのような仕事をするのかは次の記事で書くことにしましょう。
2018年冬休み: 自然言語処理の本5冊読んだ
自然言語処理の本を5冊ほど読みました。
- 作者: グラム・ニュービッグ,萩原正人
- 出版社/メーカー: 翔泳社
- 発売日: 2016/03/02
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
自然言語処理の技術概要から、ユースケースの紹介まで、この分野における基本的な内容をざっと押さえることができました。
数式や技術的に難解な話はなく、さっと読める本でした。
最初のとっかかりとしてとてもいい本です。
非技術者や、少しだけこの分野をかじっておきたい別分野の技術者ならこれ一冊読めば十分かと思います。
- 作者: 黒橋禎夫
- 出版社/メーカー: 放送大学教育振興会
- 発売日: 2015/03/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る
こちらも入門レベルの本ですが、「自然言語処理の基本と技術」とは異なり、もう少し技術寄りに特化した内容です。
その代わり、扱う技術分野が幅広く、文字コードや言語学分野の話も出てきて、どういう知識が必要なのかを理解するのに役立ちました。
この分野の基本的な知識インデックスを頭に入れたければ上記の本と合わせてこの本まで読めば十分だと思います。
- 作者: 高村大也,奥村学
- 出版社/メーカー: コロナ社
- 発売日: 2010/07/01
- メディア: 単行本
- 購入: 13人 クリック: 235回
- この商品を含むブログ (42件) を見る
数式も出てきて、実際に手を動かして学ぶ必要のある本です。先の2冊が概要の把握レベルの本であれば、こちらは技術書としての入門書になります。
この本の演習問題では「〜を作れ」といった記述しかなく、おそらく机上レベルでの作成を意図しているのでしょうが、今は scikit-learn という便利なツールがあるため、実際に手を動かしてモデルを作って試しながら読んでました。
- 作者: Steven Bird,Ewan Klein,Edward Loper,萩原正人,中山敬広,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/11/11
- メディア: 大型本
- 購入: 20人 クリック: 639回
- この商品を含むブログ (44件) を見る
NLTKは既に古いと chezou さんにアドバイスを受けたし、内容も前半部分はPythonの基礎の話や文字列処理やトークナイズの話(つまり、既に自分が理解済みの内容)だし、後半の話も他の書籍で読める内容の上、付録以外は英語ベースの話のため、私の今の興味から外れている内容でした。
ざっと目を通した程度です。
英語の解析をする必要が出てきたら読むかもしれません。
文脈解析- 述語項構造・照応・談話構造の解析 - (自然言語処理シリーズ)
- 作者: 笹野遼平,飯田龍,奥村学
- 出版社/メーカー: コロナ社
- 発売日: 2017/05/25
- メディア: 単行本
- この商品を含むブログを見る
サブタイトルの通り、述語項構造、照応、談話構造の解析に特化した内容です。ほぼ読み物で、演習問題等もなく、これ一冊で何かできるというような内容ではないです。
人生のスナップショット
この記事は pyspa Advent Calendar 2017の22日目の記事です。前日は
資産運用に取り組み始めた - YAMAGUCHI::weblog
でした。
pyspa-botは、Mersenne Twisterという、世界的に実績がある、非常に有名なアルゴリズムをエンジンとして動作する人工知能プログラムです。
語録コマンドを実行すると、過去に登録されたその人の発言を、botエンジンがランダムに1つピックアップして返してきます。
要するにただのrandomコマンドです。
語録の登録における不文律として、「自分以外の人が登録する」というものがあります。絶対ではありませんし、自分で登録するケースもゼロではありませんが、非常に少ないです。
これが何を意味するかというと、語録には常に、「その当人以外の周りの人にとって心に残ったその人の言葉が登録される」のです。
実際語録を開いてみると、その人の声や顔が鮮明に思い浮かべられるくらい、まさにその人という語録ばかりが並んでいます。
その言葉が、その人の生きている姿を鮮明に映し出すのです。
botは、人生のスナップショットなのです。
pyspa Advent Calendar 参加者 + bot作者の moriyoshi の語録から一つピックアップして紹介しましょう。
公開しても問題なさそうなものだけピックアップしていますので、実際にはもっと個人的なネタやNSFWなネタもあります。
語録が存在しない、あるいは上記のような語録しか存在せず公開できない人は載せていません。
moriyoshi
ケツの穴にバリカン突っ込んで複雑な痔にしてやりたい
wozozo
なんか屁がめっちゃくさい...
tokibito
笑ってられるうちはデスマじゃないと思う
torufurukawa
最もイタリア人っぽい男は・・・俺かな
akisute
どうも四時からワイドの男あきすてです
flag_boy
pyspaには真理しかないよ
voluntas
wozozo が焼き肉をおごる会まだー
aodag
デスマかも?なんて思ってるときはデスマじゃないのさ
mururu
ぼくをツモりましょう
kuenishi
おいしまうち、これ買ってこい
isoparametric
にしおかどうかは主観だから、俺がそう思うんならお前はにしおなんだろう、俺の中ではな
drillbits
みんなちがってみんなジャバ
turky
以前、一番嫌な死因について考えた結果、じわじわと圧死が一番嫌という結論になりました。
nikuyoshi
危ない橋は渡ったことないので…
cocoatomo
今日, ふと思ったんだけど, 俺無職になったらそのままダラダラ無職続けてしまいそう
mopemope
卒業とか勝手なこと言ってるけど、もうみんなとっくに卒業してんだよ!!気づけ!マヌケ!
takabow
今日も新橋です
ymotongpoo
素直に「ションベン漏らした!!」っていえよ!!!!
shibu_jp
マイ・リトル・ポニーを見ている方がよっぽど有意義というものだ。
chezou
残念ながらソフトクリーム食べながらR書いてます
hiroki.niinuma.5
肩がこった?いいのかい?俺が本気で揉んじまって
楽天テクノロジーカンファレンス2017でApache Kuduについて発表してきた
楽天テクノロジーカンファレンスに登壇するという貴重な機会をいただいたので、Apache Kuduについて発表してきました。
主催していただいた楽天様、ご聴講いただいた皆様、ありがとうございました。
社外での英語プレゼンだったのでなかなか準備が大変でした。
以下、補足やFAQです。
これ資料英語なんだけど日本語はないの?
この資料そのものの日本語スライドはありませんが、より詳しいスライドが日本語で公開されています。
資料読むのだるいからKuduについて3行でまとめて
- Kuduは、HDFS みたいなシーケンシャルリードの性能と、低レイテンシでのランダムアクセスや更新・挿入が得意なHBaseのようなNoSQLの長所を合わせ持った、新しいOSSのストレージエンジンだよ!
- Kuduを使うと、ラムダアーキテクチャのようなバッチ処理 + ストリーミング処理や、分析クエリ + 更新処理みたいな、今まで複数のコンポーネントを組み合わせないと作れなかったようなシステムがこれ一つでできるよ!
- Kuduの使い道の代表例としては、IoTなどにおけるセンサーデータのリアルタイム分析や、金融ティックデータ分析などのリアルタイムダッシュボード、UPDATE/INSERT文を含む既存DWHからのオフロード・マイグレーションなどがあるよ!(参考)
KuduあればHDFSやHBaseいらなくない?
Kuduはどちらの特徴も備えていますが、性能的にはどちらについても若干劣ります。よって、HDFSやHBaseだけで足りる用途であればそちらを使った方がいいです。
また、Kuduは型を必ず持つので、型を考えずにとりあえず突っ込んでおきたいという場合には適しません。
HDFSやAmazon S3、Azure Data Lake Store のような中央ストレージを持ちつつ、補完のためにKuduを活用していくといいでしょう。
Kuduの性能評価結果を教えて
日本語スライドとしては2015年のスライドのこのページに一応載っていますがちょっと情報古いです。
2017年2月に公開されたCERNによる性能評価が一番新しいと思います。
まとめ
Kuduはリリースされてから2年ほど経って、かなり色々こなれてきた感じがしています。
便利なのでガンガン使っていきましょう!
Kuduについて日本語でもセッション聞きたいという人は、11/7(火)に開催されるCloudera World Tokyo 2017に来てください。私とは別の切り口でのKuduのセッションがあります。
ブラウザ上で簡単にビッグデータを扱えるOSS: Hue についての簡単な紹介
ドワンゴさんの主催でHue Meetupが開催されることになったので、いい機会だから Hue について、自分の復習がてらまとめておきます。
Hue って何?
Hadoopエコシステムを操作するためのWebインタフェースです。
Hadoopエコシステムの多くは、管理Web UIは持っていても、ユーザ用のWeb UIはありません。
ユーザがターミナルからコマンドを叩かなくてもHadoopエコシステムを操作できるようにするのが目的です。
主に、以下のようなことができます。
Hue は誰が使っているの?
Hueは、全ての主要なHadoopディストリビューションに含まれているので、Hadoop触っている人は意識せずとも使ったことある人も多いと思います。
あと、Amazon Athena の UI は間違いなく Hue です。
先日、あるお客様のところに製品紹介にいったときにHueを見せたら、「Athenaみたいですね」と言われました。逆ですから!
EMR Hue の話は、Hue Meetup でミクシィの岩瀬さんが話をしてくれます。
ドワンゴさんはヘビーなHueユーザで、主催者の木浦さんがそのあたりの話をしてくれるはずです。
Hue って何で作られてるの?
Hueは、以下のコンポーネントで作られています。
Hue Meetupでは、@tokibito ことオープンコレクターの岡野さんが、Django開発者という観点からみたHueを説明をしてくれる予定です。
Hueで何ができるの?
色々できます。
ファイルブラウザ
ファイルをアップロードしたり、編集したり、ダウンロードしたりすることができます。
Pigエディタ
一部で根強い人気の残るPigも実行できます。
検索ダッシュボード
Solrと連携して検索ダッシュボードを作成することができます。
(Hue 公式サイトより引用)
まとめ
Hue を使うと、ビッグデータ基盤のWeb UIを簡単に用意することができます。
まだ使ったことない人も、使っているけどもっと色々使いこなしてみたい人も、自分の使い方を共有したい人も、Hue Meetupに参加してみてください。
進捗ヤバいプロジェクトに直面した経験がある人なら(多分)楽しめるカードゲーム「Not My Fault!」
エンジニアがプロジェクトがオンスケであると嘘をつき続けるゲームは盛り上がった pic.twitter.com/aWkKIPtAAS
— Yoshifumi Yamaguchi (@ymotongpoo) 2017年7月30日
@ryushi さんの主催で仲間内で集まってボードゲーム・カードゲームで盛り上がったのですが、その中で @tokoroten が持ってきた「Not My Fault!」というカードゲームが非常に衝撃的でした。
まず、背景設定がすごい。
残り30日で絶対に完成させなければいけないプロジェクトに、プレイヤー達はプロジェクトメンバーとして参加しています。
進捗は絶対に遅れてはいけません。
もし、プロジェクトの進捗が報告されていたよりも進んでいないとしたら?
それはもちろん、進捗を過大報告したヤツの責任です。
監査を入れて、そいつを追い詰めよう!
というのがゲームの設定です。
これを読んで、「あー、そういうのあるよねー」と共感したり、「あー、そんなことあったわ」と遠い目をしたり、「あー、今まさにそんな状況だわ」と暗くなったりということが少しでもあれば、このゲームを手に取ってみるといいと思います。
ゲーム自体はすごくシンプルです。
複数人でプレイし、山札を中心に円になって座ります。
最初に一番目の人が一枚目を引いて、自分の作業の「本当の進捗」を確認します。
その後、自分の目の前の場にカードを伏せて置き、「進捗」を報告します。
二番目以降の人は二つのアクションを取ることができます。
一つは前の人と同様に山札を引き、自分の前に伏せて「進捗」を報告する、もう一つは今までの進捗を「監査」することです。
監査した結果、「本当の進捗」が「今まで報告された進捗」よりも低かったら、前の手番の人は責任を取らされます。
逆に、「本当の進捗」が今まで報告された進捗通りだったら、監査を要請した人は責任を取らされます。
通常は二回責任を取らされるとクビですが、ルールによっては一発でクビ(つまりゲームから退場)することもあります。
誰かが責任を取ったら1ラウンド終了です。
この「進捗カード」は0から6までの数字が振られています。
「本当の進捗」というのは、今まで伏せられた全プレイヤーのカードの合計の数字となります。
例えば、場に0、5、3、1が伏せられていたら、本当の進捗は9となります。
そして、報告する「進捗」ですが、絶対にマイルストーン通りの進捗報告をしなければなりません。
当たり前ですよね?30日で完成するプロジェクトに進捗の遅れなど許されないのですから。
このマイルストーンは、最初がいきなり5日です。
つまり、最初のプレイヤーは、0-6までしかないカードのうちランダムに引いた1枚のみを場に伏せて、「5」と言わなければいけないのです。
しかし、このプロジェクトのプロマネはとても有能かつ広い心の持ち主でした。
どのプロジェクトメンバーも、一度だけなら進捗の遅れを報告しても許されます。
つまり、本来「5」と報告しなければいけないところを、「1」と言っても許されるのです。
二度目は当然ありません。
他にいくつかルールがありますが、基本はこのような感じのルールです。
ルールを見てピンと来た人がいると思いますが、これは要するにトランプのダウトの変形です。
嘘の数字を言って場にカードを伏せ、他のプレイヤーがダウトと宣言して嘘だったら宣言した人の勝ち、本当だったら宣言した人の負け、というのと何ら違いはありません。
このゲームの本当の楽しみ方は、炎上プロジェクトに入った気分になって盛り上がることです!
全く進んでいないのに進捗報告で「オンスケです」と自信満々に報告し、進捗遅れを使う場合は「すいません、ちょっと体調不良で…」などと言い訳する。
監査する場合は「ちょっと進捗報告おかしいんじゃないのかね、君?」と問い詰め、退場することになった場合は「一身上の都合で退職します。今までお世話になりました」と挨拶する。
どう考えてもこんなデスマ案件抜けた方が幸せだろ
要は、「ゲームの勝ち負けよりワイワイ盛り上がって楽しむ」ためのゲームです。
楽しみ方が大分ニッチではありますが、我々のような一部の業界の人にはドンピシャ間違いなしです。
今回はお酒なしでプレイしていましたがそれでも大盛り上がりでした。
飲みながら気軽に楽しむのが一番いいと思います。
私達がプレイしたときは、大体こんな感じのプレイ風景でした。
not my fault、最高だった。
— ところてん (@tokoroten) 2017年7月30日
「すいません、体調が悪くて進捗が1しかありませんでした」
「私は優秀なので、当然オンスケです」
「ところてんくん、きみ進捗ごまかしてるよね」
「いえいえ、過少申告をしていたので実際オンスケ」https://t.co/HBxHdMzmbg
not my faultの謎リプレイ
— ところてん (@tokoroten) 2017年7月30日
「プロジェクトはオンスケです」
「山口さんが進捗を過大報告している疑いがあります。プロジェクト監査をしてください」
「ニ徹して進捗をオンスケに戻しています」
「チームの和を乱してしまい、大変申し訳ありません。本日をもって退職いたします。」
値段は900円(Amazon価格)と大変リーズナブルです。トランプサイズのカードゲームなので持ち運びにも便利です。
是非一度、エンジニア仲間同士でも、プロジェクトチームのメンバーでもいいので、一緒にやってみてください。
作者さんの紹介ページでは作者さんのAmazonアフィリエイトリンクも貼ってますので、そちらから購入してあげましょう。
Twitterでのリプレイ・感想ツイートまとめ (2017/08/01追記)
「Hadoopの時代は終わった」の意味を正しく理解する
Hadoopの時代は終わった、という言説をたまに見かけるようになりました。
もちろん終わってなどいません。しかし、Hadoopとその取り巻く環境が変化したのは事実です。
本記事では、この変化が何なのかを明らかにし、その上で、なぜHadoopの時代は終わったという主張が実態を正しく表していないのかを説明していきます。
DISCLAIMER
私はHadoopを中心としたデータ基盤を取り扱うベンダー、Clouderaの社員です。
中立的に書くよう努めますが、所属組織によって発生するバイアスの完全な排除を保証することはできません。
以上をご了承の上、読み進めてください。
要約
データ基盤は、Hadoopの登場により非常に安価となり、今まででは不可能だった大量のデータを取り扱えるようになりました。
Hadoopは、NoSQLブームの中、処理エンジンであるMapReduceとストレージであるHDFSが一体となっていたため、データ基盤向けのソフトウェアとしての地位を確立していきました。
しかし、2010年代に入ると、ハードウェア、処理エンジン、ストレージの進化により、Hadoopは大規模なデータ基盤として唯一の選択肢ではなくなっていきます。
特に処理エンジンは、MapReduce以外にも優れた処理エンジンが登場してきたため、現在MapReduceはその役割を終えようとし始めています。
一方HDFSは、以前としてオンプレ環境におけるOSSの大規模分散ストレージとして高い地位を占めています。
Hadoopがカバーする範囲も拡大し、新しい処理エンジンやクラウドストレージに対応し、順調に進化を続けています。
よって、Hadoopの時代が終わった、という言葉は正確ではなく、MapReduceの時代が終わった、というのが正しい理解です。
用語の定義
本記事での用語を定義しておきます。
ストレージとは、データを格納する基盤のことを指します。本来はメタデータ(DBスキーマなど)のストアと区別しなければいけないのですが、簡略化のためにストレージとしています。
暗黙的に、その時代における大量のデータを保存することを想定しています。
処理エンジンとは、ストレージからデータを取り出して何らかの処理を行うためのシステムです。ここでは、簡略化のために、SQLなどの、処理エンジンにアクセスするためのインタフェースも処理エンジンの一部として含めて紹介します。
こちらも暗黙的に、その時代における大量のデータを処理することを想定しています。
データ基盤とは、ストレージに格納されたデータを、処理エンジンを利用して、ビジネスにおけるデータ活用を行う基盤のことを指します。バッチ処理、DWH、機械学習など、データを取り扱うものを全て含みます。
なぜ本記事においてビッグデータ基盤と言わないかというと、既に大量のデータを扱うことが当たり前になってきた今日において、ビッグデータブームが始まる前と後で区別することにそれほど意味がないからです。
アプリケーションとは、データ基盤を利用することで新しい価値を提供するソフトウェアを指します。例えば、BIツールやETLツールなどです。ここでは内製ではなく商用ソフトウェアを中心とします。
データ基盤の歴史(1): Hadoopの登場から発展まで(2000年代~2010年代前半)
Hadoop以前(~2006年)
2000年代に入るまで、データ基盤は非常に高価なシステムでした。そのために、本当に重要な一部のデータだけを活用することが常識でした。
データ基盤は、主にメインフレーム、商用RDBMS、商用データウェアハウスなどで構成されていました。
これらは全て、処理エンジンとストレージが垂直統合されていました。
非分散型・スケールアップ型が当たり前の時代だったので、垂直統合しておいた方が効率的だったのです。
しかし、Googleは自社の検索ビジネスにおいて、Webサイトのデータという大量の非構造データを、より安価に処理するための基盤を必要としていました。
そこで開発されたのがMapReduceというアルゴリズムとGFSというストレージシステムでした。
この2つの技術に関する論文をGoogleが発表したのは2003から2004年ですが、これを読んだDoug Cuttingがオープンソースで同様のシステムを実装します。
これが、後のHadoop MapReduce (以下MapReduce)と Hadoop Distributed Filesystem (HDFS) となります。 *1
NoSQLの台頭とHadoop一択の時代(2008~2012年)
Hadoop登場と同時に、NoSQLブームが発生しました。NoSQLをどう定義するかは人によって違いますが、一言でいうと「RDBMSが持っていた機能を限定することで、性能のスケーラビリティを重視したストレージ」です。
処理エンジンを内包したストレージも一部ありましたが、価値の根本部分は「スケーラブルなストレージ」という点になります。
多くの人が、そのNoSQLという文字内容から「これからの時代はRDBMSでもSQLでもないんだ」と勘違いしてしまいましたが、NoSQLはあくまでストレージの進化であり、処理エンジンの進化ではありません。
この時代に成功したNoSQLも数多くありますが、同時期におけるデータ基盤向けストレージの勝者は間違いなくHDFSです。
なぜなら、この時代にほぼ唯一の処理エンジンの選択肢だったMapReduceが、HDFSに密結合していた(ように見えていた)からです。
Hadoopは、MapReduce (処理エンジン) + ストレージ(HDFS) が密結合しているように見えてしまっていたため、ほとんどの人がこれらが一体となっていると思い込んでしまいました。
このことは、この時期においては有効に働きましたが、これこそが今回のテーマである「Hadoopは終わった」論の遠因となっていったと私は見ています。
ともかく、Hadoopは、こうした背景から、大規模なデータ基盤としてのこの時代唯一の選択肢として発展していったのです。
データ基盤の歴史(2): Hadoop一択の時代を超える(2010年代)
2010年代に入ると、当たり前のように大量のデータを扱う時代が到来し、様々なユースケースにおいて大量データの処理が求められるようになってきました。
元々用途を限定して作られたシステムだった当時のHadoopに対し、新しいユースケースに対応した処理エンジンやストレージが登場し始めます。
そして、古き良きHadoop、すなわちMapReduce + HDFSは唯一の選択肢ではなくなっていきます。
この変化には、複数の領域における発展・変化が関係していきます。
ハードウェアの進化
Hadoopが登場した背景には、ハードウェアの進化の限界がありました。
2000年代においてはまだメモリが高価で、CPUもディスクも性能が鈍化していて、データ基盤を構成するにあたって単一のサーバでのスケールアップでは限界があったために、GoogleのMapReduceアルゴリズムとGFSは分散アーキテクチャを採用しました。
しかし、2010年代に入ると、CPUの性能はあまり変わらないものの、メモリが以前よりもはるかに大容量・安価になり、こうしたアーキテクチャの変化を前提にしてインフラ全体が変わっていきました。
処理エンジンの進化
MapReduceが出た当時は、他の技術と比較すると確かにシンプルで理解しやすく、書きやすいと思われていましたが、2010年代に入ると逆に複雑なフレームワークとみなされるようになってきました。
また、MapReduceはバッチ処理に限定したフレームワークである上に、処理手法が効率よく働くケースが限定的でした。
こうした課題を解決するため、Apache Sparkが登場しました。効率のよいメモリ活用による高速化と、格段に書きやすくなった記述形式、そしてバッチ処理だけでなく、ストリーム処理や機械学習などもカバーする幅広い用途により、2012年の登場してから急速に注目が集まり、2014年の1.0リリースから一気に広まっていきました。この普及の背景には、先述のハードウェアの進化によるメモリの大容量・低価格化も大きな一因となっています。
データ基盤におけるデファクトスタンダードのインタフェースであるSQLにも大きな変化が起こりました。
MapReduceを使ったSQLエンジンとしては既に2008年にHiveが登場していました。
しかし、大量の非構造データを処理する性質を備えつつも、既存のRDBMSやDWHのような低レイテンシを満たせるような新しいSQLエンジンが求められるようになっていきました。
そして、2012年にApache Impala(当初の名称はCloudera Impalaだが、2016年にASFに寄贈)が登場したのを皮切りに、様々な新世代のSQLエンジンが登場しました。
2012年には、Google BigQueryのような、クラウド上にしか存在しない処理エンジンも登場してきました。ストレージの選択肢が事実上Googleだけになってしまうという欠点があるものの、クエリ毎の課金という革新的な価格体系と高速性から、GCPを代表するサービスとして広く普及していきました。
このように、2010年代中頃になってくると、MapReduce以外の処理エンジンが増えていき、MapReduceはあくまで処理エンジンの選択肢の一つとなっていきました。
ストレージの進化
2010年代前半に、処理エンジンの選択肢が多様化しても、ストレージとしてはまだまだHDFS一強の時代でした。大量のデータを処理する基盤に適した、安価でスケーラブルなストレージシステムがHDFSしかなかったのです。
Amazon S3 をはじめとしたクラウドストレージを使うと、ストレージシステムの運用から解放され、初期投資が極めて安価でしかも簡単にスケール可能という多くの利点がありますが、2010年代前後はまだ値段も高く、信頼性・実績ともに乏しかったため、メインのストレージにしようという企業はわずかでした。
しかし、クラウドストレージが進化を続け、信頼性の向上と価格の低下が進むと、インターネット系企業を中心にストレージの中核をクラウド上に持つ企業が数多く登場していきました。こうした企業は、もはやHDFSを自前で持つこともなく、クラウドストレージを中心としてデータ基盤を構築していきました。
ストレージのトレンドの変化を受けて、処理エンジンの側にも変化が発生します。
HDFSを持たずにデータ処理を行いたいというニーズに応えるために、処理エンジンもクラウド対応への変化が進んでいきました。
Amazon EMR は S3上のデータを直接 MapReduce で処理することができる、Hadoop をフォークして開発されたサービスですが、後に Apache本家でも別個にAmazon S3への対応が進み、高速にデータを処理できるようになっていきました。
また、Sparkや、Impala / PrestoなどのSQLエンジンもクラウドストレージへの対応が当然のように行われるようになり、オープンソースの処理エンジンはHDFSだけではなくクラウドストレージへ対応することが求められるようになってきました。
RDBMS・DWHの進化
RDBMSやDWHも着々と進化を続け、データ基盤のニーズに応えるよう変化しています。例えば、商用DWHでは既にjsonサポートが当たり前になっており、非構造データへの対応が進んでいます。OSSのRDBMSにおいても、PostgreSQLは2012年(9.2)からjsonをサポートし、続くバージョンでjson対応を強化していっています。また、扱えるデータ量も増えていっており、商用DWHでは1PB以上のデータのサポートは当たり前となっています。
DWHそのものもクラウド化が進みます。Amazon Redshiftはクラウド上で安価に利用できるサービスであり、従来のDWHを購入するだけの予算がなかったような企業でも簡単にデータ基盤を持つことができるようになりました。
現代におけるデータ基盤
現代においては、データ基盤で利用する処理エンジンとストレージの組み合わせは実に多様化しています。
処理エンジンに重きを置く人はまずSparkやBigQueryを前提にストレージエンジンを探すでしょうし、ストレージに重きを置く人はまずHDFSやS3というストレージ選定から始めて処理エンジンを探すでしょう。
あるいは、使っているアプリケーションが対応している処理エンジン・ストレージを選択していくという過程を選ぶ人もいるかもしれませんし、オンプレミスかクラウドか、あるいは両方を使うべきかという、インフラを中心に選択する人もいるでしょう。
そして、これらのうちどれか一つを選ぶのではなく、複数を組み合わせるというのも当たり前になりました。
ストレージとしてオンプレミスのHDFSとクラウドのS3を同時に持つシステムは多数存在しますし、既存の MapReduce ジョブを走らせ続けながら新規開発にはSparkを使い、BIツールからの接続にImpalaを使うという企業はますます増えています。
データ基盤を選ぶのではなく、データ基盤を構成する処理エンジンとストレージの組み合わせを選ぶ時代なのです。
Hadoopの時代は本当に終わったのか?
Hadoopは、MapReduceという処理エンジンとHDFSというストレージの二つを組み合わせたものであることは説明しました。
これらのコンポーネントは、それぞれ異なる変遷を辿っていきます。
処理エンジンは、バッチ処理だけに特化していたMapReduceから、ストリーム処理、低レイテンシなSQL、機械学習など、様々な用途に対応するための処理エンジンが登場してきました。
バッチ処理についても、より高速で書きやすいフレームワークであるSparkの登場により、MapReduceは既存のプログラムへの後方互換という用途以外の役目を終え始めています。
しかし、Sparkを始めとした新しい処理エンジンは、様々なデータ基盤で採用されています。
そして、Hadoopという名称が指す領域は、MapReduceだけでなくだけでなくSparkやSQLエンジン、さらにはSolrなどの検索エンジンに拡大していっています。
HDFSは、クラウドストレージを選択する組織が増えてきたものの、データ基盤のストレージとして依然大きな存在感を持っています。
HDFSほどスケーラブルで、かつ実績のあるオープンソースのストレージシステムは他にありません。
自社に十分なインフラ資源(人・モノ・金全て含む)が整っている場合、クラウドストレージを使うよりも圧倒的に安価になるため、HDFSは有力な選択肢となります。
また、オンプレミスからクラウドに移行する際にも、クラウド上でそのままHDFSを動かしてしまえば、既存のコード資産をほぼ変更せずに移行できるため、処理エンジン同様ポータビリティが高いという特性があります。
こうした利点を考えると、HDFSはまだまだ活用され、発展していくと言えます。
このように見ていくと、MapReduceは確かに新しい処理エンジンにバトンを渡して静かにフェードアウトし始めていますが、新たな処理エンジンとHDFSを携えて、Hadoopそのものは進化を続けていっていることがわかります。
Hadoopの時代は終わってなどいないのです。
では、なぜHadoopは終わったと言われてしまうのでしょう?
私の見解では、HadoopはMapReduce + HDFSがセットになっているというイメージが強すぎて、そこからの転換が進んでいないことが原因と見ています。
多くの人が未だにHadoopはバッチ処理のためだけの基盤だという誤解をしています。
2014年前後に、Google BigQueryやAmazon Redshiftのような、安価なデータ分析のための基盤の普及が進みましたが、そのユーザの多くはHadoopが既にそうしたデータ分析が可能になっていることを知らず、古き良きHadoopとBigQuery/Redshiftの間に大きな知識の断裂があるように感じます。
2010年前後に有利に働いたイメージが、逆に今は足かせになっている、というのが私の意見です。
まとめ
Hadoopの時代は終わった、という言説を見かけますが、MapReduceの時代が終わった、というのが正しい理解です。
Hadoopは、従来のRDBMSやDWHに比べ、大容量かつ非構造データを処理可能でしかも安価な基盤として2000年代後半から2010年代前半にかけて普及しました。
しかし、2010年代中頃には、Sparkを始めとした新しい処理エンジン、クラウドの台頭、ハードウェアの進化、そしてRDBMSやDWHの性能向上に伴い、初期のHadoopのアーキテクチャの必要性が失われていきました。
現在のHadoopは新しい処理エンジンやクラウドへの対応が進んでいるものの、初期のHadoopのイメージが残り続け、Hadoopの時代が終わったという言説につながっていっている、というのが「Hadoopの時代は終わった」という主張の原因と私は推測します。