APP下载

基于农经云数据库的食用菌电子商务订单资源整合系统设计*

2020-02-12

中国食用菌 2020年1期
关键词:农经食用菌订单

饶 静

(重庆青年职业技术学院,重庆 400712)

农经云最早是贵州省农村综合经济信息中心建立的大数据服务平台,是贵州实施“云上贵州”战略的重要组成部分[1]。农经云的主要服务对象是“农业、农村、农民”的“三农”经济发展,用人工智能、大数据和互联网为农村农业服务。农经云数据库包括了农村企业、农业产品、市场销售,农业气象水文、农村劳动力等多领域多产业的大数据信息,能够提供海量农村大数据查询、综合化农村金融服务、乡村旅游大数据、农业园区导航、新技术新产品等农技服务,还打造了商业化的农村电子商务平台和便民服务平台。包含了100 多万涉农企业用户、电商和农村消费者信息;20 多万条农村服务社、市场价格、气象和产业连接等采集数据,并实现了实时的数据监测;更有8 000 多万条农产品、市场行情和气象水文历史数据,共同构成了农经云的大数据库[2]。

贵州是仅次于云南的第二大野生食用菌省份。农经云的建立,也为贵州打开了一个巨大的市场空间,但同时,市场竞争也十分激烈,借助互联网发展的大潮,近年来各种食用菌电商平台也不断涌现,除了淘宝、京东等大型综合性电商平台外,还有专业的中国食用菌电商平台、易菇商城等[3]。各平台由于数据类型和交易方式的差别,订单内容和形式各有不同,平台之间的订单信息并不能共享。食用菌卖家需要逐一在这些平台上查看、核对订单内容、选择物流方式和交易支付渠道,这对食用菌卖家来说无形中增加了很大的工作量,不同平台之间的信息不能互通,还造成了订单统计汇总工作的不便,多平台多订单的结算和数据统计十分困难[4]。因此,有必要设计一个食用菌电子商务多订单的整合系统,将不同平台上的订单资源进行整合,借助农经云的大数据平台,简化多平台多订单业务的操作过程,减少订单管理步骤,提高订单的管理效率。

1 整合订单系统总体设计

整合订单系统的总体架构如图1 所示。

如图1 所示,根据食用菌电商平台的订单整合业务需求及农村电商特点[5],对平台采用分层模块化体系建设,整合订单系统采用松耦合的架构设计,各模块之间通过元数据的共享和交互,来驱动数据的存储与计算。实现大数据平台海量、多源、异构数据的采集、离线处理和实时计算等功能。系统总体架构由基础数据源层、数据采集层、数据存储层、计算层和应用层组成。各层间均采用模块化设计,通过数据接口来实现各模块和外部系统的集成。

2 整合订单系统搭建

订单系统采用全分布式模式搭建,由4 个节点构成即1 台作为Master 主节点,3 台作为Slave 从节点,负责数据存储;各节点软件环境配置如表1 所示。

由表1 可知,食用菌电商平台整合订单系统采用开源的Hadoop 分布式计算框架作为基础设施,Zookeeper 作为资源协调管理器,HDFS 作为分布式文件系统,HBase 作为分布式数据库,Flume、Kafka、Sqoop 作为数据采集工具,并安装部署Spark 集群。

食用菌电商平台整合订单系统基于Hadoop 平台架构完成分布式模式搭建,主要步骤如下。

表1 食用菌电商平台整合订单系统集群软件环境配置Tab.1 Configuration of software environment of order system cluster of edible fungi e-commerce platform integration

2.1 JDK 安装

Hadoop 和大多数Hadoop 生态都需要通过java来运行,因此在配置环境前要安装java,并配置环境变量。

首先下载JDK。

$sudo apt-get install openjdk-7-jre openjdk-7-jdk

下载完成后配置环境变量,在配置文件~/.bashrc中追加。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdkamd64

2.2 Hadoop 安装

下载好Hadoop 压缩包后,将其解压至/usr/local 中。

$ sudo tar -zxf ~/下载/hadoop-2.9.2.tar.gz -C /usr/local

2.3 建立节点间通信

配置对应节点名称和IP 地址,修改配置文件/etc/hosts;配置完成后,测试节点间能否互相通信,确保节点间已建立网络通信。

2.4 SSH 免密钥配置

各节点之间通过SSH 来进行通信,Master 节点需要向各节点分发命令。SSH 每次通信时都要输入密码验证,对集群来说很不方便,因此需要配置节点间的免密钥登陆。

首先在Master 节点生成公钥,在Master 节点的终端中执行。

$ cd ~/.ssh

$ cat ./id_rsa.pub >> ./authorized_keys

接着将公钥发送到各节点,以Slave1 为例。

$scp~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

输入密码后,会提示完成传输,然后在各从节点上,将ssh 公匙加入授权。

$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

其余节点依据Slave1 的方式进行配置,所有节点完后此配置后,在Master 节点上便可以无密码SSH 到各个Slave 节点。

2.5 相关文件配置

为了实现Hadoop 分布式模式,需要对以下文件进行相应的配置,具体配置过程略,仅给出各文件配置的说明。

slaves 文件: slaves 文件保存的是作为Datanode的主机名,每行一个。本系统中,让Master 节点只作为Namenode,因此在slaves 文件添加三行。slave1、slave2、slave3。

core-site.xml 文件:主要配置Namenode 节点的地址和Hadoop 临时文件的存储路径,在本系统中,临时文件存储于/usr/local/hadoop/tmp 文件夹中。

hdfs-site.xml 文件:主要设置HDFS 中文件备份的数量,实现数据安全,本系统配置为3,即每一个块在分布式集群中备份3 份。

mapred-site.xml 文件:主要配置MapReduce 任务调度框架,任务监听服务地址和端口。

yarn-site.xml:配置yarn 资源管理器所在的节点。

2.6 分布式节点部署

文件配置完成后,进行节点部署,将Master 节点上的/usr/local/hadoop 文件夹复制到各个节点上,以Slave1 节点为例。

$ scp ./hadoop.master.tar.gz Slave1:/home/hadoop

在slave 节点上,解压文件夹,并进行授权。

$ sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local

$ sudo chown -R hadoop /usr/local/hadoop

安装完成后,在Master 节点上执行Namenode格式化。

$ hdfs namenode -format

最后测试是否安装成功,启动Hadoop 集群。

$ start-all.sh

分别在Master 节点和Slave 节点执行jps 命令来查看各个节点中的进程,测试启动成功即可。

3 整合订单采集数据来源

农经云的订单大数据来源于多个电商平台,数据的格式和类型各不相同,因此整合后的订单系统需要支持异源、异构数据的采集。对特定的采集场景,应制定不同的采集方式。订单整合需要采集的数据主要来源分为3 个部分,业务数据、服务器中日志文件以及来自农经云大数据系统的第三方数据库;业务数据一般为结构化数据,如客户、订单数据等;日志文件中主要包含交易、支付、渠道等信息。

其中订单需要采集的数据主要包括订单的生成、订单审核、订单出库、订单发货、订单变更、订单取消、退换货等。而整合订单系统对订单的管理数据有:所有订单的待付款,待发货、已发货、已完成、已取消等状态,还有查询搜索的订单信息等。

从数据采集的类型上来说,订单数据采集系统分为2 个部分,实时数据采集和离线数据采集。

实时数据采集。农经云的数据库需要对连续的订单业务、客户服务进行实时数据分析,传统的数据采集方式已经无法满足订单业务的需要。因此,需要进行实时订单数据采集,提供自动化的订单数据关联和业务解析。主要方法是设置业务埋点,当订单整合系统产生新日志文件时,利用Flume 进行收集,然后通过Kafka 将上游的数据拦截,接着根据业务场景进行对应的处理(例如去重、去噪、中间计算等),最后写入到对应的数据存储介质中或者接入流式数据处理框架中,实现数据的实时分析。该过程是流式的处理方式,能满足每秒数百MB 的日志数据采集和传输需求。

离线数据采集。农经云大数据平台的订单离线数据采集,主要解决的是不同电商平台之间的历史订单数据导入导出业务,使数据变成整合订单模式。如订单数据采用T+1 的数据加工模式,获取到前一天的订单历史数据时,将各系统关系型数据库中的数据通过Sqoop 工具保存到大数据平台中的HBase、HDFS 中,为后续的批处理或者交互式订单查询提供数据基础。

4 整合订单数据采集模块设计

系统的订单数据主要来自多个电商平台的订单数据。订单数据采集主要分为实时数据采集和离线数据采集,其结构如图2 所示。

由图2 可知,采集数据类型主要包括订单日志数据、用户订单行为数据、订单业务数据和订单状态数据。实时数据采集采用Flume + Kafka 的模式,Flume 安装在每个有日志产生的服务器上,监控相应的文件目录,当产生新日志时,Flume 组件会自动捕获新文件,然后将文件输送到Kafka 指定的主题中,完成实时数据的采集,后续将数据输送到农经云的HBase 等No SQL 数据库上或者接入流式处理框架,实现数据的实时查询或处理。离线数据采集则是通过各系统的数据接口获取相关数据,对数据进行处理后存储到农经云的关系型数据库(如Oracle、SQL Server 数据库) 中,最后通过Sqoop 工具将其数据导入分布式文件系统当中。

实时数据采集所用的框架是Flume + Kafka,将产生的数据收集到Kafka 队列中,然后同步到HDFS中。实时数据采集流程图如图3 所示。

由图3 可知,Flume 是一个分布式的海量日志聚合系统,支持在系统中定制各类数据发送方。本系统中,Flume 负责监控整个文件目录或者某一个特定文件,产生新日志文件时,Flume 获取到日志文件的数据,将数据封装为event 对象。从scour 中获取的数据会先封装为event,然后发送到channel,sink 从channel 拿event 消费。在本系统中sink 对象是Kafka,因此数据上传到了Kafka 的topic 分区。最后数据同步到HBase 中,或者在框架后接入Storm 等流式实时处理技术。

数据的离线采集采用关系数据库导入/导出工具Sqoop,它可以直接从RDBMS(关系型数据库管理系统) 中读取模式信息,自动执行大部分数据传输过程,然后使用MapReduce 将数据导入Hadoop。本系统的离线数据主要通过Sqoop 将订单业务数据库中的数据导入到HDFS 或HBase 中。

5 结论

目前,贵州的农经云已建立了大量农产品交易和市场监控、农村电子商务等数十个应用服务系统,并完成了这些应用系统的云端迁移和数据整理工作。对于众多的食用菌电商来说,有一个整合的大数据平台,将分散的订单资源进行整合,实现订单数据的自动采集、分类、查询和统计,对电商平台来说意义重大。借助农经云的大数据管理平台对多电商多订单数据进行整合,也是企业适应复杂多变市场环境的正确选择。

猜你喜欢

农经食用菌订单
春节期间“订单蔬菜”走俏
订单农业打开广阔市场
浅谈基层农经管理的问题与对策
山西农经:运用电商新模式 推进农村新发展
食用菌的栽培技术(中)
食用菌的栽培技术(上)
试析对新形势下健全农经管理体系的调查与思考
食用菌的栽培技术(下)
浅析当前基层农经管理工作存在的主要问题及对策
“最确切”的幸福观感——我们的致富订单