美文网首页
大数据统计平台

大数据统计平台

作者: xiao_kong | 来源:发表于2018-09-02 12:35 被阅读0次

    目的

    提供业务数据计算分析平台

    设计

    数据平台草图.jpg

    组件

    名称 作用 备注
    hbase 数据存储 分布式存储
    redis 分布式缓存
    kafka 消息队列
    flume(或) 日志分发收集 日志分发至消息队列或其他中间件
    logstash (或) 日志分发收集 日志分发至消息队列或其他中间件
    springcloud REST API 服务 日志服务api,数据中心api等
    spark 计算 服务 (ETL,Streaming,机器学习)
    hive 数据存储 保存结构化数据,存储ETL数据
    *** 调度平台 调度任务执行
    1. 日志服务
    1.1 日志收集格式(json)

    {app:"应用标识","version":"应用版本号","xwhen:"发生时间",xwhere:"发生地点",xwhat:"事件名称",xact:"事件类型",xcontext:{"上下文信息1 key":"上下文信息1","上下文信息2 key":"上下文信息2"}}

    1.2 日志采集方式

     (1) Spring REST API + logback采集 (针对移动端)
     (2) Spring+logback埋点(服务端)

    1.3 spring cloud Logback 配置
    <!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder -->
        <dependency>
          <groupId>net.logstash.logback</groupId>
          <artifactId>logstash-logback-encoder</artifactId>
          <version>5.2</version>
        </dependency>
          <dependency>
              <groupId>com.alibaba</groupId>
              <artifactId>fastjson</artifactId>
              <version>1.2.15</version>
          </dependency>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <springProperty scope="context" name="logLevel" source="log.level"/>
        <springProperty scope="context" name="logPath" source="log.path"/>
        <!--引入默认的一些设置-->
        <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
        <!--级别配置-->
        <logger name="org.springframework.web" level="info"/>
        <logger name="com.gofine" level="DEBUG"/>
    
        <!--写入日志到控制台的appender,用默认的,但是要去掉charset,否则windows下tomcat下乱码-->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%-4line:行号,%msg:日志消息,%n是换行符-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %-40.40logger{39} [%-3line] : %msg%n</pattern>
            </encoder>
        </appender>
    
        <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <destination>192.168.0.60:4560</destination>
            <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
        </appender>
    
    
        <!--写入日志到文件的appender-->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--<file>mgr-log.txt</file>-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!-- rollover daily -->
                <fileNamePattern>/data/logs/gofine-dataSite-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- each file should be at most 10MB, keep 60 days worth of history, but at most 10GB -->
                <maxFileSize>10MB</maxFileSize>
                <maxHistory>60</maxHistory>
                <totalSizeCap>10GB</totalSizeCap>
            </rollingPolicy>
    
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%-4line:行号,%msg:日志消息,%n是换行符-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %-40.40logger{39} [%-3line] : %msg%n</pattern>
            </encoder>
        </appender>
    
        <!--异步到文件-->
        <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
            <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
            <discardingThreshold>0</discardingThreshold>
            <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
            <queueSize>500</queueSize>
            <!-- 添加附加的appender,最多只能添加一个 -->
            <appender-ref ref="FILE"/>
        </appender>
    
    
        <root level="info">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="asyncFileAppender"/>
        </root>
    
        <logger name="com.gofine.dataSite" level="INFO">
            <appender-ref ref="LOGSTASH"/>
        </logger>
    
    </configuration>
    
    
    1.4 日志分发服务

    logstash 配置:
    logstash-6.4.0/serv_conf/logback.conf

    input {
        tcp {
            port => 4560
            codec => json
        }
    }
    
    output {
        kafka {
                topic_id => "test"
                codec => plain {
                    format => "%{message}"
                }
              }
    }
    
    1.5 消息队列 kafka

    创建topic

    bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
    

    实时计算

    ETL

    数据中心

    机器学习

    用户画像

    推荐系统

    待续。。。。。

    相关文章

      网友评论

          本文标题:大数据统计平台

          本文链接:https://www.haomeiwen.com/subject/djfswftx.html