apache kylin balance between space and time
play

Apache Kylin Balance between Space and Time Debashis Saha | Luke - PowerPoint PPT Presentation

Apache Kylin Balance between Space and Time Debashis Saha | Luke Han 2015-06-09 http://kylin.io | @ApacheKylin About us Debashis Saha (@debashis_saha ) - VP, eBay Cloud Services (Platform, Infrastructure, Data) Luke Han (@lukehq)


  1. Apache Kylin Balance between Space and Time Debashis Saha | Luke Han 2015-06-09 http://kylin.io | @ApacheKylin

  2. About us § Debashis Saha (@debashis_saha ) - VP, eBay Cloud Services (Platform, Infrastructure, Data) § Luke Han (@lukehq) - Sr. Product Manager, Analytics Data Infrastructure - Committer & PMC Member of Apache Kylin

  3. Agenda § About Apache Kylin § Feature Highlights § Tech Highlights § Roadmap § Q&A http://kylin.io

  4. What kylin ¡ ¡/ ¡ˈkiːˈlɪn ¡/ ¡ 麒麟 @ApacheKylin -­‑-­‑n. ¡(in ¡Chinese ¡art) ¡a ¡mythical ¡animal ¡of ¡composite ¡form ¡ Extreme OLAP Engine for Big Data Kylin is an open source Distributed Analytics Engine, contributed by eBay Inc., provides SQL interface and multi-dimensional analysis (OLAP) on Hadoop supporting extremely large datasets Open ¡Sourced ¡on ¡Oct ¡1st, ¡2014 ¡ • Accepted ¡as ¡Apache ¡Incubator ¡Project ¡on ¡Nov ¡25th, ¡2014 ¡ • http://kylin.io ¡(http://kylin.incubator.apache.org) • http://kylin.io

  5. Who are using Kylin? § External § 25+ contributors in community § Adoption: § On Production: Baidu Map § Evaluation: Huawei, Bloomberg Law, British Gas, JD.com Microsoft, Tableau … —from mailing list § eBay Internal Cases Case Cube ¡Size Raw ¡Records - 90% ile query < 5 seconds User ¡Session ¡Analysis 26 ¡TB 28+ ¡billion ¡rows Traffic ¡Analysis 21 ¡TB 20+ ¡billion ¡rows Behavior ¡Analysis 560 ¡GB 1.2+ ¡billion ¡rows http://kylin.io

  6. Why Happiness e z i s Latency 10s http://kylin.io

  7. Balance Between Space and Time OLAP Cube 0-D(apex) cuboid time item location supplier Cuboid = one combination of dimensions • 1-D cuboids • Cube = all combination of dimensions (all cuboids) time, item time, location location, supplier item, location 2-D cuboids item, supplier Time, supplier time, location, supplier 3-D cuboids time, item, supplier time, item, location item, location, supplier 4-D(base) cuboid time, item, location, supplier Base vs. aggregate cells; ancestor vs. descendant cells; parent vs. child cells • (9/15, milk, Urbana, Dairy_land) - < time, item, location, supplier > 1. (9/15, milk, Urbana, *) - < time, item, location > 2. (*, milk, Urbana, *) - < item, location > 3. (*, milk, Chicago, *) - < item, location > 4. (*, milk, *, *) - < item > 5. http://kylin.io

  8. How BI Tools, Web App… ANSI SQL Kylin Map Reduce http://kylin.io

  9. Agenda § About Apache Kylin § Feature Highlights § Tech Highlights § Roadmap § Q&A http://kylin.io

  10. Feature Highlights • Extremely Fast OLAP Engine at scale • ANSI SQL Interface on Hadoop • Seamless Integration with BI Tools, like Tableau • Interactive Query Capability • MOLAP Cube • Incremental Build of Cubes • Approximate Query Capability for Distinct Count (HyperLogLog) • Leverage HBase Coprocessor for query latency • Job Management and Monitoring • User friendly Web GUI for manage, build, monitor and query cubes • Security capability to set ACL at Cube/Project Level • Support LDAP Integration http://kylin.io

  11. Define Data Model http://kylin.io

  12. Manage Jobs http://kylin.io

  13. Explore the Data http://kylin.io

  14. Interactive with BI Tool - Tableau http://kylin.io

  15. Agenda § About Apache Kylin § Feature Highlights § Tech Highlights § Roadmap § Q&A http://kylin.io

  16. Kylin Architecture Overview 3rd ¡Party ¡App ¡ SQL-­‑Based ¡Tool ¡ ➢ Online ¡Analysis ¡Data ¡Flow ¡ ➢ Offline ¡Data ¡Flow ¡ (Web ¡App, ¡Mobile…) (BI ¡Tools: ¡Tableau…) ➢ Clients/Users ¡interactive ¡with ¡Kylin ¡ REST ¡API JDBC/ODBC via ¡SQL ¡ ➢ OLAP ¡Cube ¡is ¡transparent ¡to ¡users SQL SQL REST ¡Server Query ¡Engine Mid ¡Latency ¡-­‑ ¡Minutes Low ¡ ¡Latency ¡-­‑ ¡Seconds Routing Data ¡ Hadoop OLAP ¡ Metadata Cube Hive Cube ¡ (HBase) Cube ¡Build ¡Engine ¡ (MapReduce…) Star ¡Schema ¡Data Key ¡Value ¡Data http://kylin.io

  17. Data Modeling Cube ¡Modeler Admin End ¡User Cube: ¡… ¡ Fact ¡Table: ¡… ¡ Row ¡Key Column Dim Dimensions: ¡… ¡ row ¡A Val ¡1 Measures: ¡… ¡ row ¡B Val ¡2 Fact Storage(HBase): ¡… row ¡C Val ¡3 Dim Dim Column ¡Family Source ¡ Mapping ¡ Target ¡ ¡ Star ¡Schema Cube ¡Metadata HBase ¡Storage http://kylin.io

  18. Cube Build Job Flow http://kylin.io

  19. How to Store Cube - HBase Schema http://kylin.io

  20. Kylin Query Engine - Explain Plan SELECT ¡ test_cal_dt.week_beg_dt, ¡ OLAPToEnumerableConverter ¡ test_category.category_name, ¡test_category.lvl2_name, ¡ ¡ ¡ OLAPProjectRel (WEEK_BEG_DT=[$0], ¡category_name=[$1], ¡ test_category.lvl3_name, ¡test_kylin_fact.lstg_format_name, ¡ ¡ CATEG_LVL2_NAME=[$2], ¡CATEG_LVL3_NAME=[$3], ¡LSTG_FORMAT_NAME=[$4], ¡ test_sites.site_name, ¡SUM(test_kylin_fact.price) ¡AS ¡GMV, ¡ SITE_NAME=[$5], ¡GMV=[CASE(=($7, ¡0), ¡null, ¡$6)], ¡TRANS_CNT=[$8]) ¡ COUNT(*) ¡AS ¡TRANS_CNT ¡ ¡ ¡ ¡ ¡ OLAPAggregateRel (group=[{0, ¡1, ¡2, ¡3, ¡4, ¡5}], ¡agg#0=[$SUM0($6)], ¡ FROM ¡ ¡test_kylin_fact ¡ ¡ agg#1=[COUNT($6)], ¡TRANS_CNT=[COUNT()]) ¡ ¡ ¡LEFT ¡JOIN ¡test_cal_dt ¡ON ¡test_kylin_fact.cal_dt ¡= ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPProjectRel (WEEK_BEG_DT=[$13], ¡category_name=[$21], ¡ test_cal_dt.cal_dt ¡ CATEG_LVL2_NAME=[$15], ¡CATEG_LVL3_NAME=[$14], ¡ ¡ ¡LEFT ¡JOIN ¡test_category ¡ON ¡test_kylin_fact.leaf_categ_id ¡= ¡ LSTG_FORMAT_NAME=[$5], ¡SITE_NAME=[$23], ¡PRICE=[$0]) ¡ test_category.leaf_categ_id ¡ ¡AND ¡test_kylin_fact.lstg_site_id ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPFilterRel (condition=[OR(=($3, ¡123456), ¡=($5, ¡’New'))]) ¡ = ¡test_category.site_id ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPJoinRel (condition=[=($2, ¡$25)], ¡joinType=[left]) ¡ ¡ ¡LEFT ¡JOIN ¡test_sites ¡ON ¡test_kylin_fact.lstg_site_id ¡= ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPJoinRel (condition=[AND(=($6, ¡$22), ¡=($2, ¡$17))], ¡joinType=[left]) ¡ test_sites.site_id ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPJoinRel (condition=[=($4, ¡$12)], ¡joinType=[left]) ¡ WHERE ¡ test_kylin_fact.seller_id ¡= ¡123456OR ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPTableScan (table=[[DEFAULT, ¡TEST_KYLIN_FACT]], ¡fields=[[0, ¡1, ¡2, ¡3, ¡ test_kylin_fact.lstg_format_name ¡= ¡’New' ¡ 4, ¡5, ¡6, ¡7, ¡8, ¡9, ¡10, ¡11]]) ¡ GROUP ¡BY ¡ test_cal_dt.week_beg_dt, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPTableScan (table=[[DEFAULT, ¡TEST_CAL_DT]], ¡fields=[[0, ¡1]]) ¡ test_category.category_name, ¡test_category.lvl2_name, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPTableScan (table=[[DEFAULT, ¡test_category]], ¡fields=[[0, ¡1, ¡2, ¡3, ¡4, ¡5, ¡ test_category.lvl3_name, ¡ 6, ¡7, ¡8]]) ¡ test_kylin_fact.lstg_format_name,test_sites.site_name ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ OLAPTableScan (table=[[DEFAULT, ¡TEST_SITES]], ¡fields=[[0, ¡1, ¡2]]) http://kylin.io

  21. Cube Optimization § Curse ¡of ¡Dimensionality ¡ § N ¡dimension ¡cube ¡has ¡2 N ¡cuboid ¡ § Full ¡Cube ¡vs. ¡Parqal ¡Cube ¡ ¡ § Huge ¡Data ¡Volume ¡ ¡ § Dicqonary ¡Encoding ¡ § Incremental ¡Building http://kylin.io

  22. Full Cube vs. Partical Cube § Full ¡Cube - Pre-aggregate all dimension combinations - “Curse of dimensionality”: N dimension cube has 2 N cuboid. § ParOal ¡Cube - To avoid dimension explosion, we divide the dimensions into different aggregation groups - 2 N+M+L à 2 N + 2 M + 2 L - For cube with 30 dimensions, if we divide these dimensions into 3 group, the cuboid number will reduce from 1 Billion to 3 Thousands - 2 30 à 2 10 + 2 10 + 2 10 - Tradeoff between online aggregation and offline pre-aggregation http://kylin.io

  23. Partical Cube http://kylin.io

  24. Incremental Build http://kylin.io

  25. What’s Next § Improve ¡cube ¡algorithm ¡ § Cube ¡by ¡segments, ¡30%-­‑50% ¡faster ¡ § Build ¡delay ¡down ¡to ¡tens ¡of ¡minutes ¡ § Streaming ¡cubing ¡ § Analyze ¡real-­‑qme ¡data ¡ § Build ¡delay ¡down ¡to ¡seconds ¡ § Spark http://kylin.io

  26. Cube by Layer § The current algorithm 0-­‑D ¡Cuboid MR - Many MRs, the number of 1-­‑D ¡Cuboid dimensions MR - Huge shuffles, aggregation at 2-­‑D ¡Cuboid reduce side, 100x of total cube MR size 3-­‑D ¡Cuboid MR 4-­‑D ¡Cuboid MR Full ¡Data http://kylin.io

Recommend


More recommend