狠狠撸

狠狠撸Share a Scribd company logo
Hadoop ことはじめ
もくじ
1. はじめに
2. Hadoop アーキテクチャ概要
3. Hadoop を動かす手段
4. Hive
1. はじめに
はじめに
? 「Hadoop 徹底入門」第2版1部 ~ 2部まで読み終
わったので、書籍の内容をかいつまんでご紹介します
CDH(Cloudera s Distribution including Apache Hadoop) の利用を前
提に書かれているため、環境構築が簡単(yum一発)
Hadoop の基礎知識からクラスタ構成、アプリケー
ションの開発方法まで網羅されています
第2版がオススメです(前提知識が拡充されてます)
2. Hadoop アーキテクチャ概要
Hadoop とは
? 大量のデータを処理するための並列分散処理ソフトウェア
? 既存のバッチ処理の置き換えのみならず、今までできなかったことや諦めて
いたことが出来るようになる
? Google 社の論文?
"The Google File Ssytem (2003), MapReduce: Simpli?ed Data
Processing on Large Clusters (2004)?
をもとに OSS として実装を始めたのが Hadoop プロジェクト
の始まり
? Hadoop の適用領域
? 数百GB ~ 数TBなどの大量データのバッチ処理に適している
? 拡張性に優れる(スケールアウトでの処理性能向上)
? 柔軟なデータ構造に対応
Hadoop = HDFS + MapReduce
? 分散ファイルシステム(HDFS)と、?
並列分散処理を実現するフレームワーク(MapReduce)の2つから成る
? HDFS について
? マスタースレーブ構成
? DataNode(スレーブ) はファイルのデータブロックを管理
? NameNode (マスタ)は HDFS の全体的な管理
? ブロックサイズは初期値で64MB
? これが1つの Map 処理へ割り当てられるデータとなる(例外あり)
http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/hdfs-and-mapreduce.html
MapReduce フレームワーク
? 大きく Map 処理, Reduce 処理に分かれる
? Map 処理はブロックごとに処理が分散される(例外あり)
? Shu?e フェーズは Map 処理が終了し次第行われ、キーのハッシュ値で Reduce 処理へ
分散される
? Reduce 処理が行われる前にキーのソートが行われる(Sort フェーズ)
? ジョブの結果は HDFS に出力される
http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/hdfs-and-mapreduce.html
3. Hadoop を動かす手段
4つの開発手段
? Java による開発
? 柔軟な開発が可能だが、その分記述量も多い
? Java への精通、毎度のコンパイルなど手間や負担が多い
? Hadoop Streaming
? 標準入出力を利用したインタフェース
? 言語を選ばないが、柔軟性は低い
? Apache Pig
? Pig Latin という命令型の言語で処理を記述
? MapReduce 特有の複雑な処理が隠 される
? アドホックな処理が可能
? Hive と比べると、パフォーマンスに難点
? Hive
? SQL ライクな HiveQL と呼ばれる言語で処理を記述できるため、書きやすい
? アドホックな処理が可能
4. Hive
サンプルコード
// テーブル定義!
CREATE TABLE puella (id STRING, weapon STRING)!
ROW FORMAT DELIMITED!
FIELDS TERMINATED BY ‘,’!
STORED AS TEXTFILE;!
CREATE TABLE gem (id STRING, color STRING, turbidity INT)!
ROW FORMAT DELIMITED!
FIELDS TERMINATED BY ‘,’!
STORED AS TEXTFILE;!
CREATE TABLE witch (id STRING, weapon STRING, color STRING)!
ROW FORMAT DELIMITED!
FIELDS TERMINATED BY ‘,’!
STORED AS TEXTFILE;!
!
// データロード!
LOAD DATA LOCAL INPATH ‘/tmp/puella.csv’ INTO TABLE puella;!
LOAD DATA LOCAL INPATH ‘/tmp/gem.csv’ INTO TABLE gem;!
!
// MapReduce の実行、データの挿入!
INSERT OVERWRITE TABLE witch!
SELECT puella.id, puella.weapon, gem.color!
FROM luella!
JOIN gem!
ON puella.id = gem.id!
WHERE gem.turbidity >= 80;!
!
// データ出力!
INSERT OVERWRITE LOCAL DIRECTORY ‘/tmp/output’ SELECT * FROM witch;
どのようなデータ形式で読み込み、
出力するのかを設定
テーブルへデータを流し込む
(HDFS 上の特定ディレクトリ
へファイルを分割?保存)
ローカル / HDFS 上のファイル
どちらでも指定可能
テーブルの結果をファイル出力
SQL と違う点
? オンライン処理に不向き
? SQL のようだが、裏ではもちろん Hadoop
? 扱うのは HDFS 上のファイルのため、行更新不可
? クエリの結果をテーブルやファイルに書き出すが、どちらも HDFS 上にファ
イルとして書き出される
? 追記は可能(INSERT OVERWRITE を INSERT INTO にする)
? インデックスではなくパーティションでクエリ最適化
? 特定カラムの特定値でデータファイルを分割する
? SQL の機能が全て使えるわけではない
JOIN 句での NOT 条件
WHERE IN, WHERE EXISTS によるサブクエリ
UNION (重複判定を行わない UNION ALL は可)
インデックスではなく
パーティションでクエリ最適化
// テーブル定義!
CREATE TABLE puella (id STRING, weapon STRING)!
PARTITIONED BY (weapon STRING)!
ROW FORMAT DELIMITED!
FIELDS TERMINATED BY ‘,’!
STORED AS TEXTFILE;!
. . .!
!
// データロード!
LOAD DATA LOCAL INPATH ‘/tmp/puella.csv’ INTO TABLE puella!
PARTITION (weapon=‘Sword’);!
!
// MapReduce の実行、データの挿入!
INSERT OVERWRITE TABLE witch!
SELECT puella.id, puella.weapon, gem.color!
FROM luella!
JOIN gem!
ON (puella.id = gem.id AND puella.weapon = ‘Sword’)!
WHERE gem.turbidity >= 80;
weapon カラムによりパーティションを
作成することを宣言
weapon= Sword の行のみを読み込み、
HDFS 上の下記パスへ保存する:
/user/hive/warehouse/
<DB名>/<テーブル名>/weapon=Sword/<ファイル名>
on 句 や where 句で指定することにより
特定のパーティションのみ読み込むことが可能
(この場合、where 句に条件を指定しても、全件読み込み
後なのでパーティション指定とはならない)

More Related Content

What's hot (20)

ODP
Hadoop for programmer
Sho Shimauchi
?
PDF
世界一简単な贬补诲辞辞辫の话
Koichi Shimazaki
?
PDF
贬补诲辞辞辫 基础
hideaki honda
?
PDF
ただいま贬补诲辞辞辫勉强中
Satoshi Noto
?
PPT
はやわかり贬补诲辞辞辫
Shinpei Ohtani
?
PPTX
厂础厂と贬补诲辞辞辫との连携
SAS Institute Japan
?
PDF
贬补诲辞辞辫入门
Preferred Networks
?
PDF
Hadoop / MapReduce とは
Takeshi Matsuoka
?
PDF
贬补诲辞辞辫の概念と基本的知识
Ken SASAKI
?
PDF
惭补辫搁别诲耻肠别プログラミング入门
Satoshi Noto
?
PDF
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Hadoop / Spark Conference Japan
?
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Shinpei Ohtani
?
PDF
贬补诲辞辞辫概要説明
Satoshi Noto
?
PDF
Apache Sparkのご紹介 (後半:技術トピック)
NTT DATA OSS Professional Services
?
PDF
贬补诲辞辞辫のシステム设计?运用のポイント
Cloudera Japan
?
PDF
並列分散処理基盤贬补诲辞辞辫の绍介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
NTT DATA OSS Professional Services
?
PDF
オライリーセミナー Hive入門 #oreilly0724
Cloudera Japan
?
PDF
Apache Hadoopの現在と未来
驰补丑辞辞!デベロッパーネットワーク
?
PDF
Hadoop Conference Japan 2013 Winter オープニングスライド
hamaken
?
Hadoop for programmer
Sho Shimauchi
?
世界一简単な贬补诲辞辞辫の话
Koichi Shimazaki
?
贬补诲辞辞辫 基础
hideaki honda
?
ただいま贬补诲辞辞辫勉强中
Satoshi Noto
?
はやわかり贬补诲辞辞辫
Shinpei Ohtani
?
厂础厂と贬补诲辞辞辫との连携
SAS Institute Japan
?
贬补诲辞辞辫入门
Preferred Networks
?
Hadoop / MapReduce とは
Takeshi Matsuoka
?
贬补诲辞辞辫の概念と基本的知识
Ken SASAKI
?
惭补辫搁别诲耻肠别プログラミング入门
Satoshi Noto
?
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Hadoop / Spark Conference Japan
?
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Shinpei Ohtani
?
贬补诲辞辞辫概要説明
Satoshi Noto
?
Apache Sparkのご紹介 (後半:技術トピック)
NTT DATA OSS Professional Services
?
贬补诲辞辞辫のシステム设计?运用のポイント
Cloudera Japan
?
並列分散処理基盤贬补诲辞辞辫の绍介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
NTT DATA OSS Professional Services
?
オライリーセミナー Hive入門 #oreilly0724
Cloudera Japan
?
Hadoop Conference Japan 2013 Winter オープニングスライド
hamaken
?

Similar to 贬补诲辞辞辫ことはし?め (20)

PPT
Googleの基盤クローン Hadoopについて
Kazuki Ohta
?
PDF
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
Sho Shimauchi
?
PDF
MapReduce 初心者が Hadoop をさわってみた。もちろん C++ から。
You&I
?
PPT
贬补诲辞辞辫の绍介
bigt23
?
PPTX
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
GoAzure
?
PPTX
ゾウ使いへの第一歩
Fumito Ito
?
PPT
Hadoop ~Yahoo! JAPANの活用について~
驰补丑辞辞!デベロッパーネットワーク
?
PPTX
Hadoop / Elastic MapReduceつまみ食い
Ryuji Tamagawa
?
PPTX
Cloudera大阪セミナー 20130219
Cloudera Japan
?
PDF
Apache Kuduは何か?そんなに「速い」DBなのか? #dbts2017
Cloudera Japan
?
PDF
贬补诲辞辞辫事始め
You&I
?
PDF
Hadoop, NoSQL, GlusterFSの概要
日本ヒューレット?パッカード株式会社
?
PPTX
Apache Spark チュートリアル
K Yamaguchi
?
PDF
TokyoWebminig カジュアルなHadoop
Teruo Kawasaki
?
PPTX
お見合いて?趣味を聞かれたときに 「IoTとヒ?ック?テ?ータを少々」と答えたいSEか?読む資料
Monta Yashi
?
PDF
Cloudera Impala #pyfes 2012.11.24
Sho Shimauchi
?
PDF
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
?
PDF
MapReduceを置き換えるSpark ?HadoopとSparkの統合? #cwt2015
Cloudera Japan
?
PPTX
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
AdvancedTechNight
?
PDF
OSC2012 OSC.DB Hadoop
Shinichi YAMASHITA
?
Googleの基盤クローン Hadoopについて
Kazuki Ohta
?
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
Sho Shimauchi
?
MapReduce 初心者が Hadoop をさわってみた。もちろん C++ から。
You&I
?
贬补诲辞辞辫の绍介
bigt23
?
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
GoAzure
?
ゾウ使いへの第一歩
Fumito Ito
?
Hadoop ~Yahoo! JAPANの活用について~
驰补丑辞辞!デベロッパーネットワーク
?
Hadoop / Elastic MapReduceつまみ食い
Ryuji Tamagawa
?
Cloudera大阪セミナー 20130219
Cloudera Japan
?
Apache Kuduは何か?そんなに「速い」DBなのか? #dbts2017
Cloudera Japan
?
贬补诲辞辞辫事始め
You&I
?
Apache Spark チュートリアル
K Yamaguchi
?
TokyoWebminig カジュアルなHadoop
Teruo Kawasaki
?
お見合いて?趣味を聞かれたときに 「IoTとヒ?ック?テ?ータを少々」と答えたいSEか?読む資料
Monta Yashi
?
Cloudera Impala #pyfes 2012.11.24
Sho Shimauchi
?
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
?
MapReduceを置き換えるSpark ?HadoopとSparkの統合? #cwt2015
Cloudera Japan
?
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
AdvancedTechNight
?
OSC2012 OSC.DB Hadoop
Shinichi YAMASHITA
?
Ad

Recently uploaded (9)

PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PPTX
色について.pptx .
iPride Co., Ltd.
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
色について.pptx .
iPride Co., Ltd.
?
Ad

贬补诲辞辞辫ことはし?め

  • 2. もくじ 1. はじめに 2. Hadoop アーキテクチャ概要 3. Hadoop を動かす手段 4. Hive
  • 4. はじめに ? 「Hadoop 徹底入門」第2版1部 ~ 2部まで読み終 わったので、書籍の内容をかいつまんでご紹介します CDH(Cloudera s Distribution including Apache Hadoop) の利用を前 提に書かれているため、環境構築が簡単(yum一発) Hadoop の基礎知識からクラスタ構成、アプリケー ションの開発方法まで網羅されています 第2版がオススメです(前提知識が拡充されてます)
  • 6. Hadoop とは ? 大量のデータを処理するための並列分散処理ソフトウェア ? 既存のバッチ処理の置き換えのみならず、今までできなかったことや諦めて いたことが出来るようになる ? Google 社の論文? "The Google File Ssytem (2003), MapReduce: Simpli?ed Data Processing on Large Clusters (2004)? をもとに OSS として実装を始めたのが Hadoop プロジェクト の始まり ? Hadoop の適用領域 ? 数百GB ~ 数TBなどの大量データのバッチ処理に適している ? 拡張性に優れる(スケールアウトでの処理性能向上) ? 柔軟なデータ構造に対応
  • 7. Hadoop = HDFS + MapReduce ? 分散ファイルシステム(HDFS)と、? 並列分散処理を実現するフレームワーク(MapReduce)の2つから成る ? HDFS について ? マスタースレーブ構成 ? DataNode(スレーブ) はファイルのデータブロックを管理 ? NameNode (マスタ)は HDFS の全体的な管理 ? ブロックサイズは初期値で64MB ? これが1つの Map 処理へ割り当てられるデータとなる(例外あり) http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/hdfs-and-mapreduce.html
  • 8. MapReduce フレームワーク ? 大きく Map 処理, Reduce 処理に分かれる ? Map 処理はブロックごとに処理が分散される(例外あり) ? Shu?e フェーズは Map 処理が終了し次第行われ、キーのハッシュ値で Reduce 処理へ 分散される ? Reduce 処理が行われる前にキーのソートが行われる(Sort フェーズ) ? ジョブの結果は HDFS に出力される http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/hdfs-and-mapreduce.html
  • 10. 4つの開発手段 ? Java による開発 ? 柔軟な開発が可能だが、その分記述量も多い ? Java への精通、毎度のコンパイルなど手間や負担が多い ? Hadoop Streaming ? 標準入出力を利用したインタフェース ? 言語を選ばないが、柔軟性は低い ? Apache Pig ? Pig Latin という命令型の言語で処理を記述 ? MapReduce 特有の複雑な処理が隠 される ? アドホックな処理が可能 ? Hive と比べると、パフォーマンスに難点 ? Hive ? SQL ライクな HiveQL と呼ばれる言語で処理を記述できるため、書きやすい ? アドホックな処理が可能
  • 12. サンプルコード // テーブル定義! CREATE TABLE puella (id STRING, weapon STRING)! ROW FORMAT DELIMITED! FIELDS TERMINATED BY ‘,’! STORED AS TEXTFILE;! CREATE TABLE gem (id STRING, color STRING, turbidity INT)! ROW FORMAT DELIMITED! FIELDS TERMINATED BY ‘,’! STORED AS TEXTFILE;! CREATE TABLE witch (id STRING, weapon STRING, color STRING)! ROW FORMAT DELIMITED! FIELDS TERMINATED BY ‘,’! STORED AS TEXTFILE;! ! // データロード! LOAD DATA LOCAL INPATH ‘/tmp/puella.csv’ INTO TABLE puella;! LOAD DATA LOCAL INPATH ‘/tmp/gem.csv’ INTO TABLE gem;! ! // MapReduce の実行、データの挿入! INSERT OVERWRITE TABLE witch! SELECT puella.id, puella.weapon, gem.color! FROM luella! JOIN gem! ON puella.id = gem.id! WHERE gem.turbidity >= 80;! ! // データ出力! INSERT OVERWRITE LOCAL DIRECTORY ‘/tmp/output’ SELECT * FROM witch; どのようなデータ形式で読み込み、 出力するのかを設定 テーブルへデータを流し込む (HDFS 上の特定ディレクトリ へファイルを分割?保存) ローカル / HDFS 上のファイル どちらでも指定可能 テーブルの結果をファイル出力
  • 13. SQL と違う点 ? オンライン処理に不向き ? SQL のようだが、裏ではもちろん Hadoop ? 扱うのは HDFS 上のファイルのため、行更新不可 ? クエリの結果をテーブルやファイルに書き出すが、どちらも HDFS 上にファ イルとして書き出される ? 追記は可能(INSERT OVERWRITE を INSERT INTO にする) ? インデックスではなくパーティションでクエリ最適化 ? 特定カラムの特定値でデータファイルを分割する ? SQL の機能が全て使えるわけではない JOIN 句での NOT 条件 WHERE IN, WHERE EXISTS によるサブクエリ UNION (重複判定を行わない UNION ALL は可)
  • 14. インデックスではなく パーティションでクエリ最適化 // テーブル定義! CREATE TABLE puella (id STRING, weapon STRING)! PARTITIONED BY (weapon STRING)! ROW FORMAT DELIMITED! FIELDS TERMINATED BY ‘,’! STORED AS TEXTFILE;! . . .! ! // データロード! LOAD DATA LOCAL INPATH ‘/tmp/puella.csv’ INTO TABLE puella! PARTITION (weapon=‘Sword’);! ! // MapReduce の実行、データの挿入! INSERT OVERWRITE TABLE witch! SELECT puella.id, puella.weapon, gem.color! FROM luella! JOIN gem! ON (puella.id = gem.id AND puella.weapon = ‘Sword’)! WHERE gem.turbidity >= 80; weapon カラムによりパーティションを 作成することを宣言 weapon= Sword の行のみを読み込み、 HDFS 上の下記パスへ保存する: /user/hive/warehouse/ <DB名>/<テーブル名>/weapon=Sword/<ファイル名> on 句 や where 句で指定することにより 特定のパーティションのみ読み込むことが可能 (この場合、where 句に条件を指定しても、全件読み込み 後なのでパーティション指定とはならない)