小编SSo*_*lid的帖子

如何让hive同时运行mapreduce作业?

我是新手,我遇到了一个问题,

我有一个像这样的蜂巢表:

create table td(id int, time string, ip string, v1 bigint, v2 int, v3 int,
v4 int, v5 bigint, v6 int)  PARTITIONED BY(dt STRING)
ROW FORMAT DELIMITED FIELDS
TERMINATED BY ','  lines TERMINATED BY '\n' ;  
Run Code Online (Sandbox Code Playgroud)

我运行一个像:

from td
INSERT OVERWRITE  DIRECTORY '/tmp/total.out' select count(v1)
INSERT OVERWRITE  DIRECTORY '/tmp/totaldistinct.out' select count(distinct v1)
INSERT OVERWRITE  DIRECTORY '/tmp/distinctuin.out' select distinct v1

INSERT OVERWRITE  DIRECTORY '/tmp/v4.out' select v4 , count(v1), count(distinct v1) group by v4
INSERT OVERWRITE  DIRECTORY '/tmp/v3v4.out' select v3, v4 …
Run Code Online (Sandbox Code Playgroud)

hadoop hive mapreduce

6
推荐指数
1
解决办法
9709
查看次数

如何预测linux c/c ++程序中的内存泄漏?

我想在linux c ++程序中预测内存泄漏.

该程序是一个网络服务器,它分叉了很多子进程来处理请求.

在处理完一个请求之后,我可以获取进程的RSS,如果发现可能存在内存泄漏,我想让进程自行终止.

如果它的RSS大于配置值(如1GB),我可以让进程自行终止,但这看起来太简单了,这个值也不容易配置.

如果RSS越来越大且N次(如100),我也可以让进程自行终止,但是如果进程缓存一些数据,这似乎也不合适.

有没有内存泄漏预测算法?

我用Google搜索了,但找不到一个.

谢谢.


很抱歉没问题.

其实我并没有试图找到一些方法来查找内存泄漏,我知道有像valgrind这样的工具.

情况是这样的:

我编写的程序是一个RPC框架,有一个父进程,它将分叉许多子进程.

这些子进程将运行一些业务逻辑代码,这些代码不是由我编写的,我无法控制这些代码.

当这些逻辑代码泄漏内存时,子进程将被os OOM Killer杀死.

但在那时,由于内存不足,操作系统会停止一段时间(几分钟甚至更长时间)甚至故障,我们将不得不重新启动系统.

我希望通过预测逻辑代码的内存泄漏来避免这种情况,并使子进程在OOM Kill执行它之前自行终止.

如果子进程自行终止,则父进程将分叉另一个子进程来运行逻辑代码.

在处理一个请求后,我可以获得子进程占用的内存.

因此,最简单的方法是检查子进程是否占用了比预先配置的值(如1GB)更多的内存,如果是,则使其自行终止.

但是这个算法看起来太简单了,价值也不容易配置.

所以我发现的是一种算法来预测过程中是否存在内存泄漏.

谢谢

c c++ linux algorithm memory-leaks

0
推荐指数
1
解决办法
374
查看次数

标签 统计

algorithm ×1

c ×1

c++ ×1

hadoop ×1

hive ×1

linux ×1

mapreduce ×1

memory-leaks ×1