avatar

目录
数据仓库-用户行为数据采集

参考:http://blog.sina.com.cn/s/blog_c30a9e680102z9mp.html

[toc]

数据仓库概念

屏幕快照 2019-11-21 下午4.17.30

项目需求

项目需求分析

image-20191121162348270

例如:

采集:Flume

仓库:Hive

导入:Sqoop

定时:Azkaban

项目框架

技术选型

image-20191121164305873

行为数据:file\日志 –> Flume, Kafka, Logtash

数据库(mysql, oracle, mongoDB):DataX, Sqoop

Kafka: 缓冲

mongoDB+python爬虫

Flink: 比较火

市场下滑框架:

Hbase:查询能力也很一般,替代为ES了。

Storm:

系统架构图设计

image-20191121171038281

presto: apache

impala: cdh

系统数据流程设计

image-20191121174728983

框架版本选型

产品 版本
Hadoop cdh15.16.1
Flume cdh15.16.1
Kafka
Kafka Manager
Hive cdh15.16.1
Sqoop cdh15.16.1
Mysql 5.7.28
Azkaban 2.5.0
Java 1.8
Zookeeper 3.4.14

注意事项:框架选型尽量不要选择最新的框架,选择最新框架半年前左右的稳定版。

集群资源规划设计

服务器1(hadoop101) 服务器2 服务器3
HDFS NameNode DataNode DataNode DataNode
Yarn NodeManager Resourcemanager NodeManager NodeManager
Zookeeper Zookeeper Zookeeper Zookeeper
Flume(采集日志) Flume Flume
Kafka Kafka Kafka Kafka
Flume(消费Kafka) Flume
Hive Hive
Mysql Mysql

耗内存的别放一起:NameNode, Resourcemanager

Flume:两台采集、一台消费。

Spark:基于内存运算,尽量也避开。

数据生成模块

埋点数据基本格式

。。。

事件日志数据

。。。

商品点击、商品详情、广告、评论、收藏、错误日志…

启动日志数据

。。。

数据库生成脚本

创建Maven工程

1)创建log-collector

2)创建一个包名:com.mxx.appclient

模拟app客户端,直接生成logFile了,忽略SpringBoot那些过程

i/o流,log第三方框架

3)在com.mxx.appclient包下创建一个类,AppMain。

4)在pom.xml文件中添加如下内容

xml
1
2


Bean

各种Bean

com.mxx.bean

主函数

image-20191122165806093

配置日志打印Logback

具体使用:

1)在resources文件夹下创建logback.xml文件。

2)在logback.xml文件中填写如下配置

xml
1
2


打包

package

现在需要搭建环境了,参考【环境搭建】

然后把jar包放到集群下

日志生成集群启动脚本

集群时间同步修改脚本

集群所有进程查看脚本

环境搭建

准备3台基本的虚拟机

【参考linux文档】

  • 先弄一个基本的centos6.8的虚拟机。

    CentOS-6.8-x86_64-bin-DVD1.iso

    • VMTools安装
    • 查看网络IP和网关
    • 配置网络ip地址
    • 关闭防火墙
    • 将普通用户加入sudo
    Code
    1
    2
    3
    4
    vim /etc/sudoers

    root ALL=(ALL) ALL
    machine ALL=(ALL) ALL
    • 设置hosts

      vim /etc/hosts ,添加如下内容

    Code
    1
    2
    3
    192.168.1.101 hadoop101
    192.168.1.102 hadoop102
    192.168.1.103 hadoop103
  • 克隆3台虚拟机

    一些操作,3台都要(修改mac, 修改ip, 修改hostname)

保证3台机子互相能PING通、保证能连网、保证能连上本地主机

然后用xshell连接3台机子

数据采集模块

Hadoop安装

  1. 准备3台客户机(关闭防火墙、静态ip、主机名称)
  2. 安装JDK,配置环境变量
  3. 安装Hadoop,配置环境变量
  4. 编写集群分发脚本xsync
  5. 配置集群
  6. 配置ssh
  7. xsync分发安装包和配置
  8. 格式化集群,启动集群
  9. 添加LZO压缩支持。重启集群。

Zookeeper安装

搭建zookeeper集群

ZK集群启动停止脚本

Flume安装

日志采集Flume安装

日志采集Flume配置

1)Flume配置分析

image-20191202141124093

ETL: MR\Flume拦截器\Kafka拦截器\Hive hq过滤

2)Flume的具体配置如下

image-20191202144132445

Flume拦截器

本项目中自定义了两个拦截器,分别是:ETL拦截器、日志类型区分拦截器。

ETL拦截器主要用于,过滤时间戳不合法和json数据不完整的日志

日志类型区分拦截器主要用于,将错误日志、启动日志和事件日志区分开来,方便发往kafka的不同topic。

日志采集Flume启动停止脚本

Kafka安装

kafka集群安装

Kafka集群启动停止脚本

查看所有Kafka topic

创建 Kafka topic

消费消息

生产消息

然后把f1.sh启动,运行lg.sh生产数据,查看消费者是否能成功消费数据。

到这里 logFile > flume > kafka就通了

Kafka Manager安装

Kafka Manager启动停止脚本

Flume消费Kafka数据写到HDFS

kafka > flume消费 > hdfs

日志消费Flume配置

日志消费Flume启动停止脚本

采集通道启动/停止脚本

一个思考:

kafka在这里的作用?数据到kafka这里分叉,分为实时指标分析和HDFS离线。Kafka充当了路由和数据池的作用。

只做离线的话,直接从flume生产到hdfs消费就行了。

文章作者: Machine
文章链接: https://machine4869.gitee.io/2019/11/21/20191121155413741/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哑舍
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论