Hadoopと愉快な仲間たち

自分用のメモです。

# ビッグデータ分散処理

- Hadoop
- Spark
 - インメモリー処理を主体
- Storm
 - リアルタイムHadoop

## Hadoop

 - [Hadoop による分散データ処理: 第 1 回 導入編](http://www.ibm.com/developerworks/jp/linux/library/l-hadoop-1/index.html)
 - [Hadoop による分散データ処理: 第 2 回 拡張編](http://www.ibm.com/developerworks/jp/linux/library/l-hadoop-2/index.html)
 - [Hadoop による分散データ処理: 第 3 回 アプリケーション開発](http://www.ibm.com/developerworks/jp/linux/library/l-hadoop-3/index.html)

## Spark

 - Apache Sparkは、Scalaで（Hadoopのような）分散処理を行う為のライブラリー（OSS）
 - HadoopのMapReduce部分に置き換わることを目指して開発された、Scalaで分散処理を行うフレームワークで、いわば高速化されたMapReduceといえる
 - [Spark を活用する:ビッグデータアプリケーション用の高速インメモリコンピューティング](http://www.cloudera.co.jp/blog/putting-spark-to-use-fast-in-memory-computing-for-your-big-data-applications.html)
 - [分散処理に入門してみた（Hadoop+Spark）](http://www.casleyconsulting.co.jp/blog-engineer/分散処理/分散処理に入門してみた（hadoop-spark）/)
 - [Apache Spark](http://www.ne.jp/asahi/hishidama/home/tech/scala/spark/)
 - [Apache Spark の紹介（前半：Sparkのキホン）](http://www.slideshare.net/hadoopxnttdata/apache-spark-spark)

## Storm

 - 「ストリーム処理」、メッセージ処理、データベースのアップデートをリアルタイムで行うために使うことができる
 - コンピュータクラスタ上で複雑なリアルタイム計算を書いたり、スケールするのが簡単になる
 - Hadoopがバッチ処理のためにやっていることをリアルタイム処理で行う
 - [ツイッターStorm:オープンソースのリアルタイムHadoop](http://www.infoq.com/jp/news/2011/09/twitter-storm-real-time-hadoop)
 - [Twitter Storm でビッグ・データをリアルタイムに処理する](https://www.ibm.com/developerworks/jp/opensource/library/os-twitterstorm/)

# 分散ファイルシステム

- HDFS
- WebHDFS
 - HTTP REST APIでHDFSにアクセスできる機能

## HDFS

 - Hadoop分散ファイルシステム (HDFS Hadoop Distributed File System)
 - [HDFS 【 Hadoop Distributed File System 】](http://e-words.jp/w/HDFS.html)
 - [HDFSおよびMapReduce](http://www.cloudera.co.jp/products-services/cdh/hdfs-and-mapreduce.html)

## WebHDFS

 - Hoop(httpfs)とwebhdfsはほぼ同じ
 - Java実装のHDFSClientがやっていた通信をHTTP REST APIで置き換え可能にする、というものがWebHDFS
 - [Hoop(httpfs)とwebhdfsの違い](http://tagomoris.hatenablog.com/entry/20120102/1325466102)
 - [WebHDFSの性能評価](http://shun0102.net/?p=454)

# Hadoop内のアルゴリズム

- MapReduce
- YARN
- Tez

## MapReduce

 - 並列処理フレームワーク MapReduce
 - [MapReduce](http://e-words.jp/w/MapReduce.html)

## YARN

 - YARN (Yet Another Resource Negotiator)
 - リソース管理と処理コンポーネントを切り離す
 - MapReduce エンジンに比べ、YARN にはスケーラビリティー、効率性、柔軟性という点で明らかに勝っている
 - [YARN の紹介](http://www.ibm.com/developerworks/jp/analytics/library/bd-yarn-intro/)
 - [YARNの登場によりHadoopは複数の並列分散処理エンジンを併用できる環境へ。Hadoop Conference Japan 2014](http://www.publickey1.jp/blog/14/yarnhadoophadoop_conference_japan_2014.html)

## Tez

 - TezそのものはYARNにおける並列処理エンジンについてMapReduceの代替となることを意識しているようである
 - [Tezの特性について](http://marblejenka.blogspot.jp/2014/02/tez_13.html)
 - [Apache Tez](http://jp.hortonworks.com/hadoop/tez/) 
 - [リピさんとオザさんのTezとSparkの会話](http://togetter.com/li/717215)

### swimlanes

- TezのApplicationMasterが出力したログをもとに、"どのコンテナ"で"どのような処理"が"いつ"実行していたかを可視化する仕組み
- [とりあえずTezのswimlanesを動かしてみた](http://sinchii.hatenablog.com/entry/2014/09/14/235236)

# 分散ストレージシステム

## HBase

 - 大量データに対応した分散ストレージシステム
 - Cassandra、Redis、MongoDBなどと同じで、NoSQLである
 - [HBaseを触ってみよう](http://codezine.jp/article/detail/6940)
 - [HBaseとはどんなNoSQLデータベースなのか？ 日本語で読める情報を集めてみた](http://www.publickey1.jp/blog/10/hbasenosql.html)

# SQL Query Engine

- Hive
- Pig
- Presto

## Hive

 - Hadoopの上に構築されたデータウェアハウス 構築環境であり、データの集約・問い合わせ・分析を行う
 - HiveはHiveQLというSQL風の言語でHadoop上のデータを操作できる
 - [Hadoop＋Hive検証環境を構築してみる (1/3)](http://www.atmarkit.co.jp/ait/articles/0902/27/news129.html)
 - [SQL と Hadoop の間での双方向のデータ転送: 第 2 回 HBase と Hive を利用する](http://www.ibm.com/developerworks/jp/analytics/library/bd-sqltohadoop2/)

## Pig

 - PigとHiveは、共にSQLライクな記法でMapReduceを書けるDSLである
 - 性能面で、「JavaMapReduce＞Hive＞Pig」
 - [Hadoop Pig の使いどころ](http://tech-sketch.jp/2012/08/hadoop-pig.html)
 - [Apache Pig で大規模データセットを分散処理する](http://qiita.com/ynakayama/items/8f334b3314561c5d48af)

## Presto

 - PrestoはHiveやImpalaと同じ「SQL Query Engine」
 - 特に数百GBを超える大規模データに対してもインタラクティブなレスポンスを（コンマ0秒以下，遅くても2,3秒）返すという点では Hive と異なり，Impala に近いものがある
 - [『Prestoとは何か，Prestoで何ができるか』](http://treasure-data.hateblo.jp/entry/2014/07/10/150250)
 - [Facebook、分散SQLエンジン「Presto」公開。大規模データをMapReduce/Hiveの10倍効率よく処理すると](http://www.publickey1.jp/blog/13/facebooksqlprestomapreducehive10.html)

### Prestogres

 - BIツールからPrestoにつなぐ際のゲートウェイ
 - [CognosからPrestogres経由でPrestoにつないだ話](http://d.hatena.ne.jp/wyukawa/20140623/1403521909)

# その他

## Hcatalog

 - 大規模データについてのメタデータ、文字通りカタログの中央集中管理機能と、そのデータ入出力アダプタを提供する
 - [HCatalogインストール](http://metasearch.sourceforge.jp/wiki/index.php?HCatalog%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB)
 - [HCatalog](https://cwiki.apache.org/confluence/display/Hive/HCatalog)

## Hue

 - Hadoopを操作できるオープンソースのWeb UI
 - [HueでHadoopをWeb UIから使う](http://tkdmah.hatenablog.com/entry/2013/06/15/005008)

## zipkin

- [twitter/zipkin](https://github.com/twitter/zipkin)
- [LINEのマイクロサービス環境における分散トレーシング](http://developers.linecorp.com/blog/ja/?p=3392)