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

我在廣告業學到的 大數據實戰技巧

Felix Chern
August 16, 2015
1.2k

我在廣告業學到的 大數據實戰技巧

Felix Chern

August 16, 2015
Tweet

Transcript

  1. About Me • Felix Chern, Senior Hadoop Engineer @ OpenX

    • MapReduce and Hive • 在前東家 SupplyFrame 從8台 Hadoop機器開始 • 之後加⼊入OpenX,現在擔任 data team tech lead • 200+TB/day data volume • http://idryman.org
  2. 你可以學會什麼 • 你是數據服務的接案公司 -> 瞭解客⼾戶需求 • 你也是電商 -> 我們 scale

    up 的經驗 • 個⼈人 -> 學會⼤大數據應⽤用的⼀一個⾯面向,以及切⼊入點
  3. web site 0 0 0   OpenX Ad Server

    Advertisers     
  4. web site 0 0 0 Ad request User Info OpenX

    Ad Server Advertisers User Info Bids Ads Big Data!
  5. Use case • 帳單報表 (external billing report) • OLAP for

    Internal reporting • Traffic quality, User black list, Canary, etc. • Archive (query from hive) ⼩小 中 極⼩小 ⼤大
  6. Raw Data ETL ETL ETL ETL ETL Output Output Output

    Output Intermediate Data sets Intermediate Data sets Intermediate Data sets clean up
  7. 統⼀一的乾淨資料 統⼀一的Fact data 全部以Java撰寫 Raw Data Clean up Clean dataset

    Fact dataset Data join Muxing job output output output output output output
  8. • 使⽤用⼤大量的 guava preconditions class • 出現錯誤時怎麼辦? • Alert •

    檢查錯誤 • 上游需「滾回」舊版本 (rollback) • 上 patch 以接受⼀一定⽐比例的髒資料 • 發⽣生頻率:⼀一年三次左右
  9. if (…) { int a = raw.getInt(“field_a”); if (a >

    0) { …; } else if (a == 0) { String b = raw.get(“field_b”); …; } else { …; } else { … } Business logic
  10. Business value objects • obj.set(raw); • obj.getValue(); • 繼承在此處⽤用起來⾮非常⾃自然 •

    Impression <- QalifiedImpression
 <- BillableImpression, MarketImpression, etc.
  11. @Override long getValue() { if (raw.is(BILLABLE_IMP)) { return super.getValue(); }

    return 0; } 使⽤用繼承來 Unnest if-else 使⽤用Enum來當filter raw 會將enum結果cache起來
  12. Schema的愛與恨 • 傳統資料庫的schema (Schema on read) • 更新⾮非常痛苦 • ⼀一開始就要設計好

    • 沒有schema (i.e. NoSQL) 的話呢? • 什麼都可以進來,什麼都不可靠..
  13. • 選⼀一個serialization format (protobuf, thrift, avro, lwes) (openx使⽤用lwes) • 版本號會附在資料中

    • 資料進來時再根據版本號驗證,或是升級 • 兼顧可驗證性,以及開發迭代速度
  14. 如何切⼊入big data? • 中⼩小型公司可以試著把⾃自家的ETL改成hadoop • 四到⼋八台機器⾜足矣 • 五個⼩小時的ETL,縮短成20分鐘 (my first

    job) • Hadoop the definitive guide: secondary key sort • 使⽤用secondary key sort 做 data join • 使⽤用secondary key sort 做 data de-duplicate