#1.谈一谈你之前是如何围绕Kylin框架进行工作的?
我:其实在我的理解中,Kylin它首先是一个OLAP分析引擎,它是如此的轻量、因非侵入式又是如此的友好,所以更愿意将之前的工作定义为是拿Kylin这个神器去为现有的框架添加OLAP的功能,而不是去围着它转。
Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
2.Hive建立HBase的外表需不需要依赖Kylin?
我:不需要,Hive自己即可实现。
3.谈一谈你所了解的Hive优化方式?
我:partition(对Hive表做分区),这样子查询指定分区就不需全表遍历了;limit,查我所需。
补:Hive性能优化
4. Storm,Spark,Flink这些流式处理框架,它们各自的应用场景分别是什么?
我:Storm是纯实时流,如果你对性能就是延迟的要求比较看重的话,可以选择Storm。而Spark野心太大,微批处理,可能不如Storm这个垂直领域的实时流。
补:现在想来,当时说的太过于笼统了,给面试官一种感性思维的印象,就是认为我觉得因为Storm是垂直领域的所以就一定比生态圈庞大的Spark来的好,确实所以恶补了一下。
Storm 和 SparkStreaming区别
从上图以及以上博文不难总结出Spark Streaming和Storm各自的应用场景:
Storm:由于其优于SparkStreaming的事务机制,所以适用于金融领域;而又因其为实时流,所以延迟比SparkStreaming低,所以如果对低延迟要求较高的场景,也是首选哈,但是Storm对于复杂逻辑的实现是不如Spark的。
Spark Streaming:虽然Spark Streaming的延迟不如Storm,但是秒级延迟大多数的生产场景也能容忍,更何况这个TradeOff换来的可是大的吞吐量哦,所以对于那些可以容忍秒级延迟且对大吞吐量有要求的场景可以适用,Spark对复杂逻辑的实现支持较好。
值得一提的是,哪个产品适用哪个应用场景,只能相对谈一谈了,谈起海量数据的Oracle和MySQL选型,前者Oracle从者想必不会少,但是如果MySQL到了阿里的手中呢?那海量数据的问题也就不是海量的问题,MySQL的问题也不是MySQL的问题,而当初在Devops全球敏捷运维峰会上,谈到阿里选择MySQL的一个很大原因是其社区庞大,同样,Spark的社区也是相当庞大的哦
Spark与Flink:对比与分析
至于Flink,个人实操的比较少,所以就从上面的博文,可以大致了解到两者适用的生产场景:
Spark:有些不在赘述,总结如下:吞吐量大、社区大、SQL支持好、秒级延迟。
Flink:期望与Hadoop兼容性好,毫秒级低延迟,更优的计算方式。