本帖最后由 不会飞的小凯凯 于 2016-5-6 17:15 编辑
问题导读: 1.使用开源技术框架有什么优势? 2.新浪常用的技术框架有哪些? 3.生产环境中的开源框架怎么样调优? 黄波,2010年加入新浪微博,现研发中心feed技术专家,曾供职于百度。在 2016中国Spark技术峰会上,黄波将分享《Spark在新浪微博Feed排序的应用》。而在会议召开前夕,笔者联系到了黄波,就开源大数据技术框架选型和实践等问题进行了了解。
黄波目前专注于基于Spark、Storm等计算平台的大数据处理,致力于将分布式计算与机器学习技术应用于微博Feed排序和推荐等场景。
CSDN:你从什么时候开始接触Spark或者类似的开源技术框架,从工作上来看,你认为其主要解决的问题是什么? 黄波: 2008年接触Hadoop、Hdfs等分布式系统,在百度开发类似功能的Pyramid系统。2013年开始接触Strom、Spark等分布式计算系统,陆续引入到新浪微博的实际工作中。 我认为,分布式系统主要解决存储量和计算量等超过单机容量而提出的解决方案。Hdfs等分布式文件系统解决存储容量问题;Tachyon等解决内存容量问题;HBase、OceanBase等解决数据库容量问题;Kafka等解决队列容量和性能问题;Zookeeper解决分布式锁问题;Hadoop、Strom、Spark等分布式计算系统解决计算量问题,基本上都是提出计算范式,框架解决通讯、调度等问题。
CSDN:你负责的架构部分主要包括了哪些开源分布式计算框架?它们的优势是什么?发挥了什么样的价值? 黄波:目前主要用到Hadoop、Storm、Spark等开源分布式计算框架。Hadoop主要解决数据量问题,在处理大数据量的存储和简单计算问题上有优势;Storm主要解决实时数据处理问题,在数据处理延时方面有优势;Spark主要解决迭代计算等复杂计算问题,在处理复杂数据和计算问题方面有优势。
CSDN:这些开源技术框架在生产环境中使用主要面临的问题是?需要额外做一些什么样的调优? 黄波:一般来说,不同的阶段面临的问题不同。一般的开源技术框架都自成体系,开始阶段是如何引入的问题。最有效的方法是,结合实际项目问题,尝试用新开源技术解决实际问题;有实际价值才考虑引入,没有实际价值可以先搁置,等待更好的结合点,不能为了引入新开源技术而创造问题。下一个阶段是,深入了解,提高生产稳定性。一般来说,新开源技术都能解决某类特定问题,但是在生产和运维方面在早期都会有这样那样的缺陷。这需要我们在实际应用中,发现问题,解决问题,提高稳定性。这阶段最常见的方式是,开发辅助工具,提供各种数据监控,提供各种容灾方案等。随着开源技术的深入应用,我们对其优势和局限性会有更深入的理解,调优参数增加优势,开发补丁弥补局限,是这阶段经常做的事情。至于是否能突破原有设计和思路,自称体系,那就是更深层次了。
CSDN:对比一些商业产品,你认为基于开源技术的架构主要存在的优势是? 黄波:开源技术相关人才补充更容易,技术迭代速度更快,掌握成本更低。
CSDN:在生产环境使用中,你们趟了Spark的哪些坑?给用户简单的描述下? 黄波:首先是Spark调优的问题。例如,在使用Spark Streaming时,刚起得作业延迟较小,长期跑的作业延迟越来越大,需要调整作业参数,逐步优化;在使用Spark mllib跑模型训练时,也会出现内存不够而导致作业退出的情况,需要调整作业参数,甚至是业务参数。 其次是Spark配套环境的问题。例如,我们在使用LR时,发现模型存储和线上模型存储不一样,需要我们自己实现模型的存储和格式解析;在GBDT结合LR时,发现两个模型能够独立运行,但是结合起来使用时,还有问题,需要适当修改,做定制开发。
CSDN:开源技术的版本更新很大程度上取决于社区的主导者,那么你们又是如何保持与社区与时俱进的,分享一些诀窍吧。 黄波:跟进新版本进度,有新版本发布时,对比新老版本的差异;关注相关开发人员的微博、微信账号,了解最新动态。
CSDN:您在本次演讲中将分享哪些话题? 黄波:我将分享Spark在新浪微博Feed排序的应用。主要涉及微博最核心的Feed架构,以及Spark在Feed排序中发挥的一些作用。
CSDN:哪些听众最应该了解这些话题?您所分享的主题可以帮助听众解决哪些问题? 黄波:做搜索、推荐、排序等领域的技术人员可以了解下这些话题。 我分享的主题能提供一些实践经验和思路,避免大家在技术选型的一些弯路。
|