[Livesence Tech Night] グリーにおけるHiveの運用

gree_tech
gree_techgree_tech
グリーにおけるHiveの運⽤用
⻑⾧長⾕谷川  貴之
2015/05/26 LIVESENSE TechNight 1
⾃自⼰己紹介
グリー株式会社 / データエンジニアリングG
Hive/Prestoを含むHadoop周りの保守
–  ツールの開発/改善
•  Job管理理コンソール, ジョブスケジューラ, …
–  利利⽤用者のサポート
•  データ投⼊入の準備, 使い⽅方の説明
2015/05/26 LIVESENSE TechNight 2
グリーにおける分析基盤 (簡略略版)
2015/05/26 LIVESENSE TechNight 3
Game
SNS
グリーにおける分析基盤 (簡略略版)
2015/05/26 LIVESENSE TechNight 4
Game
SNS
Hive
Hadoop上のデータをSQL-likeに扱える
弊社ではv0.12, v0.13, v0.14を利利⽤用中(!?)
2015/05/26 LIVESENSE TechNight 5
select
        page,
        count(distinct(uid))  uu,
        count(1)  pv
from  access
where
        day  =  ʻ‘2015-‐‑‒05-‐‑‒26ʼ’
group  by  page
ページごとのUUとPVを算出
マルチバージョンなHive
•  v0.12
–  今動いてる中で1番古いバージョン
–  最も安定、ただし遅い
•  v0.13.1
–  最も利利⽤用されているバージョン
–  v0.12から移⾏行行する場合はクエリの書き換えが必要
•  UDFがそのままだと動かない
•  v0.14
–  単純なバッチしか流流していないバージョン
–  速いが…
2015/05/26 LIVESENSE TechNight 6
運⽤用でありそうな話
•  異異常により再起動せざるおえない
•  ストレージが圧迫される
•  データに型の違う値がある
•  バグでそもそも違う値が返ってくる
2015/05/26 LIVESENSE TechNight 7
hard
運⽤用でありそうな話
•  異異常により再起動せざるおえない
•  ストレージが圧迫される
•  データに型の違う値がある
•  バグでそもそも違う値が返ってくる
2015/05/26 LIVESENSE TechNight 8
hard
⼀一時ファイルが消えず…
/tmpにできる⼀一時ファイルが消えず定期的に再起
動をしている
2015/05/26 LIVESENSE TechNight 9
$ ls -lt /tmp
total 3721552
drwxr-xr-x 2 hive hive 4096 May 25 10:57 1826d22e-cbbf-4e7b-8e9a-
e5d1a300994e_resources
drwxr-xr-x 2 hive hive 4096 May 25 10:08 08df2afb-779e-425c-9cf3-
cedca2cc051a_resources
drwxr-xr-x 2 hive hive 4096 May 25 10:04 4d1edc92-
ddd4-4aa2-904b-4b19182adf4f_resources
Disk Usage
再起動
Hive Serverの冗⻑⾧長化
再起動時にRUNNINGのクエリを殺さない
負荷がかかり過ぎた場合に切切り替えられる
2015/05/26 LIVESENSE TechNight 10
API
Server
Clients
Web UI
運⽤用でありそうな話
•  異異常により再起動せざるおえない
•  ストレージが圧迫される
•  データに型の違う値がある
•  バグでそもそも違う値が返ってくる
2015/05/26 LIVESENSE TechNight 11
hard
⻑⾧長期保存に向けデータの⼊入れ直し
定期的に列列指向フォーマットでデータを⼊入れ直す
–  ファイル数を減らしNameNodeの負担を減らす
–  効率率率の良良いディスク利利⽤用
2015/05/26 LIVESENSE TechNight 12
RCFile, ORCFileJSON.gz
INSERT
hourly, daily
運⽤用でありそうな話
•  異異常により再起動せざるおえない
•  ストレージが圧迫される
•  データに型の違う値がある
•  バグでそもそも違う値が返ってくる
2015/05/26 LIVESENSE TechNight 13
hard
データに型の違う値がある
Hiveはschema-on-read
–  それに対しMySQLはschema-on-write
弊社ではExternal tableの利利⽤用が多い
–  Fluentd → HDFSに保存したJSONを参照している
–  このJSONが不不正な状態で作成されている
全部 PHP のせいだ(嘘です、ごめんなさい
2015/05/26 LIVESENSE TechNight 14
2015/05/26 LIVESENSE TechNight 15
CREATE EXTERNAL TABLE `item_consume`(
`time` bigint,
`uid` int,
`device` string,
`request_status` int
)
{“time”: 1432134000, “uid”: “22275”, “device”: “android”, “request_status”: 1}
{“time”: 1432167000, “uid”: 22275, “device”: “iphone”, “request_status”: false}
例例)テーブル定義
データ(JSON)
2015/05/26 LIVESENSE TechNight 16
CREATE EXTERNAL TABLE `item_consume`(
`time` bigint,
`uid` int,
`device` string,
`request_status` int
)
{“time”: 1432134000, “uid”: “22275”, “device”: “android”, “request_status”: 1}
{“time”: 1432167000, “uid”: 22275, “device”: “iphone”, “request_status”: false}
例例)テーブル定義
データ(JSON)
2015/05/26 LIVESENSE TechNight 17
_⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人_  
>  ClassCastException <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
※ NumberFormatExceptionが起きるケースもある
違う型のデータへの取り組み
•  できるだけ変換、出来ない場合はNULL
–  SerDeの箇所に変更更を加える
–  “22275”→22275, false → 0, “” → NULL
•  Schemaの変更更をしてもらう
–  intのカラムにfloatが⼊入ってるケースなど
–  変更更しないとNULLしかでてこない
2015/05/26 LIVESENSE TechNight 18
運⽤用でありそうな話
•  異異常により再起動せざるおえない
•  ストレージが圧迫される
•  データに型の違う値がある
•  バグでそもそも違う値が返ってくる
2015/05/26 LIVESENSE TechNight 19
hard
そもそも違う値が返ってくる(1/2)
[HIVE-9753] Wrong results when using multiple
levels of Joins. When table alias of one of the
table is null with left outer joins.
何回かJOINするクエリを投げたときに発覚
異異なるaliasがなぜか同じaliasになってた
このチケットは放置されたまま…
2015/05/26 LIVESENSE TechNight 20
そもそも違う値が返ってくる(2/2)
[HIVE-9743] Incorrect result set for vectorized
left outer join
正しくJOINできてなくて0になるカラムが多数
EXPLAINを⾒見見ると明らかにおかしくなってた
v1.2.0で修正済み (実際に投げて確認済み
2015/05/26 LIVESENSE TechNight 21
まとめ
•  Hiveはバギーなので運⽤用する際は要注意
–  特にアップグレードは⼗十分な検証が必要
–  パッチを当てる運⽤用も覚悟
–  v1.2.0は多くのバグが直っているので期待
•  ログはちゃんとした形式で出⼒力力しましょう
–  どこかに困る⼈人達がいます
•  ⼈人数が多くない場合、⾃自社運⽤用はやめましょう
–  Redshift, BigQuery, TreasureDataを使おう
–  バグはその⼈人達が直してくれる
2015/05/26 LIVESENSE TechNight 22
2015/05/26 LIVESENSE TechNight 23
HAPPY  HACKING
1 of 23

More Related Content

What's hot(20)

Gitlab ci & ecsへのデプロイGitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイ
iwata jaws-ug132 views
Neo4jrbにおけるOGMNeo4jrbにおけるOGM
Neo4jrbにおけるOGM
takabes002K views
JenkinsとCodeBuildとCloud Buildと私JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私
Shoji Shirotori5.4K views
広告における機械学習の適用例とシステムについて広告における機械学習の適用例とシステムについて
広告における機械学習の適用例とシステムについて
Yahoo!デベロッパーネットワーク2.5K views
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Yahoo!デベロッパーネットワーク707 views
Py conjp2017ジョブフェアPy conjp2017ジョブフェア
Py conjp2017ジョブフェア
創史 花村83 views
Bot Builder V4 SDK  + QnA Maker / LUISBot Builder V4 SDK  + QnA Maker / LUIS
Bot Builder V4 SDK + QnA Maker / LUIS
Yoshitaka Seo811 views
Node-REDのworldmapの活用Node-REDのworldmapの活用
Node-REDのworldmapの活用
OSgeo Japan2.9K views
OSC Hiroshima 2013OSC Hiroshima 2013
OSC Hiroshima 2013
Yuya Adachi1.8K views

Viewers also liked(20)

The world is	connectedThe world is	connected
The world is connected
Junichiro Ueno1.3K views
NAVERまとめの裏側NAVERまとめの裏側
NAVERまとめの裏側
Hiroshi Chiyokawa2.3K views
What is support_engineer_in_treasuredataWhat is support_engineer_in_treasuredata
What is support_engineer_in_treasuredata
Treasure Data, Inc.3.2K views
Soft layerと運用管理の自動化・省力化あれこれSoft layerと運用管理の自動化・省力化あれこれ
Soft layerと運用管理の自動化・省力化あれこれ
NHN テコラス株式会社1.8K views
Yahoo! JAPANでのHadoop利用についてYahoo! JAPANでのHadoop利用について
Yahoo! JAPANでのHadoop利用について
Yahoo!デベロッパーネットワーク5.8K views
機能とコストで考えるAws機能とコストで考えるAws
機能とコストで考えるAws
Junichiro Ueno3.7K views
Inside CyberAgent's Game DevelopmentInside CyberAgent's Game Development
Inside CyberAgent's Game Development
Suguru Shirai3.6K views
Tco calculator 使ってみたTco calculator 使ってみた
Tco calculator 使ってみた
softlayerjp4.2K views

Similar to [Livesence Tech Night] グリーにおけるHiveの運用(20)

Titanium MobileTitanium Mobile
Titanium Mobile
Naoya Ito4.1K views
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka2.3K views
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
Rui Hirokawa2.8K views

More from gree_tech(20)

海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views

[Livesence Tech Night] グリーにおけるHiveの運用