当前位置: 首页 > news >正文

项目开发经验

hadoop

1.namenode中有专门的工作线程池用于处理与datanode的心跳信号 dfs.namenode.handler.count=20 * log2(Clust

2.编辑日志存储路径 dfs.namenode.edits.dir 设置与镜像文件存储路径 dfs.namenode分开存放,可以达到提高并发

3.yarn参数调优,单个服务节点上yarn可获得的默认最大内存为8G,而单个任务默认可申请最大内存为8G;

4.hdfs和硬盘使用控制在70%以下。

5.hadoop宕机: 5.1 MR过载时,应控制yarn,任务运行的数量,和每个任务申请的 最大内存。调整参数:yarn.scheduler.maximum-allocation-mb(单个任务可申请的最多物 理内存量,默认是 8192MB)

5.2 载入文件过大造成namenode宕机时,应使用kafka做缓存(调高),控制kafka写入hdfs的速度,在高峰期过后数据同步自动跟上。

flume

1.Flume内存配置4G(flume-env.sh中配置)

FileChannel优化

/etc/flume-ng/conf目录下配置文件存放路径

2.datadir目录指向多个路径,配置到不同硬盘的多个目录下,可以提高并发。checkpointDir和backupcheckpointDir配置到不同硬盘的对应目录下,以便宕机时快速启用备份。

agent.channels.channel1.dataDirs = /path/to/data/dir1, /path/to/data/dir2, /path/to/data/dir3

agent.channels.channel1.checkpointDir = /path/to/checkpoint/dir agent.channels.channel1.backupCheckpointDir = /path/to/backup/checkpoint/dir

3.hdfs sink 小文件处理,控制滑动窗口溢写3个参数,hdfs.rollInterval 、 hdfs.rollSize 、 hdfs.rollCount

kafka

kafka吞吐量测试

kafka内存6G(不能超过6G)

kafka 每天数据1亿条,1150条每秒

kafka 消费能力不足怎么办?

1.并发 增加kafka topic的分区数以及对应的消费者数 (两者统一,缺一不可)

2.频率 拉取的速度需要跟得上生产的速度,如果下游处理数据不及时,可以提高每批次拉取的数据量

kafka挂掉期间了数据怎么办?

内部:

1.重启kafka

2.按消费者偏移量回到发生宕机之前的位置重新开始处理消息

3.kafka的日志和备份数据

外部:

1.flume 的channel 短期可以缓存

2.日志服务器的备份,可以等kafka重启后再次加载

kafka数据重复:在下一级消费者中去重(redis、spark streaming、hive dwd层)

Hive

1.自定义函数

UDF 继承extendsUDF类,重写evaluate(),实现重定义日的功能

UDTF 继承GUDTF类,重写 initialize() process()close()

UDAF

2.优化

2.1 存储

hdfs 上存储格式、列式存储对数仓的优化提升比较明显,提升压缩效率

小文件处理,归档合并小文件

2.2计算

1针对不同计算引擎依赖hive元数据信息生成更优的执行计划,

2mr计算的时候map阶段可以提前合并小文件再切片,减少数据切斜

3环形缓冲区落盘阶段可以提前聚合,减少io

4开启JVM重用

mysql元数据备份问题

重点:可能导致整个集群无法运行,至少保证每日零点后备份到其它服务器两个副本

tez的优点: 可以将多个有依赖的作业转换成一个大作业,减少IO,只写入一次HDFS,提高

计算性能

sqoop:

1.sqoop 的parquet数据从hdfs导出到mysql,需先转换成text

2.Hive 中的 Null 在底层是以“\N”来存储,而 MySQL 中的 Null 在底层就是 Null,为了 保证数据两端的一致性。在导出数据时采用--input-null-string 和--input-null-non-string 两 个参数。导入数据时采用--null-string 和--null-non-string。

sqoop import \--connect jdbc:mysql://hostname:port/database \--username username \--password password \--table table_name \--null-string '\\N' \--null-non-string '\\N' \--target-dir /path/to/output_dir

sqoop 数据一致性问题:

使用多个map如何保证? 使用—staging-table –clear-staging 任务执行成功首先在 tmp 临时表中,然后将 tmp 表中的数据复制到目标表中(这个时 候可以使用事务,保证事务的一致性

sparkstreaming优雅关闭,监听标志位,并使用ssc.stop()

  1. 定义一个标志位:定义一个标志位(如 isStopped),用于控制应用程序的关闭状态。

  2. 监听流式数据源的结束:如果你的流式数据源有一个结束信号,比如 Kafka 的消费者消费完所有消息,你可以在监听到数据源结束时将标志位设为 true

import org.apache.spark.SparkConf;
import org.apache.spark.streaming.Duration;
import org.apache.spark.streaming.api.java.JavaStreamingContext;public class StreamingApp {public static void main(String[] args) throws InterruptedException {// 创建 SparkConf 对象SparkConf conf = new SparkConf().setAppName("StreamingApp").setMaster("local[2]");// 创建 StreamingContext,并设置批处理间隔JavaStreamingContext streamingContext = new JavaStreamingContext(conf, new Duration(5000));// 定义标志位final boolean[] isStopped = {false};// 注册 JVM 钩子Runtime.getRuntime().addShutdownHook(new Thread() {@Overridepublic void run() {System.out.println("Shutting down the application...");// 设置标志位为 trueisStopped[0] = true;// 停止 StreamingContextstreamingContext.stop(true, true);System.out.println("Application is successfully shut down.");}});// 从流式数据源读取数据,并进行处理// ...// 控制循环退出条件while (!isStopped[0]) {// 处理流式数据// ...}// 停止 StreamingContextstreamingContext.stop();// 关闭 Spark 上下文streamingContext.sparkContext().stop();}
}

相关文章:

项目开发经验

hadoop 1.namenode中有专门的工作线程池用于处理与datanode的心跳信号 dfs.namenode.handler.count20 * log2(Clust 2.编辑日志存储路径 dfs.namenode.edits.dir 设置与镜像文件存储路径 dfs.namenode分开存放,可以达到提高并发 3.yarn参数调优,单个服…...

STM32——05-按键、时钟控制、中断复位 点亮LED灯

如何点亮一颗LED灯 编程实现点灯 常用的 GPIO HAL 库函数: void HAL_GPIO_Init ( GPIO_TypeDef * GPIOx , GPIO_InitTypeDef * GPIO_Init ); void HAL_GPIO_WritePin ( GPIO_TypeDef * GPIOx , uint16_t GPIO_Pin , GPIO_PinState PinState ); void HAL_GPIO_Togg…...

VBA下载二进制文件,文本读写

这里使用了vba如下两个对象: Microsoft.XMLHTTP:文件读写,可读写二进制,可指定编码,对于utf-8编码文本文件使用FSO的TextStream对象打开,读取到的内容可能会出现乱码,可以使用该对象打开;前期绑定添加引用…...

MongoDB结合Robo 3T 1.4.3的简单操作

MongoDB的简单操作结合Robo 3T 1.4.3工具进行查询。 常用的正则表达式 /* 29 */ 正则表达式 /\* [0-9]* \*/ "_id" : ObjectId("5f3d05cdfd2aa9a8a7"), 正则表达式 \"([^\"]*_id)\".*, 使用方法:查询结果去掉注释和不需要…...

【学习笔记】[AGC048D] Pocky Game

这是一个非平等博弈。但是只要求你判断胜负,本身也不是一道结论题,所以可以用 D P DP DP来解决。 结论:第一堆石子剩的越多,先手玩家获胜的概率越大。这直接引出了一个非常感性的结论:每次取石子时要么取一堆&#xf…...

Qgis中进行Shp和Excel属性连接实现百强县公共预算空间分析

前言 在之前的博文中,将2022的全国百强县一般公共预算收入的数据下载到了本地,博客原文地址:一种使用Java的快速将Web中表格转换成Excel的方法。对于不关注时空位置关系的一般分析,到此也就基本够用了。但是,如果站在全…...

ES6 新增的循环方法

在 ES6(ECMAScript 2015)中,新增了一些循环方法,这些方法可以帮助我们更方便地遍历数组、字符串、Set、Map 等数据结构。本文将介绍一些常用的 ES6 循环方法。 for…of 循环 for…of 循环是一种遍历可迭代对象的方法&#xff0c…...

移动端事件300ms延迟解决

有移动端与PC端的项目开发,那么移动端和PC端开发上是存在差异的,比如 click 事件的300ms 延迟,即移动Web页面上的click事件响应都要慢上300ms,移动设备访问Web页面时往往需要 “双击” 或者 “捏开” 来放大页面看清页面的具体内容…...

NRF52832的DFU

开发环境: Winsodw:10 nRF5_SDK:17.1.0 1 工具安装 1.1 gcc-arm-none-eabi Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer 下载“gcc-arm-none-eabi-10.3-2021.10-win32.exe”,接提示安装。注意安装完…...

开源WebRTC库放大器模式在采集桌面图像时遇到的DPI缩放与内存泄漏问题排查

目录 1、在非100%的显示比例下放大器采集到的桌面图像不全问题 1.1、通过manifest文件禁止系统对软件进行缩放 1.2、调用SetThreadDpiAwarenessContext函数,禁止系统对目标线程中的窗口进行缩放 1.3、使用winver命令查看Windows的年月版本 2、使用放大器模式遇…...

敲黑板!java反射机制和原理

获取Class对象&#xff1a;首先&#xff0c;你需要获取表示要操作的类的Class对象。可以使用以下三种方式之一来获取Class对象&#xff1a; Class.forName()方法&#xff1a;使用类的全限定名获取Class对象&#xff0c;例如&#xff1a;Class<? Class<?> clazz MyC…...

【大数据工具】HBase 集群搭建与基本使用

HBase 集群搭建 HBase 安装包下载地址&#xff1a;https://archive.apache.org/dist/hbase/ 安装 HBase 的前提&#xff1a; ZooKeeper 集群 OKHadoop 集群 OK 1. HBase 集群安装 1. 将 HBase 软件包上传至 Hadoop0 解压并重命名 使用 FileZilla 将 hbase-1.3.1-bin.tar.g…...

【Java】数组详解

文章目录 一、数组的基本认识1.1 数组的概念1.2数组的创建与初始化1.3 数组的使用 二、数组的类型 — 引用类型2.1 JVM 内存分布2.2 什么是引用类型2.3 基本类型变量与引用类型变量的区别2.4 Java 中的 null 三、数组的应用3.1 保存数据3.2 函数参数3.3 函数返回值 一、数组的基…...

NumPy库的学习

本文主要记录的是笔者在B站自学Numpy库的学习笔记。 引入numpy库 import numpy as np矩阵的创建 创建一个二行三列的矩阵。 array np.array([[1,2,3],[2,3,4]])查看array的行数、形状、元素数量 print("number of dim:",array.ndim) print("shape:"…...

CentOS安装IRIS

最近电脑提搞了&#xff0c;可以无顾虑创建虚拟机了&#xff0c;试一下在Linux安装IRIS&#xff0c;适用CentOS7.6上安装Intersystem公司的IRIS数据库&#xff0c;资料基本是空白&#xff0c;分享一下。 首先安装解压软件unzip和libicu&#xff0c;最小化安装的缺&#xff0c;…...

华为OD机试真题 JavaScript 实现【最多几个直角三角形】【2023Q1 100分】

一、题目描述 有 N 条线段&#xff0c;长度分别为 a[1]-a[n]。 现要求你计算这 N 条线段最多可以组合成几个直角三角形&#xff0c;每条线段只能使用一次&#xff0c;每个三角形包含三条线段。 二、输入描述 第一行输入一个正整数 T (1< T< 100) &#xff0c;表示有…...

vue3中的reactive、ref、toRef和toRefs

目录 reactivereactive的实现原理使用reactive的注意事项 refref的实现原理使用ref的注意事项 toRef和toRefsref和reactive的使用比较 reactive reactive用于创建响应式对象&#xff0c;它返回一个对象的响应式代理。即&#xff1a;它返回的对象以及其中嵌套的对象都会通过 Pr…...

数字图像处理与Python实现-图像增强经典算法汇总

图像增强经典算法汇总 文章目录 图像增强经典算法汇总1、像素变换2、图像逆变换3、幂律变换4、对数变换5、图像均衡化6、对比度受限自适应直方图均衡(CLAHE)7、对比度拉伸8、Sigmoid校正9、局部对比度归一化10、总结本文将对图像增强经典算法做一个简单的汇总。图像增强的经典…...

tag提示词总结

顺序的权重 越靠前的tag权重越大&#xff0c;越靠后的tag权重越小经验来讲&#xff0c;将图像质量相关的tag放在前面&#xff0c;例如masterpiece&#xff0c;best quality等&#xff1b;接着添加主体画风等&#xff1b;最后添加一些不太重要的细节 权重增减 (tag)&#xff1a…...

微信小程序原生开发功能合集二十:导航栏、tabbar自定义及分包功能介绍

本章实现导航栏及tabbar的自定义处理的相关方法介绍及效果展示。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn.net/course/detail/37977    2. 5…...

电池创新如何跨越量产鸿沟:从实验室到工厂的工程化实践

1. 从实验室到工厂&#xff1a;电池创新的“量产魔咒”最近几年&#xff0c;电池行业绝对是资本和媒体眼中的“香饽饽”。动辄数十亿、上百亿美元的投资砸向新的生产设施和前沿技术&#xff0c;目标直指电动汽车、智能电网乃至整个智慧城市的能源基石。新闻稿里&#xff0c;我们…...

自动驾驶人机交接:DMS与安全验证如何破解控制权转移困局

1. 自动驾驶人机交接的核心困境与行业分野最近几年&#xff0c;自动驾驶&#xff08;AV&#xff09;和高级驾驶辅助系统&#xff08;ADAS&#xff09;无疑是汽车科技领域最炙手可热的话题。无论是传统车企的“新四化”转型&#xff0c;还是科技公司的颠覆性入局&#xff0c;大家…...

Specky:规范驱动开发平台,从AI氛围编程到确定性工程实践

1. Specky&#xff1a;一个重新定义AI辅助开发的确定性工程平台如果你和我一样&#xff0c;在过去几年里深度使用过GitHub Copilot、Claude Code这类AI编程助手&#xff0c;你肯定经历过那种又爱又恨的矛盾感。爱的是&#xff0c;它们确实能快速生成代码片段&#xff0c;把我们…...

英雄联盟智能助手:5个核心功能让你的游戏体验提升300%

英雄联盟智能助手&#xff1a;5个核心功能让你的游戏体验提升300% 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾因错过对局接受而被…...

5G技术授权商业化的七大挑战与市场可行性深度解析

1. 项目概述&#xff1a;一次关于5G技术授权商业可行性的深度探讨最近在整理行业资料时&#xff0c;翻到一篇2019年EE Times上的旧文&#xff0c;标题挺抓人眼球&#xff0c;叫《授权华为5G技术可能是个坏主意的30个理由》。文章的核心是讨论当时华为创始人提出的一项设想&…...

别再死记硬背了!用一张图+代码片段,彻底搞懂Element UI Menu组件的嵌套关系

可视化拆解Element UI菜单组件&#xff1a;从零构建多级导航系统 每次看到Element UI文档里那些层层嵌套的菜单代码&#xff0c;是不是感觉像在解一道复杂的数学题&#xff1f;作为Vue生态中最受欢迎的UI框架之一&#xff0c;Element UI的菜单组件确实功能强大&#xff0c;但初…...

保姆级教程:在Ubuntu 22.04上从源码编译DPDK TestPMD并跑通第一个包转发测试

从零构建DPDK TestPMD&#xff1a;Ubuntu 22.04实战指南与性能调优 当你第一次听说DPDK能实现百万级数据包转发时&#xff0c;是否好奇这背后的技术魔法&#xff1f;本文将带你用一台普通Ubuntu服务器&#xff0c;亲手搭建这套高性能网络处理框架。不同于官方文档的抽象描述&am…...

【Leona】BoxId 是什么-设备指纹参数

BoxId 是什么&#xff1f;从 Leona.sense() 到 /v1/verdict 的可落地闭环&#xff1a;签名、落库、错误处理与回归验证&#xff08;基于公开示例&#xff09; TL;DR BoxId 不是“风险结论”&#xff0c;而是一次“证据报告兑换券”&#xff1a;端上拿 BoxId&#xff0c;后端换证…...

Java面试跳槽需要提前准备什么内容?

今年时间属实过得挺快的&#xff0c;想必有很多小伙伴这会已经在为下半年面试跳槽做准备了。临近面试肯定是要想办法提升自己的面试能力&#xff0c;这个时候如果还去一昧地提升自己的代码能力对面试是毫无帮助的。大多数人在面试的时候都会遇到以下几种情况&#xff08;大家可…...

终极指南:如何用WarcraftHelper彻底解决魔兽争霸3的现代系统兼容性问题

终极指南&#xff1a;如何用WarcraftHelper彻底解决魔兽争霸3的现代系统兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争…...