Mais conteúdo relacionado Semelhante a Hadoopデータプラットフォーム #cwt2013 (20) Mais de Cloudera Japan (20) Hadoopデータプラットフォーム #cwt20132. 自己紹介
嶋内 翔(しまうち しょう)
• 2011年4月にClouderaの最初の日本人社員として入
社
• テクニカルサポート業務をメインに、日本における技
術に関係する業務全般を担当
• email:
sho@cloudera.com
• twi?er:
@shiumachi
•
2
7. Hadoopシステムの全体構成
APIアクセス
外部システム
外部システム
APIアクセス
BIツール
+
JDBC/ODBC
Webサーバ等の
ログを生成するサーバ
SQL
Hadoop
検索
ログ収集
ユーザ
携帯端末の
通信ログ
分散バッチ処理
RDBMS
7
テーブルごと
インポート
機械学習
テーブルごと
エクスポート
DWH
8. Hadoopのシステム全体構成
APIアクセス
外部システム
外部システム
APIアクセス
データの取り込み
Webサーバ等の
ログを生成するサーバ
データの
保存
Hadoop
データの活用
BIツール
+
JDBC/ODBC
分析
SQL
探索
提供
検索
ログ収集
ユーザ
携帯端末の
通信ログ
分散バッチ処理
RDBMS
8
テーブルごと
インポート
データの処理
機械学習
テーブルごと
エクスポート
DWH
9. Hadoopのシステム全体構成
APIアクセス
外部システム
外部システム
APIアクセス
データの取り込み
Webサーバ等の
ログを生成するサーバ
データの
保存
Hadoop
データの活用
BIツール
+
JDBC/ODBC
分析
SQL
探索
提供
検索
ログ収集
ETLツール
BI・DWH
携帯端末の
通信ログ
ユーザ
分散バッチ処理
RDBMS
9
テーブルごと
インポート
データの処理
機械学習
テーブルごと
エクスポート
DWH
10. Hadoopシステムの全体構成
APIアクセス
外部システム
外部システム
APIアクセス
BIツール
+
JDBC/ODBC
Webサーバ等の
ログを生成するサーバ
SQL
Hadoop
検索
ログ収集
ユーザ
携帯端末の
通信ログ
分散バッチ処理
RDBMS
10
テーブルごと
インポート
機械学習
テーブルごと
エクスポート
DWH
12. データの取り込み
外部システム
データの
取り込み
APIアクセス
外部システム
APIアクセス
BIツール
+
JDBC/ODBC
Webサーバ等の
ログを生成するサーバ
SQL
Hadoop
検索
ログ収集
ユーザ
携帯端末の
通信ログ
分散バッチ処理
RDBMS
12
テーブルごと
インポート
機械学習
テーブルごと
エクスポート
DWH
20. Hive
と
Cloudera
Impala
Hive
SQLライクなクエリ言語
クエリ言語はMapReduce
アプリケーションにコンパイルされる
Cloudera Impala
オープンソースの低レイテンシクエリ言語
MapReduceを使わない。非常に高速
SELECT customer.id, customer.name, sum(order.cost)
FROM customer INNER JOIN order ON (customer.id = order.customer_id)
WHERE customer.zipcode = '63105’ GROUP BY customer.id, customer.name;
21
22. 生データをHive/Impalaで活用する
json
生データA
sequencefile
生データB
23
BIアナリスト
データは完全に生のままHadoopに入
れるより、最低限の加工処理をほど
テーブルa
こしておいた方がいい
• 圧縮
テーブルd
テーブルa’
• ファイルの結合
• etc…
中間テーブルc
テーブルe
テーブルb
アドホックな
クエリの結果
25. Hiveのスキーマ作成クエリの例
CREATE
EXTERNAL
TABLE
tweets
(
id
BIGINT,
created_at
STRING,
favorited
BOOLEAN,
retweet_count
INT,
retweeted_status
STRUCT<
text:STRING,
user:STRUCT<screen_name:STRING,name:STRING>>
)
PARTITIONED
BY
(datehour
INT)
ROW
FORMAT
SERDE
'com.cloudera.hive.serde.JSONSerDe'
LOCATION
'/user/flume/tweets'
26
26. Hiveのスキーマ作成クエリの例
CREATE
EXTERNAL
TABLE
tweets
(
id
BIGINT,
created_at
STRING,
favorited
BOOLEAN,
外部テーブル
retweet_count
INT,
retweeted_status
STRUCT<
text:STRING,
user:STRUCT<screen_name:STRING,name:STRING>>
)
データのパス
PARTITIONED
BY
(datehour
INT)
ROW
FORMAT
SERDE
'com.cloudera.hive.serde.JSONSerDe'
LOCATION
'/user/flume/tweets'
27
29. Hiveのスキーマ作成クエリの例
CREATE
EXTERNAL
TABLE
tweets
(
id
BIGINT,
created_at
STRING,
favorited
BOOLEAN,
retweet_count
INT,
retweeted_status
STRUCT<
text:STRING,
SerDe
user:STRUCT<screen_name:STRING,name:STRING>>
)
PARTITIONED
BY
(datehour
INT)
ROW
FORMAT
SERDE
'com.cloudera.hive.serde.JSONSerDe'
LOCATION
'/user/flume/tweets'
30
30. SerDe
•
•
•
Serializer
/
Deserializer
の略。「さーでぃー」と読む
あらゆるデータをHiveレコードに変換するためのイン
タフェースを提供する
組み込みSerDeもいくつかある
•
•
テキスト以外のバイナリデータなども、カスタム
SerDeを実装することで読み込むことは可能
•
31
RegexSerDeなど
ただしJavaのクラスを実装する必要がある
33. 加工例:
SequenceFile(BLOCK)
+
gzip
テーブル作成
CREATE TABLE seq_table (id INT, name STRING, … )
STORED AS SEQUENCEFILE;
set mapred.output.compression.type = BLOCK;
set hive.exec.compress.output = true;
set mapred.output.compression.codec =
org.apache.hadoop.io.compress.GzipCodec;
INSERT INTO seq_table SELECT * FROM raw_table;
34
34. 加工例:
SequenceFile(BLOCK)
+
gzip
テーブル作成
外部テーブル
+
S (id INT, name STRING, … )
CREATE TABLE seq_table erDe
を組み合わせて、生
STORED AS データに対するスキーマを作る
SEQUENCEFILE;
set mapred.output.compression.type = BLOCK;
SequenceFile形式の
テーブルに変換する
set hive.exec.compress.output = true;
set mapred.output.compression.codec =
org.apache.hadoop.io.compress.GzipCodec;
INSERT INTO seq_table SELECT * FROM raw_table;
35
38. 生データをHive/Impalaで活用する
json
BIアナリスト
無理に全部Hadoop上で処理し
生データA
ようとせず、ローカルPCで処理
できるぐらいのデータ量になっ
テーブルa’
たらエクスポートする
40
テーブルd
中間テーブルc
sequencefile
生データB
テーブルa
テーブルb
テーブルe
アドホックな
クエリの結果
41. Hue
の Oozie
ワークフロー管理
スケジューリング実行な
どはOozieに任せてしまう
のが便利
(日次集計など)
43
43. Cloudera
Search
と統合する
json
BIアナリスト
生データA
テーブルa
テーブルd
テーブルa’
中間テーブルc
sequencefile
生データB
45
テーブルb
テーブルe
アドホックな
クエリの結果
44. Cloudera
Search
と統合する
検索
インデックス
検索UI
json
BIアナリスト
生データA
テーブルa
テーブルd
テーブルa’
中間テーブルc
sequencefile
生データB
46
テーブルb
テーブルe
アドホックな
クエリの結果
49. 計算リソースの管理
•
誰がリソース管理をするのか?
•
小規模なチーム:
全員
•
•
中規模なチーム:
クラスタ管理者
•
•
•
「お前のジョブ長すぎ。(ジョブを)殺すから」
ジョブ監視の仕組みが必要
大規模なチームは?
•
•
•
•
51
「ちょっとクラスタ使うよ」と声かければ済む
スケジューラ
cgroup
YARN
チーム単位でリソース配分が出来る Cloudera
Manager
5
を使い
ましょう!
51. そもそも誰に使わせるのか?
•
少数精鋭型
•
•
•
•
全員に使わせる
•
•
53
大半の企業はこのタイプになるはず
管理が楽なのがメリット
反面、チームは他の部署からの問合せ対応に追われるし、
他の部署はほしいデータがすぐに手に入らないのが不満
になる
管理は大変だが、誰もがデータにアクセスできるので、
データを活用する文化が根づいていれば強力
Kerberos認証などのセキュリティ機構をフル活用する必要
がある
60. Hadoopシステムの全体構成
APIアクセス
外部システム
外部システム
APIアクセス
BIツール
+
JDBC/ODBC
Webサーバ等の
ログを生成するサーバ
SQL
Hadoop
検索
ログ収集
ユーザ
携帯端末の
通信ログ
分散バッチ処理
RDBMS
62
テーブルごと
インポート
機械学習
テーブルごと
エクスポート
DWH
61. We
are
Hiring!
•
Clouderaは貴方を求めています!!
•
ソリューションアーキテクト
•
•
カスタマーオペレーションエンジニア(サポート)
•
•
•
•
Hadoopを使ったコンサルティングやモデリング
世界中のお客様のHadoopを守る!
インストラクター
システムエンジニア(技術営業)
セールス
興味のある方は
info-‐jp@cloudera.com
まで
ご連絡下さい!
63