20140120 presto meetup
TRANSCRIPT
ログ収集・蓄積の流れ
FluentdAggregator
Hadoop Cluster ApplicationWebHDFS
■規模感・1500 Fluentdインスタンス・25,000 msg / sec・400GB / day・150 types of log
Hadoop Slave
Prestoの構成
Hadoop Slave
DataNode
TaskTracker
Presto Worker
Presto Coordinator
Hive Metastore
Application/Client
・・・
● Coordinatorは専用物理サーバ● WorkerはHadoop Slaveと相乗り● HDFS上のログは定期的にRCFileへ● バージョンの推移
○ 0.66⇒0.73⇒0.75⇒0.82
構築・運用
● 構築○ RPM化してAnsibleで展開○ 配置+設定ファイル書き換えだけなので簡単
● 運用で使っているもの○ クエリ実行履歴
■ コーディネータのWeb UI○ ログ
■ /var/presto/data/logs/{server.log,launcher.log}○ メトリック
■ presto-metrics(https://github.com/xerial/presto-metrics)⇒Fluentd⇒Elasticsearch + Kibana
○ sysスキーマ
困ったこと・トラブル事例
● Workerが落ちる、固まる○ OutOfMemory. 固まった時は、kill -9 しかない○ task.shard.max-threads×task.max-memoryが-Xmx
以下となるように調整
● node-scheduler.include-coordinator=trueにしてた頃は、CoordinatorがWorkerと一緒に落ちてた
● HiveQLとの違い○ アプリケーション側でHiveQL/Presto(ANSI SQL)両パターンのク
エリを用意
テスト環境 2p12c64GB Mem
36TB Disk
NN
DN DN DN
Hadoop(HDP2.1)
Presto(0.82)
Coodinator
Worker Worker Worker
Master : 3nodes
Slave : 3nodes
NN
Metastore
測定したクエリ
Query1: select count(*) from TestTBL
Query2: select * from TestTBL where col1 = ‘XXX’
Query3: select * from TestTBL where col1 = ‘XXX’ and col2 = ‘YYY’
Query4: select col1, count(*) from TestTBL group by col1
Query5: select col1, count(*) from TestTBL where col2 = ‘YYY’ group by col1
測定した格納形式
• Text File (Textfile)• Record Columnar File (RCfile)• Optimized Row Columnar File (ORCfile)
まとめ
結果● クエリの種類を問わず、Prestoの方が高速● データの格納形式を問わず、Prestoの方が高速● Prestoは繰り返し処理を行うと高速化する● PrestoはRCファイルを用いた場合に、最も安定的に高速処
理ができる
今後やりたいこと● ノードスケール、データ量観点での測定● ORCファイルの圧縮機能を使用しての測定● HDP2.2で同様のテスト