当前位置: 首页>编程笔记>正文

项目需求及架构设计

项目需求及架构设计

第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

https://www.nshth.com/bcbj/894.html
>

相关文章:

  • 企业架构设计
  • 架构设计工具
  • 前端怎么去架构一个项目
  • vue大型项目架构设计
  • 为什么要做架构设计
  • 软件项目需求
  • 重构项目的架构设计
  • 如何架构一个vue项目
  • pdf翻譯網站,1 Trillion Dollar Refund – How To Spoof PDF Signatures——欺騙PDF簽名
  • 如何創建一個抽象類,創建具體的產品,并繼承產品抽象類
  • 主從庫理論知識-主從同步如何實現?
  • Tomcat環境變量配置,Mybatis的配置文件參數詳解
  • I Am You,POJ 3130 How I Mathematician Wonder What You Are! 半平面交
  • 要學vue需要學什么基礎知識,第一章 Vue基礎入門
  • win7下安裝win10,win10下安裝Ubuntu18.10雙系統
  • vmplayer怎么使用烏邦圖,烏邦圖環境安裝
  • 計算機專業要不要考研——寫的很棒
  • redisson看門狗原理,記錄一次redis漏洞攻擊
  • 任意波形發生器,基于單片機信號波形發生器系統設計-畢設課設
  • 嵌入式驅動,嵌入式Linux驅動大全問世,十年磨一劍,視頻!服務!新老客戶都有大折扣!
  • socket連接器v2下載,Netty(一)基礎socketchannel,Buffer,selector黏包 半包解決 實戰
  • 大一c語言程序設計筆記,吉林大學2013級大一下學期程序設計作業:同學通訊錄系統
  • 暑期小學生計算機培訓班,青島小學生學習編程暑假
  • 熊貓毛小喵喵去哪里了,小西貝、何小喵看熊貓之觀察者設計模式
  • 如何用c語言比較兩個數的大小,如何用C語言求兩個數的較大值
  • 輾轉相除法求最小公倍數的方法,更相減損術--最大公約數
  • 輾轉相除法求最小公倍數的方法,如何求出兩個整數的最大公約數
  • 李新義的書畫藝術,中國現代書畫家——譚奇中、李義象、高俊鵬等
  • 海底撈張勇名言,致張勇先生一封信:海底撈的“七宗罪”!
  • WPF學習(12)動畫
  • ui自動化測試工具,移動端UI自動化之appium的使用(二)
  • 爬蟲網站,Search For Free —— 新聞爬蟲及爬取結果的查詢網站
  • tenda騰達無線設置,騰達F6路由器無線中繼功能設置
  • 斐波那契數列、小青蛙跳臺階
  • OJ每日一練——小青蛙上臺階
  • 小青蛙貝葉斯
  • 小青蛙走臺階問題
  • MySQL數據庫下載,NAVICAT FOR MYSQL存儲過程