- 配下のプロジェクト
- Hadoop Streaming ... PerlやPHP言語でMap/Reduceプログラムを作成
- Hadoop Hive ... SQL風言語でMap/Reduceプログラムを作成
- Hadoop Pig ... MapプログラムはPerl言語など、ReduceプログラムはPig Latinという独自言語で作成
- 小さいファイルを処理する際には、サーバー間通信・プログラム起動などのオーバーヘッドの方が大きくなる
システム構成 †
Facebook †
eBay †
レイヤ | ツール | 監視・アラート | Ganglia, Nagios | ツール・ライブラリ | HUE/Mobius, UC4, Oozie, Mahout | データアクセス | Pig, Hive, MQL | MapReduce? | Java, Pipes, Scala, Python | Hadoop Core | Hadoop, HDFS |
Twitter †
レイヤ | ツール | Data Products | | Data Analytics | Java ME, Pig, Hive, Oozie | Data Input | Scribe, Crane | Data Formats | Elephant Bird, Hadoop-LZO | HDFS | |
- Elephant-birdはlzo圧縮したデータをproto bufで圧縮して送る仕組み。In/OutFormat?, Pig, StoreFunc?など。
関連ツール †
- PigのDSLは、独特な言語体系を持ち、ステップ単位で集合演算を実行可能
- Hiveはデータを構造化し、SQLライクな言語(HiveQL)でデータを扱えるようにすることができる
- 半構造化されたテキストファイルをタブ区切り、カンマ区切り、正規表現でのグルーピングなどを組み合わせてカラムに分け、テーブル名、カラム名で扱えるようにできる
- テーブル定義情報はメタストアに保存される
- メタストアには組み込みDBやMySQLなどが利用可能
- パーティショニングが使える
- ユーザ定義関数の作成も可能
- 基本的に単一のソース(入力データ)とシンク(出力データ)を前提として、各データに抽出系の処理を行い、演算フローをつなげていくという構成
- Hadoop/Hiveを用いたログ解析基盤の構築
- 決まった解析をDailyやMonthlyで行う場合はスケジューリングしてHiveジョブを実行し、その結果をサマリデータベース(MySQLを使用しています)に入れ、Web UIからグラフ表示するなどしていつでも確認できるようにしている。
- 米Yahoo! で開発、運用されている Apache Hadoop のためオープンソースのワークフローエンジン
- HDFSへの操作、Pigスクリプトの実行そしてMap/Reduce処理を含めた複雑なジョブの実行を管理することが可能
- Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. Being highly configurable and very extensible means that there are many options and thus many decisions that need to be made by an operator.
ディストリビューション †
適用の仕方 †
ファイルが小さい場合 †
構築事例 †
- 楽天の事例から見えた「Hadoop」構築の誤解
- 現実的には、Hadoopを最適に動かすためのハードウェアは相応なスペックが必要になる
- データレプリカの配置が障害レベルに応じてきちんと分散された状態になるかどうかを意識する必要がある
- サーバをフル稼働させるために電力使用効率なども真剣に考える必要がある
- SQLに似た言語を用いてHadoopのMapReduce?処理が記述可能なHiveなどを活用すれば、マーケティング部門のメンバーにも使えるようになるかもしれない
企業 | プロセッサ数 | データサイズ | Yahoo | 4000 | 1.5PB | eBay | 8500 | 16PB | NewYorkTimes? | | | Facebook | | | Twitter | | | Apple | | |
可用性向上 †
0.20系 †
- Linux-HAクラスタによるマスタノードの冗長化
- メタデータのバックアップ
- 0.20系にはBackupNode?の機能がない。自分でNFSマウントとかしてローカルとマウント先の2箇所に書くような仕組みを作る必要あり
0.21系 †
- CheckpointNode?
- BackupNode?
Hadoopを気軽に試す †
Amazon Elastic MapReduce? †
Google BigQuery? †
環境構築 †
自動構築 †
- kickstart ... OSの自動インストールで使用
- Puppet ... Hadoop関連の自動インストールで使用
NameNode?の冗長化 †
HDFS †
開発 †
開発ツール †
Hadoop Streaming †
運用 †
チューニング †
NameNode? †
- Block Sizeは128Mで運用
- 1ファイルは平均1.5ブロック(192MB)
- NameNode?では、(1 file object + 2 block object)で1ファイル約600byteのメモリが必要
- 1億ファイル時には60GBのメモリがNameNode?に必要
- 1ファイルのサイズ平均は減少する傾向にある
- BlockReport?を10分おき、Heartbeatを3秒おきにDataNode?が送信するとする
- 10000 DataNode?の時、
- NameNode?は秒間639,713のブロックを処理する必要が有る
- NameNode?は秒間300,000のハートビートを処理する必要が有る
- これは、NameNode?のワークロードの約30%にあたる
圧縮 †
フレームワーク †
導入支援サービス †
Hadoop用サーバ †
- datanodes/tasktrackers
- 4 1TB hard disks in a JBOD (Just a Bunch Of Disks) configuration
- 2 quad core CPUs, running at least 2-2.5GHz
- 16-24GBs of RAM (24-32GBs if you’re considering HBase)
- Gigabit Ethernet
- namenode/jobtracker
- 1GB of namenode memory for every one million blocks stored in the distributed file system
- With 100 datanodes in a cluster, 32GBs of RAM on the namenode provides plenty of room to grow
- We also recommend having a standby machine to replace the namenode or jobtracker, in the case when one of these fails suddenly
- When you expect your Hadoop cluster to grow beyond 20 machines we recommend that the initial cluster be configured as it were to span two racks, where each rack has a top of rack gigabit switch, and those switches are connected with a 10 GigE interconnect or core switch.
- Light Processing Configuration (1U/machine): Two quad core CPUs, 8GB memory, and 4 disk drives (1TB or 2TB). Note that CPU-intensive work such as natural language processing involves loading large models into RAM before processing data and should be configured with 2GB RAM/core instead of 1GB RAM/core.
- Balanced Compute Configuration (1U/machine): Two quad core CPUs, 16 to 24GB memory, and 4 disk drives (1TB or 2TB) directly attached using the motherboard controller. These are often available as twins with two motherboards and 8 drives in a single 2U cabinet.
- Storage Heavy Configuration (2U/machine): Two quad core CPUs, 16 to 24GB memory, and 12 disk drives (1TB or 2TB). The power consumption for this type of machine starts around ~200W in idle state and can go as high as ~350W when active.
- Compute Intensive Configuration (2U/machine): Two quad core CPUs, 48-72GB memory, and 8 disk drives (1TB or 2TB). These are often used when a combination of large in-memory models and heavy reference data caching is required.
- HP Cluster Management Utility (HP-CMU)
- 多数のLinuxサーバを効率的に構築・運用・監視するためのソフトウェア
- 運用管理機能 ... 複数の演算ノードに対するファイル操作・編集、コマンド発行、ブート、シャットダウン、リブートや電源のオン/オフなどの処理を一括で実行
- クローン機能 ... 演算ノードのシステムディスクを他のノードに複製することが可能
- モニタ機能 ... 各演算ノードの負荷状況などさまざまなモニタ項目を、グラフや表で一覧可能
HP DLシリーズ †
その他 †
|