3-4-Spark 在 360 的实践及经验分享-李远策_第1页
3-4-Spark 在 360 的实践及经验分享-李远策_第2页
3-4-Spark 在 360 的实践及经验分享-李远策_第3页
3-4-Spark 在 360 的实践及经验分享-李远策_第4页
3-4-Spark 在 360 的实践及经验分享-李远策_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

李远策2016-4-222016-4-22360Spark平台介绍业务及应用案例360-Spark集群概况解决Yarn和公司HDFS兼容解决Yarn和公司HDFS兼容问题,从standalone迁徙到Yarn机器学习集群200+节点1500+节点上线spark-1.6.0版本解决Yarn线上扩容问题机器学习集群500+节点通用计算集群3000+节点每天作业数总和2W+支持几十个业务部门使用上线spark-1.3.1版本standalone部署模式单个集群<100节点2015.052015.082015.112016.02上上线spark-1.4.1版本standalone+自研多租户资源隔离机器学习集群<100节点节点360Spark平台介绍360-Spark应用MLLib•业务:新闻主题分类、新闻推荐、APP推荐、恶意代码识别、恶意域名检测等。GraphXPA•业务:搜索PageValue、网站安全监测等。SparkSQL•采用HiveContext替换公司90%以上的Hive作业,每天例行1.5W+作业。•每个HiveSQL平均3轮MR作业,平均性能提升2~5倍。BDCRankonSparkBDCAASSRankonSpark内置org.apache.spark.graphx.lib.PageRank算法不适合GraphX在千亿边规模上难以胜任PageRankonSpark(续)vallinks=…//网页传递概率RDD[(pageId,[(pageId,ratio)])]valranks=…//网页valueRDD[(pageId,rank)]valratios=…//网页赋值权重RDD[(pageId,ratio)]valtotalZ=…//网页权重总和Longvalalpha=…//网也权重转义比例floatvalcontribs=links.join(ranks).values.flatMap{case(urls,rank)=>urls.map(url=>(url._1,url._2*rank))}valranksTmp=contribs.reduceByKey(_+_).mapValues(alpha*_)valcontribsZ=ranksTmp.map(x=>x._2).sum()valsuperZ=totalZ-contribsZvalranksZ=ratios.map{x=>(x._1,x._2*superZ)}ranks=ranksTmp.rightOuterJoin(ranksZ).map{case(pageId,(rankTmp,rankZ))=>(pageId,rankTmp.getOrElse(0.0)+rankZ)}}12AFABDGC12AFABDGC33BBEEHHSpark做社群发现的历程(1)lectionmutableMapSpark做社群发现的历程(2)内置org.apache.spark.graphx.lib.LabelPropagation经常出现超大社区的问题,效果不太理想。Spark做社群发现的历程(3)3、分层结果保存4、增量计算SparkSQL替换HiveHive迁移到SparkSQL的“正确打开方式”:1、编译Spark加上-Phive-Phive-thriftserver参数2、部署Spark(Yarn)集群3、配置SparkSQL共用Hive的元数据库4、用spark-hive(spark-sql)工具替换原有的hive命令5、-e/–f或者thriftserver提交作业。QL新版数据仓库方案QL新版数据仓库方案之之前数据仓库方案Hive迁移SparkSQL–迁移方法SparkSQL版本选择VSSparkSQLoin默认HashJoin,支持BroadcastHashJoin和SortMergeJoin支持BroadcastHashOuterJoin支持的Hivemetastore版本0.12/0.13/1.0/1.1/1.2spark.sql.hive.metastore.versionspark.sql.hive.metastore.jars/path/your/hiveJars支持多HiveMetaStore版本实现原理1、HiveContext中创建一个URLClassLoader作为clientLoader加载不同版本的Hivemetastoreclasses。2、在ClientWrapper中调用Hive的接口时会切换到clientLoader中,然后借助HiveShim去反射Hive中对应函数。例如360Spark平台介绍业务及应用案例经验&改进分享•SQL兼容(Insertoverwrite[local]directory的支持)因为SparkSQL-HiveContext的SQL解析调用了Hive的ParseDriver.parse完成,所以语法解析上不存在问题。•SQL兼容(Insertoverwrite[local]directory的支持)1、解析AST中的TOK_DIR和TOK_LOCAL_DIR将其转化成新定义的逻辑计划WriteToDirectory2、将逻辑计划WriteToDirectory转换成新定义的物理计划WriteToDirectory。3、在物理计划WriteToDirectory执行方法中复用InsertIntoHiveTable中的saveAsHiveFile逻辑将结果写到4、如果是localdirectory则将结果再拉回到本地•SQL兼容(SQL二义性问题)selectC.idfrom(selectA.idfromtestbasAjoin(selectidfromtestb)BonA.id=B.id)C;C.idisA.idorB.id?•transformationbugs(行尾部空列导致的数组越界)001\tABC\t002\t003\tEFG\t\t[001,ABC,002]GnewGenericInternalRow(prevLine.split(ioschema.outputRowFormatMap(“TOK_TABLEROWFORMATFIELD”)).map(CatalystTypeConverters.convertToCatalyst))读线程写线程outputStreamerrorStreaminputStream读线程写线程outputStreamerrorStreaminputStream•transformationbugs(Script的标准错误缓冲区打满导致transform流程卡住)主主进程ScriptScript进程•输入小文件合并的改进(增加支持自定义inputFormat类)默认采用建表时指定的InpurFormat,如果是默认的TextInputFormat,当小文件比较多是可能会导致RDD的partition数太多,导致性能下降。解决办法:通过参数允许用户指定InputFormat,在TableReader中反射生成对应的InputFormat对象并传入到HadoopRDD的构造函数中。使用方法:setspark.sql.hive.inputformat=org.apache.hadoop.mapred.lib.CombineTextInputFormat;•输出小文件合并的改进(增加自动合并结果文件)当spark.sql.shuffle.partitions设置的比较大且结果数据集比较小时,会产生大量的小文件(文件数等同spark.sql.shuffle.partitions)。解决办法:在最后的执行计划中加入一个repartitiontransformation。通过参数控制最终的partitions数且不影响shufflepartition的数量。•支持yarn-cluster模式,减小client的负载默认的yarn-client模式下Scheduler会运行在client上,加重client机器的负载。解决办法:让sparkSQL工具支持yarn-cluster模式。1)在Yarn集群上部署SparkSQL依赖的hivemetastorejar包。2)开通Yarnnodemanager节点访问Hivemetastore数据库3)解决“\”“转义问题。如spark-hive–e“select*fromuserwherename=\”张三””;在yarn-cluster模式中会触发两commandSpark-1.4.1HashJoinJoin数据倾斜rtitionvalue=Avalue=Bvalue=Cvalue=Dvalue=Evalue=Frtitionvalue=Avalue=Bvalue=Cvalue=Dvalue=Evalue=FJoin数据倾斜rtitionvalue=Avalue=Bvalue=Cvalue=Dvalue=Evalue=Frtitionvalue=Avalue=Bvalue=Cvalue=Dvalue=Evalue=FSpark-1.6.0SortMergeJo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论