我们有一个包含2个JBOSS节点的集群.我们有一个批处理作业,它将所有用户详细信息从活动目录加载到数据库.这项工作每天都在运行.它之前在非集群环境中运行,因此我们将其设计为单例.现在我们有一个集群环境,我不知道什么是实现相同结果的最佳方法.我希望批处理作业每天只运行一次.我们使用spring和hibernate,然后看了Spring批处理.我无法对我的问题得到任何简明的答案.
如果你在集群环境中实现批处理,请问有谁可以告诉我吗?在这种情况下,最好的解决方案是什么?
我正在设计一个系统,该系统应分析大量用户事务并生成汇总度量(如趋势等).系统应该快速,稳健和可扩展.System是基于java的(在Linux上).
数据从生成用户事务的日志文件(基于CSV)的系统到达.系统每分钟生成一个文件,每个文件包含不同用户的事务(按时间排序),每个文件可能包含数千个用户.
CSV文件的示例数据结构:
10:30:01,用户1,...
10:30:01,用户1,...
10:30:02,用户78,...
10:30:02,用户2,......
10: 30:03,用户1,...
10:30:04,用户2,...
...
我计划的系统应该处理文件并实时执行一些分析.它必须收集输入,将其发送到多个算法和其他系统,并将计算结果存储在数据库中.数据库不保存实际输入记录,而只保留有关事务的高级聚合分析.例如趋势等
我计划使用的第一个算法要求最佳操作至少10个用户记录,如果5分钟后找不到10条记录,它应该使用可用的数据.
我想使用Storm来实现,但我更愿意尽可能地将这个讨论留在设计层面.
系统组件列表:
每分钟监视传入文件的任务.
读取文件,解析文件并使其可用于其他系统组件和算法的任务.
用于缓冲用户的10条记录的组件(不超过5分钟),当收集10条记录或5分钟时,是时候将数据发送到算法进行进一步处理.由于要求为算法提供至少10条记录,我想到使用Storm Field Grouping(这意味着为同一个用户调用相同的任务)并跟踪任务中10个用户记录的集合,当然我计划有几个这样的任务,每个任务处理一部分用户.
还有其他组件可以处理单个事务,对于它们,我计划创建其他任务,在解析每个事务时(与其他任务并行).
我需要你的帮助#3.
设计这样一个组件的最佳实践是什么?很明显,它需要为每个用户维护10条记录的数据.键值映射可能会有所帮助,是否可以在任务本身或使用分布式缓存中管理映射?例如Redis是一个键值存储(之前从未使用过它).
谢谢你的帮助
distributed-computing distributed-caching batch-processing redis apache-storm
我遇到了需要在laravel 4中使用相关对象批量保存对象的情况.基本上我正在做的是对象的批量插入,其中每个对象可以有许多标记(多对多关系).
以下是一些示例代码,请注意TODO的注释:
[...]
$batchData = array();
$rowCount = 0;
foreach ($dataArray as $key => $row) {
[...]
// parsing row from CSV
$obj = array();
foreach ($row as $attribute => $value) {
$obj['template_id'] = $templateId;
$obj['batch_id'] = $batchId;
$obj['user_id'] = $confideUserId;
$obj['created_at'] = new \DateTime;
$obj['updated_at'] = new \DateTime;
// Attach Tags if any exist
if ($attribute === 'tags') {
if (!is_null($value) || !is_empty($value)) {
$tags = explode(":", $value);
// TODO: Get tag ID for each tag and add …Run Code Online (Sandbox Code Playgroud) 我想批量处理大量记录(> 400k)并将其插入数据库中。
我知道如何使用for()或underscore.each()遍历数组,而且我知道如何异步地将记录插入各种(无)SQL数据库。那不是问题-问题是我找不到同时做这两种方法的方法。
数据库分发本身在这里不起作用,该原理适用于任何具有异步接口的(NO)SQL数据库。
我正在寻找一种模式来解决以下问题:
循环方法:
var results = []; //imagine 100k objects here
_.each(results,function(row){
var newObj = prepareMyData(row);
db.InsertQuery(newObj,function(err,response) {
if(!err) console.log('YAY, inserted successfully');
});
});
Run Code Online (Sandbox Code Playgroud)
这种方法显然是有缺陷的。它有点用插入查询来锤击数据库,而不必等待单个查询完成。说到使用连接池的MySQL适配器,您很快就会用尽连接,脚本将失败。
递归方法:
var results = []; //again, full of BIGDATA ;)
var index = 0;
var myRecursion = function()
{
var row = results[index];
var data = prepareMyData(row);
db.InsertQuery(data,function(err, response)
{
if (!err)
{
console.log('YAY, inserted successfully!');
index++; //increment for the next recursive call of:
if (index < results.length) myRecursion();
}
}
} …Run Code Online (Sandbox Code Playgroud) 我需要在我的bat文件中运行的"Las2xyz"进程的进程ID.
我怎样才能实现这一目标?我不能使用最后一个RUN ID或第一个ID,我需要实际的进程ID,因为在任何给定时间有多个这些运行并且在任何给定时间结束我无法猜测它.
这是我的批次:
@echo off
@echo off
set PATH=C:\Windows\system32;C:\atlass\las2xyz;C:\atlass\las2xyz\bin;C:\atlass\las2xyz\lib
set TOP_HOME=%C:\atlass\las2xyz%
del dat*.xyz dat*.seg dat*.pat dat*.tmp dat*.txt test.nam
las2xyz.exe "[ flightpath 2 out 5 lasformat 1 target 0 FIXCLASS 1 step 20 unit *METRIC* fov 20.0 rollfix 1 sn_number *H68_038-003* lsystem *LIDAR_1* DESTSYS 144 minele -100.00 maxele 6000.00 hoff 0.00 eoff 0.00 noff 0.00 bootnr 13110201 leg 1]" "C:\Users\Developer-One\Desktop\las2xyz_Data\131102_003243_GPE.sdc" , "\\192.168.0.102\agis\Macquarie_Barwon_1310\Area_01\sbet_038_13110201.out" - "131102_003243_cov"
Run Code Online (Sandbox Code Playgroud)
有人告诉我该怎么做!谢谢
嗨,我是批处理文件的新手,我想知道如何从批处理文件中自动按键.我想制作一个打开浏览器并自动按Tab键的程序.
我知道MapReduce是一个很好的Hadoop批处理框架.但是,Spark也可以用作Hadoop上的批处理框架,与MapReduce相比,它提供了可扩展性,容错性和高性能.Cloudera,Hortonworks和MapR也开始用YARN支持Spark on Hadoop.
但是,很多公司仍在使用Hadoop上的MapReduce Framework进行批处理而不是Spark.
那么,我试图了解Spark在Hadoop上用作批处理框架的当前挑战是什么?
有什么想法吗?
春天批次我是新手.我的任务是开发读取平面文件的代码,其中值由管道"|"分隔.我发现我可以通过FlatFileReader来完成它.但是我没有得到如何在读取期间设置分隔符值以及如何使用我的POJO成员变量映射每个列.
平面文件中的示例值如下.
3345|742|0|N
3346|743|1|A
3347|742|0|N
3348|742|1|C
3345|743|0|K
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在尝试提交一个依赖于阵列完成的扭矩作业.
FIRST=`qsub -q hep -t 1-5 foo.sh`
qsub -q hep -W depend=afterok:$FIRST bar.sh
FIRST作业数组提交并完成正常,但第二个作业bar.sh只是无限期地保留.
如果我从第一个参数中删除数组选项,第二个作业将按计划成功,但这并不能解决问题.
3年前有一个类似的线程,但似乎没有实际解决方案:
如何等待扭矩作业阵列完成
谢谢你的帮助.
如何使用axios进行批处理请求:
我有以下批量请求
POST /batch HTTP/1.1
Content-Type: multipart/mixed; boundary=====1340674896===
--====1340674896===
GET /contacts/479038 HTTP/1.1
Content-Type: application/json
--====1340674896===
GET /contacts/299430 HTTP/1.1
Content-Type: application/json
--====1340674896===--
Run Code Online (Sandbox Code Playgroud)
如何使用axios获得响应:我正在尝试以下
const config = {
headers: {
'content-type': 'multipart/mixed; boundary=====1340674896==='
}
}
axios.post('/batch',data,config)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
如何传递数据
--====1340674896===
GET /contacts/479038 HTTP/1.1
Content-Type: application/json
--====1340674896===
GET /contacts/299430 HTTP/1.1
Content-Type: application/json
--====1340674896===--
Run Code Online (Sandbox Code Playgroud) batch-processing ×10
batch-file ×2
java ×2
spring-batch ×2
apache-spark ×1
apache-storm ×1
axios ×1
database ×1
eloquent ×1
hadoop ×1
javascript ×1
jboss ×1
laravel-4 ×1
mapreduce ×1
node.js ×1
orm ×1
pbs ×1
php ×1
qsub ×1
redis ×1
spring ×1
torque ×1
windows ×1