Spark实时监控yarn指标:
Posted chunlei99
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark实时监控yarn指标:相关的知识,希望对你有一定的参考价值。
Spark实时监控yarn指标: 实时计算: sparkstreaming、flink yarn:30T 2000core spark、flink、mr 需求: 实时监控yarn资源使用情况 项目流程: 数据采集:采集yarn指标数据 =》 yarn api => 用户自己开发代码 jar 数据处理:实时处理 =》sparkstreaming 数据输出:mysql、olap =》 clickhouse 数据可视化:superset、dataease olap vs oltp 毫秒级别 olap:clickhouse、doris、tidb、phoenix oltp:事务 mysql、 链路: yarn: app.jar [采集yarn数据] =》 kafka =》sparkstreaming =》 clickhouse =》superset 数据格式: 1.一行一行发送数据: 文本数据【分割符即可】 1 2 3 4 5 空格 1,2,3,4,5 , 2.json数据 "applicationid":1,"meme":4G,“name”:"xxx asd x" 性能问题: json 占用io 、好处:解析方便 1.采集数据: 1.yarn api 采集yarn信息 : 1.采集yarn 作业运行状态: 1.ACCEPTED 2.RUNNING 2.yarn api如何使用? 1.YarnClient 2.YarnApplicationState 3.ApplicationReport: 包含yarn上每个作业的详细信息: 程序id、执行引擎、开始时间、结束时间、mem、cpu、队列、名字 3.数据发送kafka 生产者api : 2.实时数据处理 3.数据可视化 spark-sql --master yarn --jars /home/hadoop/software/mysql-connector-java-5.1.28.jar --driver-class-path /home/hadoop/software/mysql-connector-java-5.1.28.jar 公司: kafka-manger: kafka-eager: 查看kafka topic: kafka-topics.sh --list --zookeeper bigdata32:2181,bigdata33:2181,bigdata34:2181/kafka 创建topic: kafka-topics.sh --create --zookeeper bigdata32:2181,bigdata33:2181,bigdata34:2181/kafka --topic yarn-info --partitions 3 --replication-factor 1 控制台 test: kafka-console-consumer.sh --bootstrap-server bigdata32:9092,bigdata33:9092,bigdata34:9092 --topic yarn-info 作业: 1.安装clickhouse: https://clickhouse.com/docs/en/install/#from-rpm-packages 2.实时数据处理 1.sparkstreaming : 微批 1.souce kafka : 10s一个批次 =》计算结果数据延迟性 该如何界定? 2.todo => 计算监控指标 =》 不做 3.sink clickhouse =》 yarn指标 利用 clickhouse计算能力进行计算 eg: ok =》 业务发展 =》 计算实时指标 1.yarn的某个队列的当前正在运行的作业数量 2..yarn的当前申请资源的作业的数量 3 4 5 6 解决: 略微属于 实时数仓 1.souce kafka : 10s一个批次 =》计算结果数据延迟性 该如何界定? 2.sink clickhouse =》 yarn指标 利用 clickhouse计算能力进行计算 指标: clickhouse => superset 实时数仓: ods dws rpt 实时数仓:直接把 宽表数据 写出到 clickhouse 利用clickgouse 计算能力 去解决 业务需求多的问题 dws =》 clickhouse 代码: sparkstreaming : souce kafka todo no sink clickhosue jdbc : 1. jdbc con 2. df jdbc data =》 clickhouse table columns clickhouse: 1.安装部署 2.使用 =》 mysql mysql rdbms vs nosql hbase redis clickhouse 列式存储 1.官网 https://clickhouse.com/clickhouse 2.安装部署 yum install -y yum-utils yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo yum install -y clickhouse-server clickhouse-client /etc/init.d/clickhouse-server start clickhouse-client 1.table CREATE TABLE bigdata.user_info ( id String , name String, age String, dt String ) ENGINE = MergeTree() PARTITION BY dt PRIMARY KEY (dt,id,name,age) ORDER BY (dt,id,name,age) SETTINGS index_granularity = 8192 insert into bigdata.user_info values('1','zhangsan','30','20230206'),('2','lisi','30','20230206'); 3.dbeaver 进行远程连接 : jdbc 1.clickhouse 运行任何机器 ip 都可以访问 2.dbeaver : ssh bigdata34 clickhouse =》 本机连接 maven 官网仓库地址:https://mvnrepository.com/ 远程连接: 1.vi /etc/clickhouse-server/config.xml 2.把<listen_host>::</listen_host>的注释打开 3.重启ClickHouse服务 clickhouse stop clickhouse start pom: 添加 clickhouse依赖存在问题: 1.Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/JacksonFeature spark运行过程中需要 xml依赖 2.java.sql.SQLException: No suitable driver 没有clickhouse驱动 CREATE TABLE bigdata.yarn_info_dbhappy ( applicationid String, name String, applicationtype String, user String, starttime String, finishtime String, memorysize String, virtualcores String, containers String, state String, queue String, todaytime String, url String ) ENGINE = MergeTree() PARTITION BY queue PRIMARY KEY (applicationid,name,applicationtype,user,starttime,finishtime,memorysize,virtualcores,containers,state,queue,todaytime,url) ORDER BY (applicationid,name,applicationtype,user,starttime,finishtime,memorysize,virtualcores,containers,state,queue,todaytime,url) SETTINGS index_granularity = 8192 3.数据可视化 clickhouse: 1.default用户 =》 创建用户权限 vim /etc/clickhouse-server/users.xml <access_management>1</access_management> 2.进入clickhouse里面 CREATE USER my_user IDENTIFIED BY 'password'; CREATE USER root IDENTIFIED BY '123456'; GRANT ALTER on *.* TO root; superset : clickhouse 1.原生方式部署 bigdata34 0.安装clickhouse驱动 pip3 install sqlalchemy-clickhouse -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 1.source clickhouse://root:123456@bigdata34:8123/bigdata 2.docker bigdata33 pip3 install clickhouse-connect -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com clickhousedb://root:123456@bigdata34:8123/bigdata 1.试着做一下可视化 需求: 1.yarn正在运行作业的明细表 2.yarn正在运行作业内存使用情况 3.yarn正在运行作业任务数 4.yarn正在申请作业任务数 5.yarn正在运行作业内存使用top10、运行时长top10 数据:clickhouse superset:sql 5sql=》 clickhouse 语法 1.yarn正在运行作业的明细表 =》 yarn正在运行作业 最新时间点的 app 信息 where : 1.正在运行 2.最新时间点 select applicationid, name, applicationtype, user, toDateTime(intDivOrZero(toInt64OrZero(starttime),1000)) as s_time, dateDiff('minute', toDateTime(intDivOrZero(toInt64OrZero(starttime),1000)),toDateTime(todaytime) ) as diff, intDivOrZero(toInt64OrZero(memorysize),1024) as user_mem, virtualcores, containers, state, queue, todaytime, url from bigdata.yarn_info_dbhappy where state='RUNNING' and todaytime =( select max(todaytime) as t from bigdata.yarn_info_dbhappy where formatDateTime(toDateTime(todaytime),'%Y-%m-%d')=formatDateTime(now(),'%Y-%m-%d') ) 2.yarn正在运行作业内存使用情况 => yarn正在使用的 总内存 select cast(todaytime_alias,'String') as dt, sum(user_mem) as all_g from ( select toDateTime(todaytime) as todaytime_alias, intDivOrZero(toInt64OrZero(memorysize),1024) as user_mem, name from bigdata.yarn_info_dbhappy where state='RUNNING' group by todaytime_alias, user_mem, name ) as a group by dt; 注意: 1.环境问题 superset =》docker 【常用的第三方框架,docker部署 docker】 docker pull xxx docker run xx docker ps -a docker exec -it xxx bash clickhouse =>docker 小问题: clickhouse tcp 端口: 9000 =》 namenode对外提供服务 9000冲突 superset docker =》 linux 8080-》8088端口 =》 zookeeper端口冲突 对外提供服务 2181 tcp端口 8080 superset、clickhouse bigdata31 => mysql docker => docker hub 补充: kill yarn 上面的作业: yarn application -kill application_1675816347294_0006 3.正在运行的任务数据 select cast(todaytime_alias,'String') as dt, count(name) as cnt from ( select toDateTime(todaytime) as todaytime_alias, name from bigdata.yarn_info_dbhappy where state='RUNNING' and todaytime =( select max(todaytime) as t from bigdata.yarn_info_dbhappy where formatDateTime(toDateTime(todaytime),'%Y-%m-%d')=formatDateTime(now(),'%Y-%m-%d') ) group by todaytime_alias, name ) as a group by dt; 数据采集:采集yarn指标数据 scala 代码 数据处理:Spark作业 scala 代码 数据可视化:superset 1.任务进行部署 不需要定时调度: 数据采集:一直运行 shell 数据处理:一直运行 shell xxl 2.监控 定时监控:1min 1.app 2.报警: 电话 短信 邮箱 钉钉、企业微信 任务部署: 1.采集数据 java -cp ./yarn-log.jar \\ com.bigdata.task.YarnLogTask \\ "bigdata32:9092,bigdata33:9092,bigdata34:9092" "yarn-info" 2.数据处理 spark-submit \\ --master yarn \\ --class com.bigdata.App \\ --conf "spark.kafka.group.id=yarn01" \\ --conf "spark.kafka.topic.name=yarn-info" \\ --conf "spark.port.maxRetries=100" \\ --driver-memory 1G \\ --executor-memory 1G \\ --executor-cores 2 \\ --num-executors 1 \\ /home/hadoop/project/yarn/output/spark-yarn-monitor.jar 任务监控:xxl 1min 1.采集数据监控 2.数据处理监控 task 挂了: 1.监控 pid 2. task 挂了 3. 报警 4.任务拉起脚本【不做了】 1.采集数据监控 1.报警 2.监控pid 作业: 1.任务拉起脚本? 2.整理案例 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
以上是关于Spark实时监控yarn指标:的主要内容,如果未能解决你的问题,请参考以下文章
Spark Streaming 实时计算在甜橙金融监控系统中的应用及优化
Storm 大数据 视频教程 安装 Spark Kafka Hadoop 分布式实时计算
基于Flume+Kafka+Spark Streaming打造实时流处理项目实战课程
kafka监控指标kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs;取不到值,在jconsole也找不到