好友推荐系统的好友挖掘逻辑,其实用 Hadoop YARN 来跑还挺合适的。资源调度靠它搞定,运行效率也不差,尤其是你数据量一多,单机吃不消的时候,YARN 的分布式能力就派上用场了。
YARN 的架构分成三个部分:ResourceManager、NodeManager、ApplicationMaster。嗯,简单说就是资源总管+每台机器的守门员+具体跑任务的小管家,分工还挺明确。
容器 (Container) 是个挺关键的东西,所有任务都得先申容器才能运行。每个容器里配了 CPU
和 内存
,你想跑 MapReduce 还是 Spark,都得走这个流程。
跑 MapReduce 时,流程是这样:先申资源,再执行任务,回收资源。每一步都能通过 YARN 的 UI 看到,调试起来方便。
至于推荐算法,你可以用协同过滤来挖相似用户,也可以用社交图去找潜在连接。先用 MapReduce 做特征,像用户打标签、点赞这些行为,完再交给 Spark 模型训练,实时推荐就更快了。
整个流程可以这么搭:HDFS
里放原始数据,用 MapReduce 提取用户特征,再把结果交给 Spark Streaming
做在线推荐。响应也快,推荐也精准。
调优的话,Container 配置和队列策略要搞清楚。别一股脑全塞一个队列,多开几个分流也挺有用。还可以配合 Hive
、Pig
做数据,灵活性强。
监控方面,Ambari 和 Ganglia 还挺实用,出了问题能第一时间定位。任务失败了,YARN 会自动重试,不太容易崩。
如果你正在搭建类似的社交服务,想快速上线推荐系统,不妨试试用 YARN 把整个数据链条撑起来,稳定还省心。