2018年10月13日土曜日

IT革命とビッグデータ

IT革命

1990年代 インターネットの商用化、Web検索サービスの登場、パソコン/携帯電話/デジカメ/ビデオゲームの普及。ゴードン・ムーアが1965年に予測、のちに修正・確立されたムーアの法則を自己成就するかのごとく集積回路は細密化、需要拡大を伴って、情報処理能力、伝送容量、記憶容量のコストは劇的に低下した(IT革命)。

情報処理能力(CPU・プロセッサ)の向上

急速な進化の時期: 1990年代〜2000年代前半

ムーアの法則(半導体の性能が約2年で2倍になる)が一番ハマっていた時代。Windows 95が出た1995年頃のCPUのクロック周波数は100MHzくらいだったのが、2000年代に入るとあっという間に1GHzを超えた。処理速度が数十倍〜数百倍に跳ね上がった。

伝送容量(通信・インターネット)

急速な進化の時期: 2000年代前半(2001年〜2005年頃が特に激変)

ダイヤルアップ接続(ISDNなど)は画像1枚開くのにも時間がかかっていた。ADSLや光ファイバー(日本や韓国の場合。ヨーロッパではADSL アメリカではCATV)といったブロードバンド(高速大容量通信)が一気に普及して、通信速度がkbpsからMbpsのレベルに一気に跳ね上がった。

記憶容量(ストレージ)

急速な進化の時期: 1990年代後半〜2000年代

巨大磁気抵抗(GMR)効果の技術がHDDに応用されて、ハードディスクの容量はMBからGBへ突入。2000年代後半には垂直磁気記録方式の恩恵により、TBへと爆発的に増えた




ビッグデータ

言葉の誕生は2000年前後。学術的な論文やデータマイニングの専門家の間で、管理しきれない巨大なデータ群を指す言葉として「Big Data」が使われ始める。

ブロードバンドの普及と記憶容量の増大により、従来のシステムでは管理、処理しきれないほど巨大な膨大な複雑なデータがもたらされる。

Googleが当時発表した3大技術論文

Googleは2000年代前半、膨大なウェブデータを処理するために自社開発した画期的なインフラ技術を、以下の3本の論文として相次いで世界に公開。のちのビッグデータ技術の基盤となった。

  1. 2003年 GFS(Google File System)数千台の安価なコンピューターをつないで、1つの巨大なハードディスクのように大容量データを蓄積する分散ファイルシステム。
  2. 2004年 MapReduce 蓄積した巨大なデータを、数千台のマシンに、小さく分割して配り(Map)、同時に並列処理して集計する(Reduce)ためのプログラミングモデル。
  3. 2006年 Bigtable ペタバイト規模の大容量データを高速に検索・管理するための分散データベース。

世界への影響

Googleがこれらの仕組みを論文として理論(設計図)だけ公開したため、世界中のオープンソース開発者たちが、自分たちでも使えるように同じものを作ろうと動き出した。

そうして2006年に生まれたのがHadoop(GoogleのGFSを真似たHDFSと、MapReduceを真似たHadoop MapReduceのOSS版)。Hadoopが開発されたことで、安価に大容量データを扱える土台が整い、Google以外の一般企業でもビッグデータ分析できる時代が到来。

Hadoop(HDFSとMapReduceのOSS版)を開発したのは2人のエンジニア、ダグ・カッティング(Doug Cutting)とマイク・カファレラ(Mike Cafarella)

2人はもともとオープンソースの独自のWeb検索エンジン(Nutchプロジェクト)を開発していた。しかし世界中のWebページを集めて検索インデックスを作るには、データ量が多すぎて個人のPC環境では限界を迎えていた。

そこへ前述のGoogleの論文(GFSとMapReduce)が公開。衝撃を受けた2人は、この仕組みをオープンソースで真似すれば、自分たちの検索エンジンも巨大データを扱えるようになると考え、Java言語を使って独自に実装し始めた。これがHadoopの原型。

とはいえ、個人での開発には実験用のサーバー代や資金の限界があった。そこに目をつけた、当時Googleを猛追していた米Yahoo!(Yahoo! Inc.)は、2006年 ダグを自社に雇用し(マイクは大学院で研究しながら外部からサポート)、潤沢な資金と数千台規模の検証用サーバー群を提供して全面支援。

Yahoo!の強力なバックアップを得たことで開発は一気に加速、急成長。検索エンジンの一機能から「大容量データを分散処理する共通基盤」として切り離され、独立したプロジェクト「Hadoop」に。

Yahoo!での開発が進んだ2006年、非営利団体であるApacheソフトウェア財団(Apache Software Foundation)にプロジェクトは寄贈。

Hadoopは特定の企業が独占する商用製品としてではなく、誰でも無料で使えるオープンソースソフトウェア(OSS)として世界に向けて正式に公開。

Hadoop: ダグの子供が、お気に入りの黄色い象のぬいぐるみに付けた名前が由来。Hadoopの公式ロゴに使われている。




ちなみにAWSでいうと

GFS≒Amazon S3

巨大なデータを、安価に、壊れないように保存するための仕組み。

安価な構成: 特別な高級ハードウェアではなく、普通のハードウェア(サーバーやハードディスク)を大量に並べて巨大な保存スペースを作る。

自動バックアップ: どこかのハードディスクが1台や2台壊れてもデータが消えないよう、自動的にデータを3つ以上の場所にコピーして保存する仕組み(レプリケーション)を持っている。

特徴 GFS / HDFS(オンプレミス型) Amazon S3(クラウドネイティブ型)
実体 自分たちで用意した「サーバー(CPU+ハードディスク)」の集まり。 AWSが管理する、インターネット経由の「純粋なデータ保存スペース」。
拡張方法 容量が足りなくなると、サーバーを丸ごと1台買い足してネットワークに繋ぐ作業が必要。 ユーザーは何もしなくてよい。データを入れれば入れるだけ、容量が無限に自動拡張される。
計算方法との関係 データを保存しているサーバーそのものに計算(MapReduceなど)をさせる。 保存に特化している。計算するときは、別の計算用サーバー(EC2やEMRなど)を必要な時にだけ起動してS3に接続する。

MapReduce≒Amazon EMR / AWS Glue

大量のデータを並列で処理・加工する役割

大量データの並列処理: 1台のコンピューターでは処理できないテラバイト・ペタバイト級のデータを、数百〜数千台のマシンに分散して同時に計算する。

データの変換(ETL): 散らばった生データ(ログやCSVなど)を読み込み、きれいに整えて、分析しやすい形に変換して別の場所(S3など)に書き出す。

特徴 MapReduce(原典/Hadoop) Amazon EMR / AWS Glue(現代のAWS)
処理のスピードと仕組み データを処理する際、一工程ごとにハードディスク(ストレージ)への書き込みが発生するため、処理が遅い。 EMRやGlueの主流である「Apache Spark」は、データをメモリ(RAM)上で処理するため、MapReduceより最大100倍高速。
サーバーの管理 処理をするために、常に数千台のサーバーを自前で起動・維持しておく必要がある(使っていなくても電気代や管理費がかかる)。 EMR: 処理するときだけ自動で数百台のサーバーを起動し、終わったら消せる(使った分だけ課金)。Glue: サーバーの存在すら意識しない(サーバーレス)。

Bigtable≒Amazon DynamoDB

大量のデータから特定のデータを一瞬で読み書きするデータベース

超高速レスポンス(低レイテンシー): データ量がペタバイト級に増えても、アクセスが1秒間に数百件〜数百万件に激増しても、常に「1桁ミリ秒(1000分の数秒)」という超高速でデータを返す。

NoSQL(キー・バリュー型 / ワイドカラム型): 従来の行と列でガチガチに固められたRDB(SQL)とは違い、特定のキー(鍵)を指定して一直線にデータを取り出す仕組み。データの構造(項目)を後から自由に追加・変更できる柔軟性を持っている。

特徴 Bigtable(Google原典) Amazon DynamoDB(AWS)
データの管理単位(アーキテクチャ) ワイドカラム型: 巨大な1つのスプレッドシートのような構造。データは「行(Row Key)」ごとにアルファベット順で並べられて管理される。 進化型KVS(ドキュメント/ワイドカラム対応):基本の骨組みは、列を後からいくらでも横に広げられるワイドカラム型(KVS)。その中にJSONのような複雑なデータの塊(ドキュメント)をそのまま丸ごと放り込める柔軟な構造に進化。
運用のハードル 安定して高速に動かすためには、最低でも数台(できれば数十台)のサーバー(ノード)をクラスターとして維持する必要があり、初期コストが高い。 完全サーバーレス: データの読み書きの回数や、保存したデータ量だけで課金される。小さな個人アプリから、Amazonのプライムデーのような超巨大イベントまで自動で伸縮する。

キー・バリュー型(ドキュメント型)とは?
鍵(Key)と中身(Value)がペアになって保存されている、非常にシンプルなデータ構造のこと。コインロッカーのようなイメージ。

  • キー(Key): ロッカーの番号。世界に一つだけで絶対に重複しない
  • バリュー(Value): ロッカーの中に放り込まれている荷物(データ)そのもの

なぜ超高速なの?
従来の一般的なデータベース(SQL)は、Excelのように列と行が複雑に組まれており、データを検索するときは「A列が〇〇で、かつB列が××のデータを上から順番に探す…」という複雑な探索(計算)をする。そのためデータが増えると重くなる。

一方、DynamoDBのようなキー・バリュー型は、「105番のロッカーを開けて」と指示するだけ。データが100万件あろうが1億件あろうが、目的のロッカーへ一直線に向かうため、常に一瞬(1桁ミリ秒)でデータを取り出すことができるのが最大の強み。

DynamoDBは、ロッカーの中に入れる「バリュー(荷物)」の形として、JSONという書類(ドキュメント)のような複雑な階層構造のテキスト形式をそのまま丸ごと放り込める柔軟性(ドキュメント型としての特徴)を、ワイドカラムな骨組みの上に持たせている。

ワイドカラム型は、ロッカーの中にさらに細かく仕切られた小さな引き出し(カラム)が大量に並んでいるイメージ。鍵(行キー)でロッカーを開けたあと、3番目の引き出し(列)のデータだけを読み込むことができる。そして引き出しは10個だったり100個だったり、後からいくらでも横に広げる、ワイドにできるためワイドカラム型と呼ばれる。

AWSタイムライン

2006年3月:Amazon S3誕生。巨大なデータ保存庫。AWSというクラウドサービスのほぼ最初のサービスとして誕生。クラウドの歴史が始まる。

2009年4月:Amazon EMR誕生。Hadoopをクラウドで動かす基盤として登場(当時はまだMapReduce処理が全盛期)。

2012年1月:Amazon DynamoDB誕生。リアルタイムを支える超高速NoSQLデータベース。

2012年11月: Amazon Redshift誕生。大量のデータを高速で集計・分析(SQLクエリ)するための超巨大なデータベース。普通のビジネスマンやアナリストが、使い慣れたSQLでペタバイト級のデータを一瞬で集計できる。企業のデータ分析が一気に大衆化。

2016年11月: Amazon Athena誕生。S3のデータに直接SQLを投げるサーバーレス・クエリの決定版。S3に置いてあるデータ(CSVやログなど)に対して、データベースに移し替えることなく、S3にある状態のまま、直接SQLを投げて一瞬で集計できるサービス。データはあるけどわざわざデータベース(Redshift)を起動してインポートするのは面倒という常識を破壊。現在の、データレイク(S3に全部貯める)という設計思想を決定づけた主役。

2017年8月:AWS Glue誕生。サーバーの管理を不要にし、Apache Sparkなどを使ったモダンなデータ加工を自動化する、サーバーレスETLとして登場。

2017年11月: Amazon SageMaker誕生。貯まったビッグデータをを使って、AI(機械学習・ディープラーニング・生成AI・LLM)のモデルを開発・学習・デプロイするためのオールインワン環境。ビッグデータの最終ゴールを、集計からAIによる予測や生成へとシフト。Glueなどできれいに加工したビッグデータを、そのままAIの学習に流し込むための心臓部。

AWSの進化

  1. 貯める(S3)から始まり、
  2. 処理する(EMR)
  3. 分析する(Redshift/Athena/Glue)
  4. AIで活用する(SageMaker)へと発展してきた

AWSでビッグデータシステムを組む場合、S3 + Glue + Redshift/Athena + SageMakerの組み合わせが王道

Amazon S3が革命的だった理由

以下の条件を、世界で初めて同時に満たしたから。

  • 初期費用ゼロ、使った分だけの従量課金: 数億円の初期投資をせずとも、クレジットカード1枚で使い始められる。
  • API(ネット経由)での全自動操作: 人間がサーバーをセットアップするのではなく、プログラム(HTTPリクエスト)から一瞬でデータを保存・取得できる。
  • 容量が最初から「実質無限」: ユーザー側で「来年はデータが何ギガ増えるか」を予測してハードディスクを買い足す必要がなくなった。

0 件のコメント: