项目需求及架构设计

news2024/11/17 1:44:00

第2章 项目需求及架构设计

2.1 项目需求分析

  1. 用户行为数据采集平台搭建
    用户行为数据会以文件的形式存储在服务器,这个阶段需要考虑:采集用户行为数据使用的工具,需要提供详细的设计需求
    如:flume,flume采用的 source、channel、sink以及flume代码的设计

  2. 业务数据采集平台搭建
    将mysql中的业务数据导入到hive数仓中使用什么工具
    如:sqoop的安装、配置、使用

  3. 数据仓库的维度建模
    数仓建模的分层:Ods原始数据层、dwd数据清洗层、dws以天为单位的轻度聚合层、dwt粗粒度聚合层、ads指标层

  4. 分析,设备、会员、商品、地区、活动等电商核心主题,统计的报表主题近100个
    对老板关系的指标进行汇总分析

  5. 采用即席查询工具,随时进行指标分析
    临时查询指标,可以快速查询出想要的结果情况

  6. 对集群性能进行监控,发生异常需要报警
    如:hadoop某一进程出现了宕机,需要即使的进行报警处理,通过邮件、短信或者钉钉的方式通知开发人员,便于及时解决集群的异常

  7. 元数据管理
    可以以图形的方式显示任务间的依赖关系,如果某一job的运行过程出现异常,可以通过血缘关系图查看受影响的job,从而挑选出优先级最高的job顺序解决
    在没有元数据管理的情况下,查询job间的影响关系。需要通过调度工具的脚本查看调度关系,手动进行查询。不便于数据的管理

  8. 数据质量监控
    时刻监控近期指标间的差异,如果近期指标差异超过指定数值则通过短信、邮件或钉钉进行报警,让监控人员快速响应处理
    如:两天内指标差异超过30%以上通过短信、邮件或钉钉进行报警

  9. 权限管理
    通过权限管理实现不同权限的用户可以看到不同的表、或者不同权限的用户可以看到某张表中不同的字段

2.2 项目框架

2.2.1 技术选型

在这里插入图片描述

  1. 技术选型要考虑的因素
    数据量大小: 根据数据量的大小决定使用hdfs存储或者使用mysql存储数据
    业务需求: 根据实时数据的计算或者离线数据的计算来选择flink、spark或者hive
    行内经验: 根据行业内大厂所使用的技术框架进行技术选型
    技术成熟度: 技术的成熟度决定是否使用该技术 如:是否有成熟版本、是否有大厂在生产环境下使用、通常情况下中小型公司都会等待大厂调查成熟后才会使用
    开发维护成本: 结合公司情况,选择云服务器和物理服务器。需要考虑的因素有场地、维护人员、维护设备等方面。
    总成本预算: 因为项目经理也需要向公司申请资金,或许申请的资金达不到预期金额

  2. 数据采集传输
    Flume: 日志文件的采集 如:将用户行为数据以json的形式存储在csv文件中,通过flume导入到hdfs中
    sqoop: 业务数据的传输 如:将mysql的业务数据导入到hive中
    kafka: 缓冲消峰的作用
    logstash: 与flume相同,只不过logstash是领英团队开发的与Es、Kibana为一套框架,理论来说elk框架之间的兼容性是最好的。而且ELK主要针对中小型公司或者数据量小的公司分析的指标不是很复杂DataX:

  3. 数据存储
    Mysql: 存储小量数据,一般会将ads的指标存入mysql中供BI人员展示。
    Hdfs: 存储大量数据
    Hbase: 很多情况下会与kylin组合使用,kylin会将数据存储到Hbase中
    Redis: 基于内存的数据库、存储实时数据
    MongoDB: 爬虫数据一般会存储于MongDB中

  4. 数据计算
    Hive: 数据走MR程序需要落盘所以速度较慢
    Tez: 完全在内存中进行计算,内存消耗强但是查询速度快
    Spark: 部分数据在内存中、部分数据在磁盘里。相对MR引擎会快
    Flink/ Stom: 主要用于实时数据的计算

  5. 数据的查询
    Presto/Kylin/Impala:通常情况离线查询会选择的框架
    Druid/ClickHouse/Doris:实时查询选择的框架

  6. 数据可视化
    Echarts(开源免费)、
    Superset(开源免费)、
    QuickBi(ali收费针对离线)、
    DataV(ali收费针对实时)、
    fineReport(付费与免费版本的区别在于并发访问仅支持2个,以及部分功能的水印)

  7. 任务调度
    Azkaban(中小型公司的选择、简单实用、上手快框架较轻)、
    Oozie(功能多框架重)
    DolphinScheduler(丰富的可视化页面)
    Airflow(python编写,懂python适合)

  8. 集群监控
    服务器组件宕机能够及时检测到
    Zabbix(离线)、Prometheus(实时)

  9. 元数据管理
    Atlas(中大公司使用):任务量少只有几十个任务,使用atlas的意义并不大。与手动查看任务的效率区别并不大、
    任务量多有成百上千的任务,atlas的意义便会很大、图形化界面通过肉眼查看血缘关系图找到受影响的job,从而挑选出优先级最高的job顺序解决

  10. 权限管理
    Ranger(主流): 通过权限管理实现不同权限的用户可以看到不同的表、或者不同权限的用户可以看到某张表中不同的字段

2.2.2 系统数据流程设计

在这里插入图片描述

  1. 项目需求: 无论做什么项目首先需要对项目需求进行了解
  2. 集群规模: 需要了解企业数据量的大小
  3. 服务器选型: 先了解企业购买服务器、没有的情况下建议物理机还是云服务器
  4. 框架的版本:
    可以选择免费的apache(运维麻烦、需要考虑组件兼容性问题)
    也可以选择CDH(CDH已经开始收费了1万美金/年,目前官网不再提供免费安装包。旧版本安装包依旧可以照常使用,但是不能确定的是一段时间后是否也会开启收费策略,在已经部署并且存在大量数据的前提下,突然收费会造成很多不必要的麻烦)

2.2.3 框架版本选型

在这里插入图片描述
具体版本号
在这里插入图片描述

2.2.4 服务器选型

在这里插入图片描述

  1. 服务器的选择
    服务器选择物理机还是云主机?
    1) 物理机:
    以128G内存,20核物理CPU,40线程,8THDD和2TSSD硬盘,戴尔品牌
    单台报价4W出头。一般物理机寿命5年左右。
    需要有专业的运维人员,平均一个月1万。电费也是不少的开销。
    2)云主机:
    云主机:以阿里云为例,差不多相同配置,每年5W。
    很多运维工作都由阿里云完成,运维相对较轻松
    3)企业选择
    金融有钱公司和阿里没有直接冲突的公司选择阿里云
    中小公司、为了融资上市,选择阿里云,拉到融资后买物理机。
    有长期打算,资金比较足,选择物理机。

2.2.5 集群规模

在这里插入图片描述

  1. 如何确认集群规模?
    (假设:每台服务器8T磁盘,128G内存)
    (1)每天日活跃用户100万,每人一天平均100条: 100万100条=1亿条
    (2)每条日志IK左右,每天1亿条:I00000000/1024/1024=约100G
    (3)半年内不扩容服务器来算:100G180天=约18T
    (4)保存3副本:18T
    3=5.4T
    (5)预留20%-30%Buf=54T/0.7-77T(6)算到这:约8T*10台服务器

2.2.6 集群资源规划设计

在企业中通常会搭建一套生产集群和一套测试集群。生产集群运行生产任务,测试集群用于上线前代码编写和测试。

1)生产集群
(1)消耗内存的分开
(2)数据传输数据比较紧密的放在一起(Kafka 、Zookeeper)
(3)客户端尽量放在一到两台服务器上,方便外部访问
(4)有依赖关系的尽量放到同一台服务器(例如:Hive和Azkaban Executor)

12345678910
nnnndndndndndndndndn
rmrmnmnmnmnmnmnm
nmnm
zkzkzk
kafkakafkakafka
FlumeFlumeflume
HbaseHbaseHbase
hivehive
mysqlmysql
sparkspark
AzkabanAzkabanESES

2)测试集群服务器规划

服务名称子服务服务器服务器服务器
hadoop102hadoop103hadoop104
HDFSNameNode
DataNode
SecondaryNameNode
YarnNodeManager
Resourcemanage
ZookeeperZookeeper Server
Flume(采集日志)Flume
KafkaKafka
Flume(消费Kafka)Flume
HiveHive
MySQLMySQL
SqoopSqoop
PrestoCoordinator
Worker
AzkabanAzkabanWebServer
AzkabanExecutorServer
Spark
Kylin
HBaseHMaster
HRegionServer
Superset
Atlas
SolrJar
服务数总计1988

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HDFS的Shell操作

该文章主要为完成实训任务及总结,详细实现过程及结果见【参考文章】 参考文章:https://howard2005.blog.csdn.net/article/details/127170478 文章目录一、 三种Shell命令方式二、FileSystem Shell文档三、常用Shell命令四、实例练习1、创建目录2、查看目…

这位00后经历人生重大变故后,选择了智能家居,选择了Aqara绿米

作者 | 布斯 编辑 | 小沐 出品 | 智哪儿 zhinaer.cn编者按:虽然概念由来已久,但智能家居如今依然属于新兴产业。而这样一个当今在全国范围遍地开花的新型商业存在,已经创造了许多的就业岗位与创业机会,也隐藏着许多让人回味的故事…

Profinet总线模拟输出模块

上电后,耦合器自动识别所有与之相连的 I/O 模块,并根据模块的类型、数据宽度和模块在节点中的位置创建内部本地过程映像。 如果添加、更改或移除 I/O 模块,会建立新的过程映像,过程数据地址会改变。在添加 I/O 模块时&#xff0c…

【MySQL】MySQL执行计划与SQL调优提高查询效率(优化篇)(实战篇)(MySQL专栏启动)

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

Pixel Difference Networks for Efficient Edge Detection论文笔记

文章目录一、背景知识二、Pixel Difference Convolution(PDC)1.CPDC2.APDC3.RPDC三、轻量化边缘检测网络A. Block_x_yB. CSAMC. CDCMD. 1*1卷积层E. 深度监督(deep supervision)F. 损失函数四、实验结果1. 消融实验2.网络可扩展性…

SpringAMQP简介及简单使用

一、SpringAMQP简介 SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: 自动声明…

Maven基础概念

仓库 仓库用于存储资源,包含各种jar包。 仓库分类: 本地仓库:自己电脑作为仓库,连接远程仓库获取资源。远程仓库:非本地的仓库,为本地仓库提供资源。中央仓库:由Maven团队维护,存…

【Servlet】4:详解请求对象 HttpServletRequest

目录 | 请求对象 HttpServletRequest接口 HttpServletRequest的基本概述 请求对象获取 URL & Method 请求对象获取 参数名 请求对象获取 参数值 参数值乱码问题 本文章属于后端全套笔记的第三部分 (更新中)【后端入门到入土!】Java…

CAN电压测试

CAN总线: 一般用在汽车,伺服驱动器,步进驱动器,舵机,分布式io等设备上。 有以太网转CAN和4G网转CAN。 当然得到数据后,可以往RS485等上面转。 只需要2根线: H和L线,终端再并联120…

Linux history 命令相关使用以及配置

Linux history 命令相关使用以及配置 Linux history 新手学习 shell 的时候都知道 history 命令能帮助我们查看之前运行的命令集合,通过这个能够帮我们回忆之前的命令,以及进行各种排错等等。 比如我们直接输入 history 进行查看: histor…

Flutter高仿微信-第20篇-支付-充值

Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图: 实现代码: /*** Author : wangning* Email : maoning20080809163.…

Android AIDL跨进程通信基础(多端情况)

简介 AIDL建议在来自不同的客户端访问你的服务并且需要处理多线程问题时你才必须使用AIDL,其他情况下你都可以选择其他方法,如使用 Messenger,也能跨进程通信。可见 AIDL 是处理多线程、多客户端并发访问的,而 Messenger 是单线程…

年末盘点时间——用Python绘制饼状图对商品库存进行分析

人生苦短,我用python 存货盘点最重要的是什么,盘点比例要达到, 比如说要达到80%,于是就拿着企业给导的进销存明细表, 于是就开始筛选大金额的存货作为选择的样本, 这样就够比例了。 可是实际盘点的时候…

手把手教你在ARM板上写一个驱动程序!

摘要:搞嵌入式有两个方向,一个是嵌入式软件开发(MCU方向),另一个是嵌入式软件开发(Linux方向)。其中MCU方向基本是裸机开发和RTOS开发。而Linux开发方向又分为驱动开发和应用开发。其中应用开发相比于驱动开发来说简单一些,因为搞…

初阶指针---从入门到入坟

今天我们来见识一下c语言里让万千少年少女从入门到入坟的一道大门槛——指针 目录 1.指针是什么? 2.指针和指针类型 3.野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 1.指针是什么? 指针理解的2个要点: 1. 指针是内存中一…

C语言:计算阶乘与计算从1加到100的代码对比:都要用到3个变量,不同之处在于表达式

计算1 到 100 之间所有整数之和 #include <stdio.h> int main() {int i1,total0;while(i<100)//不能在 while 后面加分号{totali;i;//循环内要有使循环趋近于假的操作}printf("%d\n",total);return 0; } 和下面对比&#xff0c;只不过是100用输入j来代替了 …

将windows的显示器作为linux的扩展屏

这里写自定义目录标题前言WinLinuxRequirementsBuild and install运行前言 测试的linux系统为ubuntu 18.04测试的windows系统为win10将windows的显示器作为linux的扩展屏&#xff0c;需要使用微软的Miracast技术。windows自带就不多说了&#xff0c;linux使用的是这个开源软件…

MATLAB绘图合集:填充二维等高线图contourf

本文主要介绍填充的二维等高线图和基本的用法例子 目录 说明 例子 绘制10个层级的等高线 显示具有标签的特定层级的等高线图 自定义等高线线宽 说明 contourf(Z) 创建一个包含矩阵 Z 的等值线的填充等高线图&#xff0c;其中 Z 包含 x-y 平面上的高度值。MATLAB会自动选择…

【第六部分 | JavaScript高级】3:正则表达式

目录 【第三章】正则表达式&#xff08;重点&#xff09; | 概述 | 创建正则表达式 | 测试某个字符串是否符合正则 | 正则符号 什么是正则符号&#xff1f; 1.1.边界符 ^ $ 1.2.连字符 - 2.1.字符类—方括号符 [] 2.2.字符类—方括号符内 范围符 - &#xff08;易错&a…

nacos服务注册源码过程阅读

准备部分 这是在真正调用注册实例的方法之前&#xff0c;需要使用到的对象的关系图。 源码跟踪 NacosServiceRegistryAutoConfiguration类 Configuration(proxyBeanMethods false) EnableConfigurationProperties ConditionalOnNacosDiscoveryEnabled ConditionalOnPropert…