ToB企服应用市场:ToB评测及商务社交产业平台
标题:
服务器是5台64G的 ,doris写入300亿数据写不进去,爆内存怎么弄?我的思路
[打印本页]
作者:
三尺非寒
时间:
2024-8-14 00:06
标题:
服务器是5台64G的 ,doris写入300亿数据写不进去,爆内存怎么弄?我的思路
近来在某谈天群窥屏:又get了一个题目。群友问:
服务器是5台64G的 ,doris写入300亿数据写不进去,爆内存怎么弄?
和上个题目雷同, emm, 好久没打仗这些了题目,我一时半会没反应过来,于是和昨天一样,查了一晚上资料,连夜肝了一篇。
看到这些题目就像死去的回忆在攻击我。为啥这么说呢,因为我如今转行啦哈哈,我本来是干大数据的,不外如今死磕云计算,照旧云计算轻松,爽歪歪。
上个题目链接已附上如下: hh,不外我可不敢让他们知道我在diss或人,我怕他们真实我。为了防止被真实,我直接连夜改昵称。
如何用sql在1分钟从1T数据中精准定位查询?Hive离线数仓 Spark分析-CSDN博客文章欣赏阅读819次,点赞27次,收藏5次。在大数据-Hadoop体系中 ,spark批处理和hive离线数仓可以说是对立并行的两个大分支技术栈,,,发起主攻其一,另一个机动使用就行。他们是2015出如今国内,2017年之后国外各大公司纷纷采用,国内2020采用的,目前属于很前沿,并且很主流,很顶层的技术。(注:19年国内云计算开始起势,大数据的发展与云计算和人工智能等密切相干,更离不开芯片,硬件存储技术等相干支撑,它们之间相辅相成
https://blog.csdn.net/qq_61414097/article/details/140999898?spm=1001.2014.3001.5502
在处理大规模数据写入时,碰到内存不敷的题目是常见的挑战,怎么说呢,从前每天思考,干的头蒙。
一,以下是一些发起和优化战略,可以帮助你解决Doris写入300亿数据时的内存题目:
主要是:思路+例子,毕竟每个人的设置和存的数据五花八门,我暂时还没有本事总结全部概况。。。。
分批次写入
:
将数据分成较小的批次进行写入,而不是一次性写入全部数据。这样可以镌汰单次写入的内存占用。
示例
:
假设你有300亿条数据,可以将其分成300个批次,每批次写入1亿条数据。
Copy-- 批次1
INSERT INTO your_table (col1, col2, ...) VALUES
(val1_1, val1_2, ...),
(val2_1, val2_2, ...),
...
(val100000000_1, val100000000_2, ...);
-- 批次2
INSERT INTO your_table (col1, col2, ...) VALUES
(val100000001_1, val100000001_2, ...),
(val100000002_1, val100000002_2, ...),
...
(val200000000_1, val200000000_2, ...);
复制代码
调解内存参数
:
检查并调解Doris的内存设置参数,如be_config文件中的mem_limit参数,确保每台服务器的内存使用在公道范围内。
示例
:
在be_config文件中,找到mem_limit参数并调解:
Copymem_limit = 48G
复制代码
确保这个值不会凌驾物理内存的75%-80%。
优化表结构
:
确保表的结构和索引设计是高效的。避免不必要的索引和复杂的表结构。
示例
:
如果你的表有很多不必要的索引,可以考虑去掉一些:
CopyCREATE TABLE your_table (
id INT PRIMARY KEY,
name VARCHAR(255),
age INT,
-- 去掉不必要的索引
-- INDEX (some_column)
);
复制代码
分区表
:
使用分区表将数据分散到不同的分区中,可以镌汰单个分区的内存占用。
示例
:
按日期分区:
CopyCREATE TABLE your_table (
id INT,
name VARCHAR(255),
age INT,
created_date DATE
) PARTITION BY RANGE (created_date) (
PARTITION p0 VALUES LESS THAN ('2022-01-01'),
PARTITION p1 VALUES LESS THAN ('2023-01-01')
);
复制代码
增加节点
:
如果大概的话,增加更多的Doris节点来分摊负载。更多的节点可以提供更多的内存和计算资源。
示例
:
假设你如今有5个节点,可以再添加3个节点:
# 在新的节点上安装Doris
# 设置新的节点并参加集群
监控和调解
:
使用监控工具监控Doris集群的内存使用情况,及时调解设置参数和写入战略。
示例
:
使用Prometheus和Grafana监控Doris:
Copy# 配置Prometheus监控Doris
# 使用Grafana展示内存使用情况
复制代码
压缩和编码
:
使用合适的压缩和编码方式来镌汰数据存储和传输的内存占用。
示例
:
在创建表时指定压缩方式:
CopyCREATE TABLE your_table (
id INT,
name VARCHAR(255),
age INT
) ENGINE=OLAP
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES (
"storage_format" = "V2",
"compression" = "LZ4"
);
复制代码
优化SQL语句
:
优化写入时使用的SQL语句,确保查询和插入操作是高效的。
示例
:
使用批量插入而不是单条记载插入:
Copy-- 不推荐
INSERT INTO your_table (col1, col2) VALUES (val1, val2);
INSERT INTO your_table (col1, col2) VALUES (val3, val4);
-- 推荐
INSERT INTO your_table (col1, col2) VALUES
(val1, val2),
(val3, val4),
(val5, val6);
复制代码
批量插入
:
使用批量插入(Batch Insert)方式,而不是单条记载插入,以提高写入效率和镌汰内存开销。
示例
:
Copy-- 批量插入
INSERT INTO your_table (col1, col2, col3) VALUES
(val1_1, val1_2, val1_3),
(val2_1, val2_2, val2_3),
...
(valN_1, valN_2, valN_3);
复制代码
调优操作系统和硬件
:
确保操作系统和硬件设置是最佳的,如调解虚拟内存设置、使用SSD存储等。
示例
:
使用SSD替换HDD,提高I/O性能。
调解操作系统的虚拟内存设置:
Copy# 调整swappiness
sysctl vm.swappiness=10
复制代码
但是注意:具体的调解和优化必要根据你的现真相况进行测试和验证
未完待续。。。。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4