Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ORCについて調べた

kanga333
April 02, 2018
82

 ORCについて調べた

社内LT会発表資料

kanga333

April 02, 2018
Tweet

Transcript

  1. ORCについて調べた kagawa_shoichi

  2. ORCとは Hadoop向けの列指向データフォーマット 行指向フォーマット:JSON, TSV 列指向フォーマット:ORC, Parquent Hiveを高速化する目的で開発された MAでもHadoopのメインのデータフォーマットとして利用 データ基盤を刷新中だし改めてその特性を把握しよう

  3. 列指向フォーマットとは データを行ではなく、列で保管するデータフォーマット 英語だとcolumnar format [1]

  4. 列指向で何が嬉しいのか(性能編) クエリを投げる際、大抵は S E L E C T * では無く必要なカラムを

    絞る カラムを絞っても 行指向だと結局データ全体を取得する 列指向だと必要なカラムのデータのみを取得するため 読み込み量が激減する
  5. 列指向で何が嬉しいのか(圧縮編) データを列で持つと似た特性のデータが続く 例えば Boolean: True,False 低いカーディナリティのデータが連続で格納 都道府県: 東京,埼玉,神奈川,千葉 ... 低いカーディナリティのデータが散発的に格納

    UnixTimeStamp: 1504115006,1504115007,1504115009 カーディナリティは高いが規則的な数値 似た特性のデータは高効率なエンコーディングが可能
  6. Run­Length Encoding [1]

  7. Dictionary Encoding [1]

  8. Delta Encoding [1]

  9. どのくらい違うのか Apacheっぽいアクセスログで比較 { " a g e n t "

    : " M o z i l l a / 5 . 0 " , " c o d e " : 2 0 0 , " h o s t " : " 1 6 4 . 9 0 . 3 0 . 1 4 2 " , " m e t h o d " : " G E T " , " p a t h " : " / i t e m / j e w e l r y / 4 9 1 5 " , " r e f e r e r " : " ­ " , " s i z e " : 1 0 1 , " u s e r " : " ­ " } 1.5億件を(JSON|TSV|ORC)で(圧縮|無圧縮)で格納
  10. 結果 各方式 サイズ(MB) JSON無圧縮 35,000 TSV無圧縮 27,000 JSON+Gzip 2,800 TSV+Gzip

    2,600 ORC+Gzip 800
  11. JSON生ログ→ORC+Gzip圧縮で1/40 データの形式次第なので参考程度

  12. Hadoopの性能スケールのボトルネック DiskIO >> NetworkIO >>>>>>>>>>>>>>> CPU 圧倒的にDiskIOが遅い クラスタスケールのネックは大体ディスクサイズ

  13. データ圧縮はデータ保管コストの観点か らも パフォーマンスの観点からも 列指向と圧縮は必須

  14. ちなみにIO速度参考 名前 速度(MB/s) 備考 メモリ 20000 ネットワーク(10Gbps) 1250 Bondingで2倍 SSD(シーケンシャル)

    500 2枚刺しで2倍 HDD(シーケンシャル) 100 12枚刺しで12倍 ネットワーク(1Gbps) 125 SSD(ランダム) 50 HDD(ランダム) 1 [2]
  15. ORCの詳細 [3]

  16. ORCの詳細 ファイルは複数のスプリットに分割される 1スプリットには最大10,000行のデータが格納される スプリットには各カラムの統計情報やインデックスが付く 複数のスプリットをまとめたファイル全体の統計情報を示し たフッターも作成される

  17. 知られざるORC カラムを指定してBloomFilterを追加できる あるカラムにこのデータは存在するかという問に対し 必ず無い あるかもしれない 上記の判断を高速に行うフィルタ よくwhere句で指定するカラムはInsert時にソートすると高速 インデックスにMINとMAXを保有するのでファイルの対象 を大幅に絞れる cliでJSON⇔ORCな変換ツールがある

    cliでORCのメタデータが見れたりする
  18. 参考 [1] http://engineer.retty.me/entry/columnar­storage­format カラムナフォーマットのきほん 〜データウェアハウスを 支える技術〜 [2] http://qiita.com/awakia/items/c8ada6c8101efe2de561 プログラマが知っておくべき、メモリ/ディスク/ネットワ ークの速度まとめ

    [3] https://orc.apache.org/ Apache orc公式サイト