大数据实时项目(采集部分)[通俗易懂]

大数据实时项目(采集部分)[通俗易懂]第一章 实时需求概览1实时需求与离线需求的比较离线需求,一般是根据前一日的数据生成报表,虽然统计指标、报表繁多,但是对时效性不敏感。实时需求,主要侧重于对当日数据的实时监控,通常业务

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

 

 

第一章 实时需求概览

1  实时需求与离线需求的比较

离线需求,一般是根据前一日的数据生成报表,虽然统计指标、报表繁多,但是对时效性不敏感。

实时需求,主要侧重于对当日数据的实时监控,通常业务逻辑相对离线需求简单一下,统计指标也少一些,但是更注重数据的时效性,以及用户的交互性。

 

2 需求明细

2.1当日用户首次登录(日活)分时趋势图,昨日对比

 大数据实时项目(采集部分)[通俗易懂]

 

 

2.2当日首单交易额及分时趋势图,昨日对比

2.3活动相关统计

 

 

 

 第二章 实时统计架构

1 离线:

 大数据实时项目(采集部分)[通俗易懂]

 

 

2 实时:

 大数据实时项目(采集部分)[通俗易懂]

 

 

第三章  模拟日志生成器的使用

1 拷贝日志生成jar包到虚拟机的某个目录

 大数据实时项目(采集部分)[通俗易懂]

 

 

2 修改application.properties

 

 大数据实时项目(采集部分)[通俗易懂]

 

 

3、使用模拟日志生成器的jar 运行

java -jar gmall2020-mock-log-2020-04-01.jar

 

 

 

第四章 父工程:gmall2020-parent

1 建立工程

(课堂中命名可能与课件中不一致)

 大数据实时项目(采集部分)[通俗易懂]

 

 

 

2 pom.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<project xmlns=”http://maven.apache.org/POM/4.0.0″
         xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
         xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.atguigu.gmall2020</groupId>
    <artifactId>gmall2020-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
 
    </project>

 

 

 

第五章 搭建日志采集系统的集群

 1子模块日志采集模块 logger —单机开发调试

 1.1 springboot简介

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

 

1.1.1有了springboot 我们就可以

1  不再需要那些千篇一律,繁琐的xml文件。

2  内嵌Tomcat,不再需要外部的Tomcat

3  更方便的和各个第三方工具(mysql,redis,elasticsearch,dubbo,kafka等等整合),而只要维护一个配置文件即可。

 

1.1.2 springbootssm的关系

springboot整合了springmvc ,spring等核心功能。也就是说本质上实现功能的还是原有的spring ,springmvc的包,但是springboot单独包装了一层,这样用户就不必直接对springmvc, spring等,在xml中配置。

 

 

 

1.1.3  没有xml我们要去哪配置

1)  springboot实际上就是把以前需要用户手工配置的部分,全部作为默认项。除非用户需要额外更改不然不用配置。这就是所谓的“约定大于配置”

 

 

2)  如果需要特别配置的时候,去修改application.properties  (application.yml)

 

1.2 快速搭建

1.2.1 新建module

在project下增加一个Module,选择Spring Initializr

 

 

 大数据实时项目(采集部分)[通俗易懂]

 

 

大数据实时项目(采集部分)[通俗易懂]

 

 

 

目前企业中普遍选择2.1.3,不推荐选择2.2.x

 大数据实时项目(采集部分)[通俗易懂]

 

 

 1.2.2  pom.xml

 

<?xml version=”1.0″ encoding=”UTF-8″?>
<project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
         xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
        <relativePath/> <!– lookup parent from repository –>
    </parent>
    <groupId>com.atguigu.gmall2020</groupId>
    <artifactId>gmall2020-logger</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gmall2020-logger</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.56</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

 

 

 1.2.3 controller

@Controller
public class Demo1Controller {
    @ResponseBody
    @RequestMapping(“testDemo”)
    public String testDemo(){
        return “hello demo”;
    }
}

 

1.2.4 main方法启动tomcat

在程序中直接找到XXXXXApplication这个类

 

 大数据实时项目(采集部分)[通俗易懂]

 

 

大数据实时项目(采集部分)[通俗易懂]

 

 

这个类只有一个main函数 ,直接执行就可以

1.2.5 用浏览器测试

 

 大数据实时项目(采集部分)[通俗易懂]

 

 

1.2.6  修改端口号

resources目录下的application.properties 加入

server.port=80

 

 

 

1.3 springboot整合kafka

1.3.1 application.propeties

#============== kafka ===================
# 指定kafka 代理地址可以多个
spring.kafka.bootstrap-servers=hadoop1:9092

# 指定消息key和消息体的编解码方式
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

 

 

1.3.2  LogJsonController

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class LoggerController {

    @Autowired
    KafkaTemplate kafkaTemplate;

    @RequestMapping(“/applog”)
    public String applog(@RequestBody JSONObject jsonObject){
        String logJson = jsonObject.toJSONString();
        log.info(logJson);
        if(jsonObject.getString(“start”)!=null){
            kafkaTemplate.send(“GMALL_START”,logJson);
        }else{
            kafkaTemplate.send(“GMALL_EVENT”,logJson);

        }
 
        return “success”;
    }

}

 

 

1.3.3 logback.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
    <property name=”LOG_HOME” value=”/applog/gmall2020″ />
    <appender name=”console” class=”ch.qos.logback.core.ConsoleAppender”>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name=”rollingFile” class=”ch.qos.logback.core.rolling.RollingFileAppender”>
        <file>${LOG_HOME}/app.log</file>
        <rollingPolicy class=”ch.qos.logback.core.rolling.TimeBasedRollingPolicy”>
            <fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <!– 将某一个包下日志单独打印日志 –>
    <logger name=”com.atguigu.gmall2020.logger.controller.LoggerController”
            level=”INFO” additivity=”false”>
         <appender-ref ref=”rollingFile” />
         <appender-ref ref=”console” />
    </logger>

    <root level=”error” additivity=”false”>
        <appender-ref ref=”console” />

    </root>
</configuration>

 

 

 

1.3.4创建对应的topic

kafka-topics.sh –create –topic GMALL_START –zookeeper hadoop1:2181,hadoop2:2181,hadoop3:2181     –partitions 4 –replication-factor 1

 

1.3.5 启动LoggerApplication 启动日志Mock的生成类

kafka进行测试

/bigdata/kafka_2.11-0.11.0.2/bin/kafka-console-consumer.sh –bootstrap-server  hadoop1:9092,hadoop2:9092,hadoop3:9092 –topic  GMALL_START   

 

 

 

 

 

 

2 日志采集模块打包部署 (部署到服务器)

2.1 修改logback中的配置文件

 

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
    <property name=”LOG_HOME” value=”/opt/applog/gmall2020″ />
    <appender name=”console” class=”ch.qos.logback.core.ConsoleAppender”>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <appender name=”rollingFile” class=”ch.qos.logback.core.rolling.RollingFileAppender”>
        <file>${LOG_HOME}/app.log</file>
        <rollingPolicy class=”ch.qos.logback.core.rolling.TimeBasedRollingPolicy”>
            <fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <!– 将某一个包下日志单独打印日志 –>
    <logger name=”com.atgugu.gmall2020.mock.log.Mocker”
            level=”INFO” additivity=”true”>
        <appender-ref ref=”rollingFile” />
         <appender-ref ref=”console” />
    </logger>

    <root level=”error” additivity=”true”>
        <appender-ref ref=”console” />

    </root>
</configuration>

 

 

 

2.2 把打好的jar包拷贝到Linux 路径下  

 

2.3 启动jar

java -jar  /app/gmall2019/dw-logger-0.0.1-SNAPSHOT.jar    

如果出现权限问题,是因为Linux默认不允许非root账号使用1024以下的端口,所以改换为8080端口

java -jar  /app/gmall2019/dw-logger-0.0.1-SNAPSHOT.jar –server.port=8080  >/dev/null  2>&1  &

 

 

 

2.4 再次测试kafka消费

/bigdata/kafka_2.11-0.11.0.2/bin/kafka-console-consumer.sh –bootstrap-server  hadoop1:9092,hadoop2:9092,hadoop3:9092 –topic  GMALL_STARTUP   

 

 

 

 

 

3  搭建日志采集集群(集群部署)

3.1 Nginx 入门

3.1.1简介 

Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

 

3.1.2 Nginx 功能

1) 反向代理

 

什么是反向代理?先看什么是正向代理

 大数据实时项目(采集部分)[通俗易懂]

 

 

再看什么是反向代理

 

 大数据实时项目(采集部分)[通俗易懂]

 

 

 

2) 负载均衡

 大数据实时项目(采集部分)[通俗易懂]

 

 

负载均衡策略: 轮询

               权重

               备机

 

 

3) 动静分离

 

 大数据实时项目(采集部分)[通俗易懂]

 

 

3.1.3 安装

 1 yum安装依赖包

sudo yum -y install    openssl openssl-devel pcre pcre-devel    zlib zlib-devel gcc gcc-c++

 

 

2) 安装依赖包

解压缩nginx-xx.tar.gz包。

进入解压缩目录,执行

./configure   –prefix=/opt/module/nginx    

make && make install

–prefix=要安装到的目录

 

3) 启动、关闭命令nginx

启动命令:  在/usr/local/nginx/sbin目录下执行  ./nginx

关闭命令: 在/usr/local/nginx/sbin目录下执行  ./nginx  -s  stop

重新加载命令: 在/usr/local/nginx/sbin目录下执行  ./nginx  -s reload

 

如果启动时报错:

ln -s /usr/local/lib/libpcre.so.1 /lib64

 

 

 

 

3.1.4   赋权限

nginx占用80端口,默认情况下非root用户不允许使用1024以下端口

sudo setcap cap_net_bind_service=+eip /bigdata/nginx/sbin/nginx

 

 

3.1.5   修改/bigdata/nginx/conf/nginx.conf

 

http{

   ……….

    upstream logserver{

      server    hadoop1:8080 weight=1;  

      server    hadoop2:8080 weight=1;

      server    hadoop3:8080 weight=1;

 

    }

    server {

        listen       80;

        server_name  logserver;

 

        location / {

            root   html;

            index  index.html index.htm;

            proxy_pass http://logserver;

            proxy_connect_timeout 10;

 

         }

   ……….

}

 

 

3.2  集群脚本

 

#!/bin/bash

JAVA_BIN=/bigdata/jdk1.8.0_152/bin/java

PROJECT=gmall2019

APPNAME=xxxxx.jar

SERVER_PORT=8080

 

case $1 in

 “start”)

   {

 

    for i in hadoop1 hadoop2 hadoop3

    do

     echo “========: $i===============”

    ssh $i  “$JAVA_BIN -Xms32m -Xmx64m  -jar /applog/$PROJECT/$APPNAME –server.port=$SERVER_PORT >/dev/null 2>&1  &”

    done

     echo “========NGINX===============”

    /usr/local/nginx/sbin/nginx

  };;

  “stop”)

  {

     echo “======== NGINX===============”

    /usr/local/nginx/sbin/nginx  -s stop

    for i in  hadoop1 hadoop2 hadoop3

    do

     echo “========: $i===============”

     ssh $i “ps -ef|grep $APPNAME |grep -v grep|awk ‘{print \$2}’|xargs kill” >/dev/null 2>&1

    done

 

  };;

   esac

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167461.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • WiFi网络WPA2 KRACK漏洞分析报告「建议收藏」

    WiFi网络WPA2 KRACK漏洞分析报告「建议收藏」作者:阿里安全技术平台团队————————0x00漏洞概述安全研究员MathyVanhoef发现的WPA2协议的KRA(KeyReinstallationAttacks)漏洞,利用WPA2协议标准加密密钥生成机制上的设计缺陷,四次握手协商加密密钥过程中第三个消息报文可被篡改重放,导致在用密钥被重新安装。WiFi网络通过WPA…

  • ExtJs自学教程(1):从一切API开始

    ExtJs自学教程(1):从一切API开始

    2021年12月17日
  • vscode关闭flake8格式检查

    vscode关闭flake8格式检查用vscode写python时,安装了flake8检查格式,结果一片红且用yapf格式化后还有一堆红色的格式问题提示,如下图:尝试在preference的extension中关闭插件,发现找不到对应插件,最后在settings.json中更改以下两个值:”python.linting.pylintEnabled”:true,”python.linting.flake8Enabled”:false,一片红消失,快乐ps:一键格式化使用alt+shift+F(yapf)即可…

  • 闫学灿acwing_acwing算法基础

    闫学灿acwing_acwing算法基础1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####—#####—#—#####—# 2 # # | # # # # # #—#####—#####—#####—# 3 # | | # # # # # #—#########—#####–…

  • windows10虚拟机安装_虚拟机一键安装版

    windows10虚拟机安装_虚拟机一键安装版[XP虚拟机安装]VMware安装XP虚拟机下载VMware下载XPProfessional,我是在这个网站下的http://www.runker.net/windows-xp-sp3.html新建虚拟机,选择典型选择刚刚下载的XP镜像文件(这里用简易安装更方便,如果不用简易安装还需要进BIOS设置CD启动项啥的,安装过程也需要自己一步步操作,麻烦一些)点击下一步,要求填写秘钥,百度搜索秘钥填进去可以参考https://zhidao.baidu.com/question/45439092

  • 安全帽识别系统-智慧工地的守护者

    安全帽识别系统-智慧工地的守护者安全帽识别系统能够实时对未佩戴安全帽的行为发出警告,及时提醒监理人员处理,为作业人员筑起一道人工智能的安全防火墙。鹰眸安全帽识别系统面世之后,在业界引起了不小的震动,相关企业不但积极推广,还提出了许多建设性的意见,毕竟将人工智能的深度学习应用于视频分析还是很新的事物,那么鹰眸安全帽识别系统能做什么,在此与大家一起分享,希望起到抛砖引玉的作用。一、鹰眸安全帽识别系统通过视频实时分析工作区域,如…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号