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 ...
随机推荐
- Hiberante可配置参数
###################### ### Query Language ### ###################### ## define query language consta ...
- mac 倍速播放
Mac的倍速播放,使用工具播放是quick time player,使用方式是,按住 “option” + “>>” 即可调整倍数:
- THUSC2014酱油记
Day0: 坐飞机到北京,然后报到...跟jason_yu分到一个房间,刚好可以蹭点RP.发现房间460RMB/晚,但再带一份早餐就500RMB,难道早餐是40RMB么...在一家川菜馆吃的午晚餐,感 ...
- css实现九宫格图片自适应布局
我之前写九宫格自适应布局的时候,每个格子是使用媒体查询器(@media)或者js动态设置css,根据不同的手机屏幕宽度,适配不同手机,但是这样有个很大的缺点,那就是移动端的屏幕尺寸太多了,就得写很多代 ...
- supervisor提高nodejs调试效率
1.NodeJS环境安装 2.安装supervisor npm install supervisor -g (表示安装到全局路径下) 开发nodejs程序,调试的时候,无论你修改了代码的哪一部分,都 ...
- [洛谷P1074] 靶形数独
洛谷题目链接:靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博 ...
- 【洛谷 P2515】 [HAOI2010]软件安装 (缩点+树形背包)
题目链接 看到代价和价值这两个关键词,肯定是首先要想到背包的. 但是图中并没有说这是棵树,所以先要\(Tarjan\)缩点,然后就是选课了,跑一遍树形背包就好了. 注意:缩点后应该是一个森林,应该用一 ...
- xampp命令
XAMPP命令安装 XAMPPtar xvfz xampp-linux-1.6.4.tar.gz -C /opt启动 XAMPP/opt/lampp/lampp start停止 XAMPP/opt/l ...
- 会话Cookie
Cookie分为会话Cookie和本地Cookie两种 之前一直理解的是会话Cookie不在本地文件存储,只存储于内存,而本地Cookie因为设置了expire过期时间需要在本地存储 下面是白帽子讲W ...
- (十四)git操作
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000