spark使用influxdb数据,Flink Metrics指标采集方案
spark使用influxdb数据,Flink Metrics指标采集方案详细介绍
本文目录一览: 自动化软件开发测试有哪些优势
在自动化软件测试实施之前,很多软件开发团队在进行软件开发测试的过程中尝试了很多的方法,主要是通过大量的数据样本和人工测算进行软件测试。但是这样的方法却存在一定的缺陷,不仅需要消耗大量的成本,在软件测试的准确度上面也不是非常准确。那么在使用自动化软件开发测试过程中有哪些优势呢?下面昌平java课程为大家具体介绍。
压力测量平台是典型的B/S类型JavaWeb项目,基于SpringBoot开发,前端使用AngularJS。平台本身不执行测试,只执行调度,避免成为瓶颈。昌平java课程培训发现后台使用JMeter进行测试,平台本身维护压力测试仪集群,以确保压力测试仪可用于测试,测试期间生成的冷数据(用例数据,结果)数据)对MongoDB的持久性,热数据(实时数据)持续存在于InfluxDB并定期清理。
一、分布式测试
选择使用JMeter进行性能测试时,如果并发量很大,主要是因为不支持单个计算机的配置。在这种情况下,昌平java课程培训机构建议是需要组合多台计算机进行分布式测试。主要是因为我们没有采用JMeter自己的分布式功能,而是由我们自己完成。其中主要考虑是JMeter的分布式测试执行和独立执行方法完全不同,这导致平台架构的不必要的复杂性。实际用户只能感知测试机器数量的差异。
二、测试状态流转
测试状态流转主要是压测平台的核心,在进行测试的过程中,每一轮正式的测试工作都需要经过一条主线。昌平北大青鸟认为测试状态需要根据这条主线进行流转,并且辅助外部干预和内部监控功能,这样才能保证测试的正常进行。
以此同时,在进行测试的过程中还需要能够鉴别各种可能存在的异常情况,如测试出发失败用户主动停止。可以在此过程中输出不同的反馈意见,并且电脑培训发现不会因为测试流程产生分支,最终都能够形成很好的闭环,这是保证系统健康的重要性。
Flink Metrics指标采集方案
本文讨论的都是基于Flink On K8s场景下,该场景下存在几个特点,一是存在线上业务系统资源复用,二是调度节点存在"随机性",对现有的Flink Metrics采集及使用姿势提出了新的要求:
Flink任务自动扩缩容,智能诊断场景依赖Metrics指标进行加工分析处理,现有Prometheus存储方案不再适合。
既有的指标采集需要先落本地,再由nodeexporter或lancer导出到目标存储,强依赖于Local环境,线上业务系统资源环境差异较大,扩容等维护成本较高,资源隔离性不够好。
期望在Flink On K8s场景下,Flink Metrics指标采集,能够不依赖于基础环境,对扩缩容友好,,支持指标采集及分析数据存储统一,降低指标维护使用成本,对Flink Metrics指标采集方案进行调研
2.1.1、 原理架构图如下
2.1.2、 配置方式
将flink-metrics-prometheus-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: localhost
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: myJob
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: false
metrics.reporter.promgateway.groupingKey: k1=v1;k2=v2
metrics.reporter.promgateway.interval: 60 SECONDS
2.2.1、原理架构图如下
2.2.2、配置方式
将flink-metrics-prometheus-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
metrics.reporter.prom.port: 9250-9260
2.3..1、原理架构图如下
2.3.2、配置方式
将flink-metrics-influxdb-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.influxdb.factory.class: org.apache.flink.metrics.influxdb.InfluxdbReporterFactory
metrics.reporter.influxdb.scheme: http
metrics.reporter.influxdb.host: localhost
metrics.reporter.influxdb.port: 8086
metrics.reporter.influxdb.db: flink
metrics.reporter.influxdb.username: flink-metrics
metrics.reporter.influxdb.password: qwerty
metrics.reporter.influxdb.retentionPolicy: one_hour
metrics.reporter.influxdb.consistency: ANY
metrics.reporter.influxdb.connectTimeout: 60000
metrics.reporter.influxdb.writeTimeout: 60000
metrics.reporter.influxdb.interval: 60 SECONDS
2.4.1、原理架构图如下
2.4.2、配置方式
将flink-metrics-jmx-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.jmx.factory.class: org.apache.flink.metrics.jmx.JMXReporterFactory
metrics.reporter.jmx.port: 9250-9260
2.5.1、配置方式
将flink-metrics-slf4j-1.14.3.jar 包放入到flink安装目录/lib下
修改flink-conf.yaml配置文件,设置属性
Example configuration:
metrics.reporter.slf4j.factory.class: org.apache.flink.metrics.slf4j.Slf4jReporterFactory
metrics.reporter.slf4j.interval: 60 SECONDS
GraphiteReporter、StatsDReporter、DatadogHttpReporter
指标采集到Kafka后,将全量指标实时写入ClickHouse.
指标采集到Kafka后,将全量指标实时写入ClickHouse同时满足监控大盘需求及指标数据长期存储和二次加工分析,该方式优势指标数据源统一,任务大盘及告警
InfluxDB简单介绍
命令行形式
HTTP APIs
/ping
/query
/write
简单来说,RP就是一个定期删除旧数据的组件。像RRD,Graphite中类似的功能
CQ在InfluxDB中是一个很有特色的功能,有些场景下原始数据是秒级别,但是查询时只需要分钟级别的聚合值,如果每次查询秒级别的数据再聚合成分钟级别的数据,就显得有些多余,查询不高效。CQ的作用就是定时跑一个InfluxQL,预先计算好数据存入另一个地方,数据的查询只需查计算后的表,查询响应时间和存储空间上有很大的优化。
一个database中的series值为 (measurement) x (tag set) x (reteion policy)。
series的数量对于InfluxDB的性能有很大的影响,series数量越多对CPU、内存资源的要求越大。所以存储数据时,需要注意下哪些数据可以存为 field ,哪些数据必须是 tag 。
InfluxData公司还推出了基于InfluxDB为存储后端的其它组件,Telegraf是一个类似Flume、Heka的收集器,Chronograf是一个类似Grafana的前端展示。Kapacitor比较特殊,既是报警检测的组件,也是一个ETL组件,可以代替CQ的功能,减少大量CQ的执行,对于InfluxDB本身带来的负担。
Spring Boot中使用时序数据库InfluxDB
除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用 MongoDB 、 LDAP 这些存储的案例。接下来,我们继续介绍另一种特殊的数据库:时序数据库InfluxDB在Spring Boot中的使用。
什么是时序数据库?全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。虽然关系型数据库也可以存储基于时间序列的数据,但由于存储结构上的劣势,使得这些数据无法高效地实现高频存储和查询统计,因此就诞生了一种专门针对时间序列来做存储和优化的数据库,以满足更高的效率要求。(参考:百度百科:时序数据库https://baike.baidu.com/item/%E6%97%B6%E5%BA%8F%E6%95%B0%E6%8D%AE%E5%BA%93/922671)
InfluxDB就是目前比较流行的开源时序数据库(官网地址:https://www.influxdata.com/),我们比较常见的使用场景就是一些与时间相关的高频的数据记录和统计需要,比如:监控数据的存储和查询。
在进行下面的动手环节之前,先了解一下InfluxDB中的几个重要名词:
其中,一个Point由三个部分组成:
在了解了什么是时序数据库以及InfluxDB一些基础概念之后,下面我们通过一个简单的定时上报监控数据的小案例,进一步理解InfluxDB的基础配置、数据组织和写入操作!
第一步 :创建一个基础的Spring Boot项目(如果您还不会,可以参考这篇文章:快速入门(https://blog.didispace.com/spring-boot-learning-21-1-1/)
第二步 :在 pom.xml 中引入influx的官方SDK
注意:这里因为Spring Boot 2.x版本的parent中有维护InfluxDB的SDK版本,所以不需要手工指明版本信息。如果使用的Spring Boot版本比较老,那么可能会缺少version信息,就需要手工写了。
第三步 :配置要连接的influxdb信息
三个属性分别代表:连接地址、用户名、密码。到这一步,基础配置就完成了。
注意:虽然没有spring data的支持,但spring boot 2.x版本中也实现了InfluxDB的自动化配置,所以只需要写好配置信息,就可以使用了。具体配置属性可以查看源码: org.springframework.boot.autoconfigure.influx.InfluxDbProperties 。
第四步 :创建定时任务,模拟上报数据,并写入InfluxDB
第一步 :启动InfluxDB,并通过命令行准备好要使用的数据库,主要涉及的命令如下;
第二步 :启动Spring Boot应用,在定时任务的作用下,我们会看到类似下面的日志:
第三步 :通过命令,查看一下InfluxDB中是否已经存在这些数据
可以看到,已经存在与日志中一样的数据了。
本文的完整工程可以查看下面仓库中 2.x 目录下的 chapter6-3 :
如何插入数据到influxdb
一、安装要求:
1、需要Linux的root权限进行安装。
2、由于会默认使用到8083和8086两个端口,所以要保证这两个端口没有被占用。
Once installation is complete you can change those ports and other options in the configuration file, which is located by default in /etc/influxdb.
二、安装:
这里使用的Centos操作系统。
1、首先在命令行执行下面的脚本,生成所需的yum源:
cat <
<eof | sudo tee etc yum.repos.d influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
请问个人使用,哪种数据库比较好?
选择数据库的最佳选择取决于您的需求和使用场景。以下是几种常见的数据库类型及其特点:
关系型数据库(例如 MySQL、Oracle):适用于数据结构固定、需要事务支持的场景,例如财务系统、订单系统等。
NoSQL 数据库(例如 MongoDB、Redis):适用于数据结构不固定、需要高可扩展性和高性能的场景,例如社交媒体应用、实时数据分析等。
图形数据库(例如 Neo4j):适用于需要对数据进行复杂的关系分析的场景,例如社交网络、知识图谱等。
时间序列数据库(例如 InfluxDB):适用于处理时间序列数据,例如 IoT(物联网)数据、日志数据等。
如果您需要个人使用数据库,您可以考虑一些免费的数据库,例如 MySQL、PostgreSQL、SQLite 等。这些数据库具有较高的可靠性、安全性和扩展性,并且易于使用和学习。此外,这些数据库有许多第三方工具和库可以帮助您快速构建和管理数据库。
对于个人使用而言,选择哪种数据库主要取决于你的需求和使用场景。以下是一些常用的数据库及其特点:
MySQL:开源免费,适合小型项目和网站,易于使用,具有广泛的社区支持和资源。
PostgreSQL:开源免费,适合大型项目和企业应用,功能强大,支持高级特性,例如完整的事务处理和高级查询语言。
SQLite:轻量级的嵌入式数据库,不需要独立的服务器,适合小型应用和移动设备应用。
Microsoft SQL Server:商业数据库,适合在Windows环境下使用,具有强大的功能和高性能。
Oracle:商业数据库,适合大型企业应用,功能非常强大,但价格昂贵。
在选择数据库时,可以考虑以下因素:
数据库的类型和功能是否满足你的需求。
数据库的性能是否满足你的要求。
数据库的可靠性和安全性是否得到保障。
数据库的易用性和可维护性如何。
数据库的成本是否合理。
综合考虑以上因素,你可以选择适合自己使用的数据库。
几个时序数据库
================================可用作时序的数据库:================================[时序]TimescaleDB, 基于 PostgreSQL, 支持 SQL.[时序]KairosDB, 基于 Cassandra, 不支持 SQL. [通用]CrateDB, 基于 Elastic Search, 但支持ANSI SQL[时序]InfluxDB, 是 db-engines 上排名第一的时序数据库, 最新版中集群功能不开源了, 商业版支持, 另外并发查询性能较差.[通用]Kudu, 列式存储(类parquet), 支持 java API 更新数据, 比较赞的是支持 upsert. 可以通过 impala 或 spark 来支持SQL 查询.简单点评(基于底层技术做的点评, 未做个实际测试)TimescaleDB 基于PostgreSQL, 可能适合数据量不太大的情形, 但提供丰富的SQL功能KairosDB, 基于 Cassandra, 运维应该比较简单, 扩展性也应该不错, 写入性能估计要比 CrateDB 差一些, 另外不支持SQL. CrateDB 基于 Elastic Search, 写入性能应该很好, 扩展性也应该不错, 估计 SQL 支持度和读取性能会差一些, 支持全文检索. db-engines 网站的对比:https://db-engines.com/en/system/CrateDB%3BKairosDB%3BTimescaleDBCrate 官方的比较:http://go.cratedb.com/rs/832-QEZ-801/images/CrateDB-Cassandra-MongoDB-Comparison.pdf================================支持SQL的流处理框架================================ 多数流处理方案中, 数据一般都会暂存在 kafka中, 格式推荐使用 Json/Avro, schema 推荐使用 Oracle Goldgate(OGG)数据格式. 支持SQL的流处理框架有:1. Spark Streaming: 可以写很复杂的SQL, 比如和其他数据库DB做 join. 2. Kafka 的 KSQL: 和Kafka公用集群, 不需要额外计算集群.3. PipelineDB : 基于 PostgreSQL 的扩展, cluster版需要付费. 流数据既可以直接写到 pipelinedb(以pipelinedb的FOREIGN TABLE形式暂存流数据), 然后通过 pipelinedb SQL来处理; 流数据也可以先打到kafka中, 然后再通过 pipelinedb extension来处理. 几个时序数据库标签:streaming格式新版mongod运维spark流处理处理cassandra
如题,想知道面对大数据的情况下,哪些数据库是比较常用的?
目前市场上主要常用的数据库根据数据库应用类型的不同有时候区别。在关系数据库中,Oracle、MySQL/MariaDB、SQL Server、PostgrcSQL、 DB2等数据库应用较广泛。在时序数据库类型中,InfluxDB、RRDtool、Graphite等数据库也较为常见。其他类型数据库可参考 http://db-engines.com/en/ranking网站排名。
在国产数据库领域,亚信科技AntDB数据库在运营商的核心系统上?为全国24个省份的10亿多用户提供在线服务,现已广泛应用于通信,交通,金融,能源,邮政等多个行业。
Python接入不同类型数据库的通用接口方法
日常数据管理工作中,需要处理存储在不同类型数据库系统的数据。对这些数据的管理,常见的是使用Navicat,DBeaver等管理工具。在对大量数据分析时,需要提取到Python/R中进行处理。下面 探索 Python调用MySQL,MongoDB,InfluxDB等多种类型数据库通用连接方法。实现方式是在Python中封装各类数据库接口包。
实现后的效果:1.安全。接口信息封装便于保密管理;2.复用。一次封装,永久复用;3.上手快。方便不熟悉python和数据调用的同学,只会简单的sql即可使用,省时省力。
下面以MySQL,MongoDB,InfluxDB为例定义接口方法,然后把它们封装成1个通用方法。
mysql_get(sql,db):
mongo_get(sql,db):
influx_get(sql,db):
可以看到,以上函数共同调用的参数为sql和db。我们再增加一个参数db_type,将构造一个通用的方法对以上数据库调用。
同理,其他类型的数据库也可以加入到这个通用框架中,包括但不限于各类关系型,键值型,时序型数据库。