Storm学习中遇到的问题整理
在编写storm代码来进行实时分析的时候遇到了一些问题,有些的确令人比较头痛,现在稍微做一下整理。数据流向(本地-Spout-Bolt-Hdfs)
1数据的输入输出文件的路径选择
因为在此项目中数据是放在本地磁盘的,所有就有两种放数据的途径,一种是直接通过spout接受本地数据发送到任务中,另一种是先把文件数目进行整理(缩小)放到hdfs系统,让后通过spout读取hdfs里面的数据,后来实际表明前一种更加适合(后一种受到了mapreduce的影响),现在提一下后一种遇到的问题,后一种的话是spout发射完一个文件的数据以后一定要删除掉(不然会一直发射),但是这样子就没有一个有效的方式来判断是否已经发送完成,在这里花了很多时间,常常导致数据还没有发送完成就删掉了。
并且在复制文件到hdfs的过程中spout会一直从不断增加的数据中获取(后果可想而知)。
文件输出路径同样遇到了上诉的问题,看来收到mapreduce的模式影响很大,一种是直接输出到本地磁盘,另一种是输出到Hdfs里面,这里选择后者就更加合适了,因为如果是在集群下运行程序的话,那么spout和bolt任务是随机分配的,并无法指定那个节点来运行写文件的bolt,这样子很可能后续代码需要获取的是主节点的数据,结果数据却被写到了另一个从节点,还要判断那个节点的数据是否已经写完,文件传输过程,而hdfs就不一样了,文件只要写到hdfs以后从任何一个节点都可以读取上面的数据。另外在判断文件是否已经传输完毕使用了判断文件大小的方法,以半秒钟为间隔获取文件的大小,当相邻文件的大小不在变化则表明数据已经被处理完毕,可以进行接下来的运算。
2bolt输出数据到hdfs里面遇到的问题
这个问题也困扰了很久,因为bolt是一行行输出的数据,如果写入到hdfs里面的话就要不断的新建文件-写入文件-关闭写入流,这里就会遇到一个问题,每次新建文件都会导致之前的数据被删掉,然后我goole了一下bolt写数据到hdfs的方法,那里也没有提供往数据的末尾继续添加的append方法,但是却意外的发现了官方提供的一个第三方jar包storm-hdfs-0.9.6(下载的时候一定要和storm版本号一致,这个方法是0.9.3以后出现的),他专门提供了往hdfs写文件的方法,并提供了丰富的参数来供用户选择(包括当文件满足多大以后新建一个文件继续写入,已经多长时间写入一次数据,每一行以什么为数据的分割符,输出文件的格式等)。因为我的需求是这一次运算要把上一次运算的结果文件都删掉,所以我以10m为文件的最大限度,下一次运算时候只保留上一次文件的最小的数据(必须保留上一次运行最后新建的文件,不然会报错)。
3本地调试可以但是放到集群就报找不到类的问题,这个问题百分十九十九都是缺少jar包导致,要保证每个子节点对应的路径下面都有工程所需要的jar包。随意maven是个很好的选择。
Storm学习中遇到的问题整理的更多相关文章
- storm学习路线指南
关于对storm的介绍已经有很多了,我这里不做过多的介绍,我介绍一下我自己的学习路线,希望能帮助一些造轮子的同学走一些捷径,毕竟我也是站在前人总结整理的基础上学习了,如果有不足之处,还请大家不要喷我. ...
- 有关JAVA基础学习中的集合讨论
很高兴能在这里认识大家,我也是刚刚接触后端开发的学习者,相信很多朋友在学习中都会遇到很多头疼的问题,希望我们都能够把问题分享出来,把自己的学习思路整理出来,我们一起探讨一起成长. 今天我 ...
- Storm学习笔记 - 消息容错机制
Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...
- Storm学习笔记 - Storm初识
Storm学习笔记 - Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流. 2. Storm的特点 高性能,低延迟. 分布式:可解决数据量大 ...
- 深度学习中dropout策略的理解
现在有空整理一下关于深度学习中怎么加入dropout方法来防止测试过程的过拟合现象. 首先了解一下dropout的实现原理: 这些理论的解释在百度上有很多.... 这里重点记录一下怎么实现这一技术 参 ...
- golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...
- TensorFlow学习笔记——深层神经网络的整理
维基百科对深度学习的精确定义为“一类通过多层非线性变换对高复杂性数据建模算法的合集”.因为深层神经网络是实现“多层非线性变换”最常用的一种方法,所以在实际中可以认为深度学习就是深度神经网络的代名词.从 ...
- zz深度学习中的注意力模型
中间表示: C -> C1.C2.C3 i:target -> IT j: source -> JS sim(Query, Key) -> Value Key:h_j,类似某种 ...
- 模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理、分类及应用
模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理.分类及应用 lqfarmer 深度学习研究员.欢迎扫描头像二维码,获取更多精彩内容. 946 人赞同了该文章 Atte ...
随机推荐
- 【bzoj3488】[ONTAK2010]Highways DFS序+树上倍增+树状数组
题目描述 一棵n个点的树,给定m条路径,q次询问包含一条路径的给定路径的个数+1 输入 The first line of input contains a single integer N(1< ...
- [洛谷P2568]GCD
题目大意:给你$n(1\leqslant n\leqslant 10^7)$,求$\displaystyle\sum\limits_{x=1}^n\displaystyle\sum\limits_{y ...
- BZOJ3242 [Noi2013]快餐店 【环套树 + 单调队列dp】
题目链接 BZOJ3242 题解 题意很清楚,找一点使得最远点最近 如果是一棵树,就是直径中点 现在套上了一个环,我们把环单独拿出来 先求出环上每个点外向树直径更新答案,并同时求出环上每个点外向的最远 ...
- yum命令Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
yum命令Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 博客分类: linux 三种解决方案 我采取第三种方案解决的 第一种: linu ...
- maven pom继承与聚合
一.POM聚合模块: 在分布式架构,分模块化开发中,每个某块可能都是一个单独的maven项目,能够独立的进行项目构架,当模块比较多时,可以使用maven聚合聚合项目来简化maven构建,一次构建多个项 ...
- More on understanding sort_buffer_size
There have been a few posts by Sheeri and Baron today on the MySQL sort_buffer_size variable. I want ...
- [fzu 2271]不改变任意两点最短路至多删的边数
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2271 题目中说每条边的边权都是[1,10]之间的整数,这个条件非常关键!以后一定要好好读题啊…… 做10次循环 ...
- hive连接数
使用hive分析日志作业很多的时候,需要修改mysql的默认连接数 修改方法 打开/etc/my.cnf文件 在[mysqld] 中添加 max_connections=1000 重启mysql ...
- 前端面试:js闭包,为什么要使用闭包
要理解闭包,首先理解javascript特殊的变量作用域,变量的作用于无非就是两种:全局变量,局部变量. javascript语言的特殊处就是函数内部可以读取全局变量. 1.如何从外部读取局部变量? ...
- javascript继承有5种实现方式
1.对象冒充 function Parent(username){ this.username = username; this.hello = function(){ alert(this.user ...