电商平台实战经验:电商中的Hadoop生态系统应用

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文来自中生代技术群的分享,本文作者郑应钦是非凡网高级架构师。我们都知道Hadoop是一个能够对大量数据进行分布式处理的软件框架。具有可靠、高效、可伸缩的特点。而如何将Hadoop生态系统应用到电商中呢?本文就为大家分享。

技术交流和面试其实有些共通性,比如经常会有类似问题: 如何做到高可用的? 访问峰值达到什么量级? 系统如何撑住的? 高并发下数据一致性如何保证? 如何进行性能优化? 使用了什么新技术? 等等。


实际上如果大家对高可用、高并发、高性能的系统设计有兴趣,从这方面有很多部分可以谈:从硬件到软件、从程序到SQL、 从分布式缓存到CDN,从中间件优化到JVM调优,直到最后我们发现,高可用、高并发、高性能依靠的不是某个硬件、某种技术、某种DB,而需要依靠好的架构,依靠可以落地实施的架构。


好架构有很多,从国外谷歌、亚马逊到国内的BAT,都有很多先进架构图。借用一句令人印象比较深的话: 我们从不缺架构图。架构图是形,而怎么落地就是它的神了;就如军用材料,技术大家都懂,工艺才是关键。对于搞技术的人来说,能实施落地才是关键。


我们的分享分为以下几个方面:

  1. Hadoop生态圈
  2. 广告和联盟系统
  3. 爬虫比价系统
  4. 延保系统
  5. 金融风控系统
  6. 典型应用模式

做技术这么多年,有个感受,就是针对现实业务的抽象是道,具体结合技术的应用就是术。比如电商、生产、销售、财务、营销、物流这些业务的抽象,到一定程度上,都是不变的,对道的理解不够,大方向就有偏差。落地应用,术用的不好,系统实现的就烂。

今天的交流,还到不了道的层次,主要是术的应用。我在以前在通讯行业干过多年,因为对Hadoop有些应用,因此借以也得到了一个转行互联网的机会。下面我就对我自身在苏宁易购的Hadoop应用理解,抛砖引玉,献丑一把。


这个图很好的列举了Hadoop生态圈系统,在互联网界也是大行其道,主要是沾了个“大数据”的边,变得很:”热”。大数据忽悠不懂的老板挺好使,其实到具体上手应用也挺容易,但易懂难深。
                                 

下面从我经手的一些相关应用说说,广告系统和联盟系统,是做平台电商创收的利器。




C店商家在电商平台上通过广告系统投放,通过联盟系统吸引流量。我加入广告部门时,先接手联盟系统,系统还比较原始,就是普通的信息系统,前台页面,SSH框架,后台DB2数据库。流量一大,系统就会宕机,优化就是砍各种功能,连点击日志都不记录了,为啥?因为量大,关系型数据库撑不住。


优化重构势在必行,概括的说法,就是做了一些系统级别的垂直拆分,引入了一些技术解决痛点。

分了面向广告主的系统,面向运营的系统,面向商家的系统,任务系统,点击系统。对于联盟系统而言,虽然是CPS计费,没有详细的点击日志,就没法做深入的应用,比如反作弊啊,效果分析啊等等。于是Flume+HDFS+Hive+HBase都上阵了。


在2014年系统的日PV达到 2千万左右,大促4千万左右。系统也平稳度过双11,但这在之前是没法平稳的。

有的同学肯定会问,为啥用了HDFS/Hive,还要用HBase呢?因为Hive利于统计,而HBase利于查询,我们系统的场景都需要,而两者之间打通的成本也比较高,于是用了双写的方案。

对于极端要求性能的场景,功能又比较单一的引流点击系统,用了Nginx+Lua的架构,抛开了J2EE的那套,效果还不错。

广告系统主要引进了STORM,使实时计费下线广告变得容易,以前放REDIS,没那么实时。主要也是实时+离线结合,离线的离不开Hadoop。


现在一般使用HDFS的时候都会选择用Hive,毕竟写MR需要点功夫,除了个别需要的场合,一般使用Hive搞定,比较SQL人人都会。


以前总结过一些使用要点,各位随意看看。另外就是注意数据倾斜的问题,相同的目睹,不同的Hive SQL写出来,效率差别大了。比如善用子查询,cluster by一些小技巧,这里就不展开了。

爬虫比价系统,是苏宁情报部门的拳头产品,代号“棱镜”,在2015年双11大出风头。为啥?SN跟JD拼价格,你敢低价,我马上比你更低价,iphone贴钱卖。

这个及时获取对方的商品价格的工作,就是爬虫比价系统干的事。在电商里面,除了淘宝天猫的前端技术比较牛逼,比较难爬外,其它电商基本是一爬一个准。


这个比价项目团队做了一年多,没出啥成绩,因为难点很多,都要时间攻关。我就去帮忙参谋解决了存储问题,也就是使用HBase。

大家知道,爬虫的数据量很大,以前系统用MySql,装的下也性能低。但他们这个场景挺适合用KV存储,结合数据库和搜索引擎技术,能解决不少问题。


  1. 相同对象不同维度的属性同属一张表,方便数据统计,单表Scan即可满足统计输入的需求
  2. 海量数据表,进行预分区,Rowkey在Region上均匀分布
  3. 小量数据表,Rowkey按数据使用维度进行组织,方便查询
  4. 多列簇会导致HBase性能下降,故列簇数量不超过3个
  5. 封装HBase操作,将HBase原生接口封装为简单的对于Java实体Bean的操作接口
  6. 通过实体Bean上的注解,定义OHM关系,支持HBase 表管理操作,封装HBase 读写接口(put、delete、get、scan),基于对象进行表操作,能自适应选择get/scan
  7. 封装常用Filter,基于对象的属性名、属性值设置查询条件,支持自动生成Rowkey及自定义Rowkey
封装了一套基于HBase的ORM组件,方便开发。HBase使用挺简单,大家都知道,主要是设计好ROWKEY就行,另外对于二级索引的引入,那时也没有找到很好的办法,华为开源的二级索引跟公司的版本兼容也不行,通过双份数据另外解决。

延保系统是我调到金融中心搞过的一个系统,延保就是电商售卖商品时,搭着卖的保险产品,因为是展示在商品详情页,因此流量大。另外存储的数据量大,因为要对某个会员,知道他购买的订单商品里,哪些购买过保险,哪些没买保险,进行推销啥的。

分析业务,系统切分,图里表现的很清楚了。大电商平台里,只要涉及到主要流程的功能,牵扯面都很广,需要跟各个中心碰头沟通,最后确认功能实现在什么系统里。


一般高大上的架构师做到这步就OK了,研发出身的架构还顺带把技术方案设计了一把,但是会有难点,量大,性能要求高。

这个系统群里,对于“延保业务增值系统”,需要检索至少一年内的电器订单,且订单是按会员维度查询,量大且检索条件不复杂,综合考虑HBase和Solr的方案,选择HBase。

说白了,就是结合具体业务场景,给出合理方案,而且可行。能保持2-3年的远见就不错了,领导早换了几拨了,总得给后面人留点事做。再说过度设计也比较难实施,现在不都讲敏捷么。

金融的风控系统,是我走前带的最后的业务了。风控难做,坑太大。不仅仅是系统开发好,还得用好。好比是PPT,微软做的工具吧,但每个人写出来的差别大了。要用好,数据挖掘分析少不了,这块SN种种原因没弄好,我就不多说了。

工具吧,也就系统,原来是基于ESPER做的内存计算,有不少问题,内存都加到几十G了,还是个单点系统。


改呗,大数据少不了,至少得STORM啊,实时计算。

ESPER+STORM都平台产品化了,EPL是个好东西。

这平台产品也不是我们业务方开发的,大数据部门提供的,挺好用。我们接入后,把各种规则表达式改造进去就可以了,这个平台产品SN叫libra。

最后总结了一个普适模式,没开过荤的可以借用下,有了解应用的随便看看了。


本文来自中生代技术群的分享

本文分享嘉宾:郑应钦 ,非凡网高级架构师,teamleader
嘉宾介绍:
郑应钦,15年IT从业经验,2013年前主要在通讯行业奋战,后转向互联网,在苏宁易购工作过两年,现加入万达飞凡网。互联网行业主要在广告,金融方面,做过研发,带过团队,常在技术管理和系统架构之间切换角色。


中生代技术群,一群技术人的天地,每周3定期在线技术分享,覆盖各大城市,不怕起点,不惧权威,中生代创造未来!

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5月前
|
分布式计算 Hadoop 分布式数据库
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
171 2
|
1月前
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
43 3
|
1月前
|
分布式计算 Java Hadoop
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
40 2
|
2月前
|
分布式计算 Hadoop Devops
Hadoop集群配置https实战案例
本文提供了一个实战案例,详细介绍了如何在Hadoop集群中配置HTTPS,包括生成私钥和证书文件、配置keystore和truststore、修改hdfs-site.xml和ssl-client.xml文件,以及重启Hadoop集群的步骤,并提供了一些常见问题的故障排除方法。
79 3
Hadoop集群配置https实战案例
|
2月前
|
分布式计算 监控 Hadoop
监控Hadoop集群实战篇
介绍了监控Hadoop集群的方法,包括监控Linux服务器、Hadoop指标、使用Ganglia监控Hadoop集群、Hadoop日志记录、通过Hadoop的Web UI进行监控以及其他Hadoop组件的监控,并提供了相关监控工具和资源的推荐阅读链接。
80 2
|
3月前
|
存储 SQL 分布式计算
Hadoop生态系统概述:构建大数据处理与分析的基石
【8月更文挑战第25天】Hadoop生态系统为大数据处理和分析提供了强大的基础设施和工具集。通过不断扩展和优化其组件和功能,Hadoop将继续在大数据时代发挥重要作用。
|
3月前
|
存储 分布式计算 资源调度
Hadoop生态系统概览:从HDFS到Spark
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由多个组件构成,旨在提供高可靠性、高可扩展性和成本效益的数据处理解决方案。本文将介绍Hadoop的核心组件,包括HDFS、MapReduce、YARN,并探讨它们如何与现代大数据处理工具如Spark集成。
253 0
|
4月前
|
分布式计算 Hadoop Linux
Hadoop检查本地文件系统:
【7月更文挑战第24天】
43 6
|
3月前
|
资源调度 分布式计算 监控
【揭秘Hadoop YARN背后的奥秘!】从零开始,带你深入了解YARN资源管理框架的核心架构与实战应用!
【8月更文挑战第24天】Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理器,为Hadoop集群上的应用提供统一的资源管理和调度框架。YARN通过ResourceManager、NodeManager和ApplicationMaster三大核心组件实现高效集群资源利用及多框架支持。本文剖析YARN架构及组件工作原理,并通过示例代码展示如何运行简单的MapReduce任务,帮助读者深入了解YARN机制及其在大数据处理中的应用价值。
87 0
|
4月前
|
分布式计算 Hadoop
下一篇
无影云桌面