Hadoop 入門

hadoop

対象者

  • Hadoopって何ができるの?
  • Hadoop エコシステムの一覧をざっくり知りたい
  • ちょっと調べてみたけど古い Hadoop (1系)の情報多くない?

Hadoopとは

Hadoop とは並列分散処理を実現するミドルウェアです。

ビッグデータの処理に、1台のコンピュータでは時間がかかりすぎるため、コンピューターをいっぱい並べて高速に処理しよう。というのが Hadoop 導入のモチベーションになります。

どこからがビッグデータ?

ビッグデータの明確な定義はありませんが、wiki によると目安はテラバイト、ペタバイト、エクサバイト規模だそうです。

ビッグデータ - Wikipedia

Hadoop アーキテクチャ(+周辺ソフトウェア)

Hadoop のアーキテクチャは、主に以下の3つのレイヤーから構成されます。

  • 分散処理エンジン(Apache Hadoop では Hadoop MapReduce)
  • リソースマネージャー(Apache Hadoop では Hadoop YARN)
  • 分散ファイルシステム(Apache Hadoop では HDFS)

3つのレイヤーが各コンピューター上で稼働しており、処理やデータの読み書きを各コンピューターに分散します。

分散処理エンジン

分散処理エンジンは、Hadoop における並列分散処理を担うソフトウェア群のことです。

デフォルトでは MapReduce と呼ばれる分散処理エンジンが稼働しています。MapReduce の詳細については下記の記事がわかりやすいです。

MapReduce入門:概要と使用開始 - Talend
MapReduceは、Hadoopフレームワーク内のプログラミングモデル(パターン)であり、Hadoopファイルシステム(HDFS)に格納されたビッグデータにアクセスするために使用されます。map関数は、入力、ペア、プロセスを使用して、別の中間ペアのセットを出力として生成します。

Hadoop では、MapReduce 以外にも様々な分散処理エンジン(SQL, NoSQL, 機械学習, DWH, ETL, 全文検索など)が利用可能です。

MapReduce 以外の分散処理エンジンは Hadoop エコシステムと呼ばれ、必要に応じてインストールすることが可能です。

以下に代表的な Hadoop エコシステムと、機能を紹介します。

Hadoop エコシステム実現する機能
Apache AccumuloKVS型のNoSQL。セキュリティ重視
Apache Atlasガバナンスコントロール、コンプライアンス対応
CascadingMapReduceを簡単に扱うAPI
Apache Drillエッジ機器のデータを操作する分散SQLエンジン
Apache falconデータライフサイクルを管理
Apache Flume複数のデータソースからHadoopに非構造化データを集約(ストリームデータ処理)
Apache HBaseKVS型のNoSQL
Apache HiveSQLライク(HiveQL)なクエリでデータを操作できる。対障害性重視する場合。DWHを実現
Apache HueHadoopやHadoopエコシステムGUIで操作
Apache ImpalaSQLライク(Impala SQL)なクエリでデータを操作できる。速度を重視する場合。リアルタイム処理を実現
Apache Kafka複数のデータソースからHadoopに非構造化データを集約(ストリームデータ処理)。flumeとの違いはここ
Apache Knox集中管理型の認証・アクセス管理
Apache Mahout線形代数、統計解析、機械学習ライブラリ
Apache Oozieジョブのスケジューラ
Apache PhoenixHBaseをデータストアとして利用するリアルタイムRDB
Apache Pigデータの加工(ETL)ツール
Apache Ranger認証済みのユーザーに対して属性ベースでアクセス権限を付与
Apache Sentry認証済みのユーザーに対してロールベースでアクセス権限を付与
Apache SliderYARNアプリケーションの制御。長時間起動している場合はKillするなど
Apache Solr全文検索
Apache Spark機械学習、SQL操作、R言語、グラフをインメモリで処理
Apache SqoopRDBMSからHadoopに構造化データのインポート、エクスポート
Apache TezMapReduceより速い分散処理フレームワーク

このように、やりたい処理に応じて分散処理エンジンを変更可能な点が Hadoop の強みと言えます。

上記を見てわかるとおり、Hadoop じゃないと出来ない処理は無いです(時間が無限にあれば)。Hadoop は処理を分散して高速化するミドルウェアです。

リソースマネージャー

リソースマネージャーはHadoop におけるリソース(CPU ,メモリ)管理を担います。

MapReduce ではリソースマネージャーに Hadoop YARN を利用しますが、リソースマネージャーとして Hadoop YARN を利用しないフレームワークやアプリケーションもあります。

Hadoop YANR の動作については下記の記事がわかりやすいです。

あの日見たYARNのお仕事を僕達はまだ知らない。 - Qiita
あなたが実行したジョブのこと考えてない間、ずっとYARNがジョブのこと考えててくれてたんだ みなさんはYARNの存在をどれだけ気づいてあげられているだろうか。 よくSparkと一緒にYARNって単語はよくみるよねー 知って...

分散ファイルシステム

分散ファイルシステムは、Hadoop におけるデータの読み書きの分散を担います。Hadoop 上で利用される分散ファイルシステムには以下のものがあります。

  • HDFS: Hadoop 標準のファイルシステム
  • EMRFS: Amazon S3 をストレージとして利用する場合のファイルシステム
  • MapR-FS: C言語でHDFSを書き直したファイルシステム。速い

他にもストレージとして Cloud Storage や Blob Storage を利用可能なようですが、内部でどんな分散ファイルシステムを利用するのかは不明です。(公開されていたら誰か教えて下さい)

参考書籍

本記事を記載するにあたり、下記の書籍を参考にしました。

オンプレで Hadoop を構築する人にオススメです。逆にクラウド上で Hadoop を構築する場合は各クラウドベンダーのドキュメントを見たほうがいいと思います。

0

コメント

タイトルとURLをコピーしました