集团高端网站建设公司,义乌对外寻找代加工,江苏建筑工程信息网站,php网站开发需要什么文章目录 框架的安装包数据仓库概念项目需求及架构设计项目需求分析项目框架技术选型系统数据流程设计框架版本选型集群资源规划设计 数据生成模块数据埋点主流埋点方式埋点数据上报时机 服务器和JDK准备搭建三台Linux虚拟机(VMWare)编写集群分发脚本xsyncSSH无密登录配置JDK准… 文章目录 框架的安装包数据仓库概念项目需求及架构设计项目需求分析项目框架技术选型系统数据流程设计框架版本选型集群资源规划设计 数据生成模块数据埋点主流埋点方式埋点数据上报时机 服务器和JDK准备搭建三台Linux虚拟机(VMWare)编写集群分发脚本xsyncSSH无密登录配置JDK准备模拟数据集群日志生成脚本 框架的安装包
链接https://pan.baidu.com/s/18-WmBBgoTwOyucs-0Rmfew?pwd4wf9 提取码4wf9
数据仓库概念
数据仓库 Data Warehouse 是为企业制定决策提供数据支持的。可以帮助企业改进业务流程、提高产品质量等。
数据仓库的输入数据通常包括业务数据、用户行为数据和爬虫数据等 业务数据就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中需要和网站后台数据库进行增删改查交互产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中。 用户行为数据用户在使用产品过程中通过埋点收集与客户端产品交互过程中产生的数据并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。 爬虫数据通常事通过技术手段获取其他公司网站的数据。
项目需求及架构设计
项目需求分析 项目框架
技术选型
技术选型主要考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算
数据采集传输:FlumeKafkaSqoopLogstashDataX数据存储:MySQLHDFSHBaseRedisMongoDB数据计算:HiveTezSpark, Flink Storm数据查询:PrestoKylinImpalaDruidClickHouseDoris数据可视化:EchartsSupersetQuickBIDataV任务调度:AzkabanOozieDolphinSchedulerAirflow集群监控:ZabbixPrometheus元数据管理:Atlas权限管理:RangerSentry
系统数据流程设计 框架版本选型
1)如何选择Apache/CDH/HDP版本?
(l)Apache:运维麻烦组件间兼容性需要自己调研。(一般大厂使用技术实力雄厚有专业的运维人员)(建议使用)
(2)CDH:国内使用最多的版本但CM不开源今年开始收费一个节点1万美金/年。
(3) HDP:开源可以进行二次开发但是没有CDH稳定国内使用较少
2)云服务选择
(1)阿里云的EMR、MaxCompute、DataWorks
(2)亚马逊云EMR
(3)腾讯云EMR
(4)华为云EMR
Apache框架版本
集群资源规划设计
通常会搭建一套生产集群和一套测试集群。生产集群运行生产任务测试集群用于上线前代码编写和测试。
生产集群
消耗内存的分开数据传输数据比较紧密的放在一起Kafka 、Zookeeper客户端尽量放在一到两台服务器上方便外部访问有依赖关系的尽量放到同一台服务器例如Hive和Azkaban Executor 测试集群服务器规划
服务名称子服务hadoop102hadoop103hadoop104HDFSNameNode√HDFSDataNode√√√HDFSSecondaryNameNode√YarnNodeManager√√√YarnResourcemanager√ZookeeperZookeeper Server√√√Flume采集日志Flume√√KafkaKafka√√√Flume消费KafkaFlume√HiveHive√MySQLMySQL√SqoopSqoop√PrestoCoordinator√PrestoWorker√√AzkabanAzkabanWebServer√AzkabanAzkabanExecutorServer√Spark√Kylin√HBaseHMaster√HBaseHRegionServer√√√Superset√Atlas√SolrJar√服务数总计1988
数据生成模块
数据埋点
主流埋点方式
目前主流的埋点方式有代码埋点前端/后端、可视化埋点、全埋点三种。
代码埋点是通过调用埋点SDK函数在需要埋点的业务逻辑功能位置调用接口上报埋点数据。例如我们对页面中的某个按钮埋点后当这个按钮被点击时可以在这个按钮对应的 OnClick 函数里面调用SDK提供的数据发送接口来发送数据。
可视化埋点只需要研发人员集成采集 SDK不需要写埋点代码业务人员就可以通过访问分析平台的“圈选”功能来“圈”出需要对用户行为进行捕捉的控件并对该事件进行命名。圈选完毕后这些配置会同步到各个用户的终端上由采集 SDK 按照圈选的配置自动进行用户行为数据的采集和发送。
全埋点是通过在产品中嵌入SDK前端自动采集页面上的全部用户行为事件上报埋点数据相当于做了一个统一的埋点。然后再通过界面配置哪些数据需要在系统里面进行分析。
埋点数据上报时机
埋点数据上报时机包括两种方式。
方式一在离开该页面时上传在这个页面产生的所有数据页面、事件、曝光、错误等。优点批处理减少了服务器接收数据压力。缺点不是特别及时。
方式二每个事件、动作、错误等产生后立即发送。优点响应及时。缺点对服务器接收数据压力比较大。
服务器和JDK准备
搭建三台Linux虚拟机(VMWare)
搭建教程
编写集群分发脚本xsync
1xsync集群分发脚本 1需求循环复制文件到所有节点的相同目录下 2需求分析
①rsync命令原始拷贝 rsync -av /opt/module roothadoop103:/opt/
②期望脚本 xsync要同步的文件名称
③说明在/home/atguigu/bin这个目录下存放的脚本yudan用户可以在系统任何地方直接执行。 3脚本实现
①在用的家目录/home/yudan下创建bin文件夹
[yudanhadoop102 ~]$ mkdir bin②在/home/yudan/bin目录下创建xsync文件以便全局调用
[yudanhadoop102 ~]$ cd /home/yudan/bin
[yudanhadoop102 ~]$ vim xsync在该文件中编写如下代码
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho $host #3. 遍历所有目录挨个发送for file in $do#4 判断文件是否存在if [ -e $file ]then#5. 获取父目录pdir$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname$(basename $file)ssh $host mkdir -p $pdirrsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done③修改脚本xsync具有执行权限 [yudanhadoop102 bin]$ chmod x xsync ④测试脚本 [yudanhadoop102 bin]$ xsync xsync
SSH无密登录配置
1hadoop102上生成公钥和私钥
[yudanhadoop102 .ssh]$ ssh-keygen -t rsa然后敲三个回车就会生成两个文件id_rsa私钥、id_rsa.pub公钥 2将hadoop102公钥拷贝到要免密登录的目标机器上
[yudanhadoop102 .ssh]$ ssh-copy-id hadoop102
[yudanhadoop102 .ssh]$ ssh-copy-id hadoop103
[yudanhadoop102 .ssh]$ ssh-copy-id hadoop1043hadoop103上生成公钥和私钥
[yudanhadoop103 .ssh]$ ssh-keygen -t rsa然后敲三个回车就会生成两个文件id_rsa私钥、id_rsa.pub公钥 4将hadoop103公钥拷贝到要免密登录的目标机器上
[yudanhadoop103 .ssh]$ ssh-copy-id hadoop102
[yudanhadoop103 .ssh]$ ssh-copy-id hadoop103
[yudanhadoop103 .ssh]$ ssh-copy-id hadoop104JDK准备
1卸载现有JDK3台节点
[yudanhadoop102 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps[yudanhadoop103 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps[yudanhadoop104 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps1rpm -qa表示查询所有已经安装的软件包 2grep -i表示过滤时不区分大小写 3xargs -n1表示一次获取上次执行结果的一个值 4rpm -e --nodeps表示卸载软件
2解压JDK到/opt/module目录下
[yudanhadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/3配置JDK环境变量 1新建/etc/profile.d/my_env.sh文件
[yudanhadoop102 module]# sudo vim /etc/profile.d/my_env.sh添加如下内容然后保存:wq退出
#JAVA_HOME
export JAVA_HOME/opt/module/jdk1.8.0_212
export PATH$PATH:$JAVA_HOME/bin2让环境变量生效
[yudanhadoop102 software]$ source /etc/profile.d/my_env.sh4测试JDK是否安装成功
[yudanhadoop102 module]# java -version如果能看到以下结果、则Java正常安装 java version “1.8.0_212” 5分发JDK
[yudanhadoop102 module]$ xsync /opt/module/jdk1.8.0_212/6分发环境变量配置文件
[yudanhadoop102 module]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh7分别在hadoop103、hadoop104上执行source
[yudanhadoop103 module]$ source /etc/profile.d/my_env.sh
[yudanhadoop104 module]$ source /etc/profile.d/my_env.sh模拟数据
1将application.yml、gmall2020-mock-log-2021-01-22.jar、path.json、logback.xml上传到hadoop102的/opt/module/applog目录下
1创建applog路径
[yudanhadoop102 module]$ mkdir /opt/module/applog2上传文件application.yml到/opt/module/applog目录
2生成日志 1进入到/opt/module/applog路径执行以下命令
[yudanhadoop102 applog]$ java -jar gmall2020-mock-log-2021-01-22.jar2在/opt/module/applog/log目录下查看生成日志
[yudanhadoop102 log]$ ll集群日志生成脚本
在hadoop102的/home/atguigu目录下创建bin目录这样脚本可以在服务器的任何目录执行。
[yudanhadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/yudan/bin1在/home/atguigu/bin目录下创建脚本lg.sh
[yudanhadoop102 bin]$ vim lg.sh2在脚本中编写如下内容
#!/bin/bash
for i in hadoop102 hadoop103; doecho $i ssh $i cd /opt/module/applog/; java -jar gmall2020-mock-log-2021-01-22.jar /dev/null 21
done 注 ①/opt/module/applog/为jar包及配置文件所在路径 ②/dev/null代表Linux的空设备文件所有往这个文件里面写入的内容都会丢失俗称“黑洞”。 标准输入0从键盘获得输入 /proc/self/fd/0 标准输出1输出到屏幕即控制台 /proc/self/fd/1 错误输出2输出到屏幕即控制台 /proc/self/fd/2
3修改脚本执行权限
[yudanhadoop102 bin]$ chmod ux lg.sh4将jar包及配置文件上传至hadoop103的/opt/module/applog/路径
5启动脚本
[yudanhadoop102 module]$ lg.sh 6分别在hadoop102、hadoop103的/opt/module/applog/log目录上查看生成的数据