温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
Hadoop
智慧
社区
大数
仓库
系统
设计
开发
胡必波
2023.4电脑编程技巧与维护1概述智慧社区充分利用物联网、云计算、移动互联网等新一代信息技术,通过数字化信息技术将管理、服务提供者与每个社区的住户紧密地连接在一起,使服务提供者、社区管理者与居民之间可以实时地进行各种形式的信息交互,营造一个丰富多彩的虚拟社区,为居民提供一个安全、舒适、便利的生活环境,拉近与物业管理者之间的距离,快速传递物业消息,更好地了解、响应、跟进、满足居民的各种意见和物业管理需求,提高住户对物业管理的评价和认可。智慧社区主要由智慧物业管理系统、慧小区公共服务系统、社区信息发布系统、人脸识别系统、楼宇可视云对讲系统等子系统组成。智慧社区的一大特点就是利用大数据进行社区治理,通过对信息进行深入分析,可以对某些情况的发生进行预计、预判。例如,通过对用电数据的分析,预测独居老人的状况;通过对门岗进出人员的流量数据分析,规划安保资金的投入。有了“数据池”之后,要利用它来支撑社区精准治理,充分运用相关系统和信息平台,建立相应的场景并分析应用模型,动态监测、研判、分析社区实时状况,而不是一味追求设施、设备上的高端豪华、高额投入,却没有对社区治理能力进行质的提升。Hadoop是一个由Apache软件基金会所开发的分布式系统基础架构,主要解决海量数据的存储、分析和计算问题,具有高可靠性、高扩展性、高效性、高容错性。Hadoop的 框 架 核 心 设 计 是Hadoop分 布 式 文 件 系 统(HDFS)、MapReduce和另一种资源协调者(YARN)。HDFS为海量的数据提供了存储;而MapReduce为海量的数据提供了计算;YARN只负责资源的调度。针对传统社区选择比较迫切、影响大、可行性高的业务项目,通过对抓取的海量数据进行深入分析,实现对社区状况充分预判下的“超前治理”。2大数据仓库分层架构智慧社区大数据仓库分层架构如图1所示,各系统的元数据通过数据抽取转换和加载(ETL)同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成数据仓库(DW),DW包含DWD和DWS,DM是针对某个业务领域建立模型,具体用户(决策层)查看DM生成的报表。复杂的任务可以被分解成多层,每一层只处理相应的任务,减少重复开发,提高计算结果的复用性。通过分层隔离原始数据,使真实数据与统计数据隔离开,ODS之后层级的数据处理,无论出现数据的异常还是数据的敏感,都可以重新从ODS再计算。数 据 源 是 数 据 库 的 数 据 来 源,可 以 为MySQL、SQLServer、Oracle等,一般存在于现有的业务系统中;基金项目:Hadoop生态圈课程教研室(项目编号:ZL20221008)。基于 Hadoop 的智慧社区大数仓库系统设计与开发胡必波,左文涛,刘钟凌,王传传,马明辉(广州工商学院工学院,广州510850)摘要:传统社区管理主要通过人工信息登记打电话、登门、拜访等管理方式,不仅效率不高,还重复劳动,更无法满足超大社区的治理需求。Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式计算架构。针对智慧社区后端数据分析仍需加强的问题,基于 Hadoop 设计了一款智慧社区大数据仓库系统,构建业务数据采集平台,数据仓库维度建模。为智慧社区运营驾驶舱(车辆进出、门禁刷卡、社交电商等)提供数据支持,提高智慧社区的数据处理能力。关键词:Hadoop 平台;智慧社区;大数据仓库;大数据仓库分层架构图1智慧社区大数据仓库的分层架构数据应用BI分析消息推送千人千面用户画像反欺诈数据接口数据集市聚合数据多维数据业务模型DWS层数据仓库DWD层ODS层数据采集与ETL异构数据源网络数据ERP数据仓储数据业务数据财务数据日志数据终端数据100DOI:10.16184/prg.2023.04.0492023.4电脑编程技巧与维护日志文件的数据来源,可以为启动日志、事件埋点日志等,通常落盘到Nginx服务器的本地磁盘。ETL处理实现将数据从来源迁移到目标,主要包括数据抽取、数据转换、数据加载等。ODS层作为数据库到数据仓库的一种过渡,将数据源中的数据,经过ETL之后装入ODS层,ODS的数据结构一般与数据来源保持一致,便于减少ETL的工作复杂性。DWD层的表结构和粒度与原始表保持一致,不过需要对ODS层数据进行清洗、维度退化、脱敏等,最终得到的是干净的、完整的、一致的数据。DWD层一般采用星型模型构建维度模型。DWS层是基于DWD层上的明细数据,按天轻度汇总成某个主题域的服务数据,一般是宽表。DWS层统计各主题对象当天的行为及一些业务明细数据,服务于DM层的某一个主题域宽表。例如,每日业主行为、每日车辆行为。应用型数据库服务(ADS)层以DW为基础,为各 种统计报表提供汇总数据,将分析汇总数据同步到关系型数据库服务(RDS)数据库。RDS用于支撑日常的业务活动。DM层基于DW上,整合汇总成分析某一个主题域的服务数据,一般是宽表,用于提供后续的业务查询、联机分析处理(OLAP)分析、数据分发等,每个应用都有属于自己的DM。3架构设计与技术选型系 统 数 据 采 集 选 用Flume、Logstash、Filebeat、Sqoop、Canal、DataX、DBus等;数据存储与交换选用Kafka、MySQL、HDFS;数 据 计 算 选 用MapReduce、Hive、Impala、Spark、Iflink、Wormhole等;数据查询选用Presto、Druid、Impala、Kylin、ClickHouse等;数据可视化采用ECharts、Davinci、DataV、Superset等;作业调度选用Azkaban、Oozie、Dolphin Scheduler;基础设施采用Apache、Ambari、CM等。使用软件版本Hadoop 2.9.1、Zookeeper 3.4.6、Hive 2.3.7、Sqoop 1.4.6、JDK 1.8、Azkaban 3.8、Davinci、MySQL 5等。大数据仓库数据流程设计如图2所示。4智慧社区大数据仓库实施4.1搭建大数据仓库 ODS 层ODS层保持数据原貌不做任何修改,可压缩数据,并通过创建分区表,防止后续的全表扫描。除了自己用的临时表可以创建内部表,其他大部分场景需要创建外部表。数据同步策略的类型包括全量表、增量表、新增及变化表。以车辆进出表为例,创建外部表代码如下。drop table if exists o_sca_cars_log_d;create external table o_sca_cars_log_d(id string COMMENT 车辆进出记录ID,opTime string COMMENT 创建时间,ctype string COMMENT 车辆进出类型,carCode string COMMENT 车牌号,cId string COMMENT 小区id)COMMENT车辆进出表PARTITIONED BY(dt string)row format delim-ited fields terminated by tSTORED AS textfilelocation/warehouse/sca/ods/o_sca_cars_log_d/;4.2搭建大数仓库 DWD 层DWD层对用户行为数据解析;对核心数据进行空值过滤;对业务数据采集维度模型重新建模,即维度退化。DWD层构建维度模型,如图3所示。车辆进出事实表,建表代码如下。drop table if exists d_cars_log_d;create external table d_cars_log_d(id string COMMENT 车辆进出记录ID,ownerId string COMMENT 业主ID,opTime string COMMENT 创建时间,cId string COMMENT 小区ID,图2大数据仓库数据流程设计图3DWD层构建维度模型DBlogsSqoopDataXFlumeODSDWDDWSADSSqoopDataXServingDBMapReduce/HiveSQL/Impala/SparkSQLAzkaban/OozieEntrance_guard_log(门禁事实表)Cars_log(车辆进出事实表)housedistrictroomcommunity(地区维度表)(车辆维度表)date(日期维度表)ower(业主维度表)1012023.4电脑编程技巧与维护carCode string COMMENT车牌号,ctype string COMMENT 车辆进出类型,)COMMENT车辆进出事实表PARTITIONED BY(dt string)stored as parquetlocation/warehouse/sca/dwd/d_cars_log_d/;4.3搭建大数据仓库 DWS 层以每日车辆出行行为为例,建表代码如下:drop table if exists s_car_behavior_d;create external table s_car_behavior_d(carCode string COMMENT 车牌号,carColor string COMMENT 车辆颜色,type string COMMENT 车辆类型,ownerId string COMMENT 业主ID,ownerSex string COMMENT 业主性别,ownerAge string COMMENT 业主年龄,ownerHomeplace string COMMENT 业主籍贯,ownerWorkplace string COMMENT 业主工作地,community_id string COMMENT 小区ID,communityName string COMMENT 小区名字,city_id string COMMENT 城市ID,district_id string COMMENT 区县ID,district_name string COMMENT 区划名称,car_in_cnt bigint COMMENT 车辆驶入次数,car_out_cnt bigint COMMENT 车辆驶出次数)COMMENT 每日车辆出行行为 PARTITIONED BY(dt string)stored as parquet4.4搭建大数据仓库 ADS 层小区出行数据统计,需求分析如下。统计每日刷卡次数、输入密码次数、人脸识别次数及远程次数。小区出行数据统计,建表代码如下。drop table if exists ads_entrance_guard_d;create external table ads_entrance_guard_d(dt string comment 统计日期entrance_card_cnt bigint COMMENT 每日刷卡次数entrance_pw_cnt bigint COMMENT 每日输入密码次数entrance_face_cnt bigint COMMENT 每日人脸识别次数entrance_remote_cnt bigint COMMENT 每日远程次数)comment 每日门禁总计表row format delimited fields terminated by tlocation/warehouse/sca/ads/ads_en-trance_guard_d;车辆出行数据统计,需求分析如下。统计每日车辆驶入次数和驶出次数。建表代码如下。drop table if exists ads_car_pass_d;create external table ads_car_pass_d(dt string comment 统计日期,car_in_cnt bigint COMMENT 每日车辆驶入次数,car_out_cnt bigint COMMENT 每日车辆驶出次数)comment 每日车