spark、HDFS在工业上一般怎么使用?
系统之前使用关系型数据库,现在业务数据量大,有一张实时监测的数据表,每天大几百万条数据,处理能力有限,所以打算用mongodb或spark,但因为不熟悉spark,最近一直在研究学习,有很多疑问,请前辈指教。
HDFS
1、数据一般以什么样的形式保存在HDFS上?文本文件?
2、一个数据文件大小如果小于HDFS的block大小的话,是不是就不会分割成多块分散到其他DataNode?
3、HDFS是不是更适合保存比较大的文件?
4、在工业一般怎么使用spark?可否举个详细的具体的例子?
spark
1、如开头所述,每天大几百万条的监测数据我想使用spark处理,以什么样的形式保存数据到HDFS上?
2、如果使用mongodb保存监测数据,再使用spark sql处理,是不是就不用HDFS了?
3、spark链接mongodb,数据的提取传输是不是又成为瓶颈了?
4、spark使用nosql,除了mongodb,还有其他的推荐吗?各适合什么业务场景?
5、程序开发好之后(以java maven为例),一般采用何总方式提交任务到spark集群(非local模式)?【打包->上传到HDFS->调用spark-submit脚本】都是这样吗?岂不是很麻烦?
6、想本地起程序链接spark集群,调试程序,同步接收计算结果,是不可能吗?计算结果一般都是再保存的方式异步调用吗?
小弟菜鸟,问题各种多,还望能者多劳,知无不尽,多谢分享~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
以下是我的理解,欢迎指正
HDFS
1、数据一般以什么样的形式保存在HDFS上?文本文件?
2、一个数据文件大小如果小于HDFS的block大小的话,是不是就不会分割成多块分散到其他DataNode?
3、HDFS是不是更适合保存比较大的文件?
4、在工业一般怎么使用spark?可否举个详细的具体的例子?
spark
1、如开头所述,每天大几百万条的监测数据我想使用spark处理,以什么样的形式保存数据到HDFS上?
-- HDFS好像没有限定形式,就是一个大Array,顺序存放,木有索引
2、如果使用mongodb保存监测数据,再使用spark sql处理,是不是就不用HDFS了?
-- 每天几百万数据,每月就是上亿数据,mongodb也是完全没问题的,HDFS完全可以被MongoDB所取代,而且MongoDB中还可以对数据建立索引,省得每次都全部扫描一遍了。MongoDB官方就有个Mongo Spark Connector 连接器来专门对接Spark.
3、spark链接mongodb,数据的提取传输是不是又成为瓶颈了?
-- 使用MongoDB + spark,最重要的是“条件下推”,即尽量利用MongoDB的索引功能。比如你们的监测数据可以对时间戳建立索引,然后数据提取的时候一定要让MongoDB来处理时间范围的筛选条件,而不是到了spark里面才进行筛选。这样尽量减少数据传输的开销。
4、spark使用nosql,除了mongodb,还有其他的推荐吗?各适合什么业务场景?
-- 对于监测数据,肯定要按时间来排列吧,可以考虑下InfluxDB而非MongoDB. InfluxDB对于时间序列的数据有优化。 其他很多NoSQL也有和spark对接的connector,你可以自己搜下。
5、程序开发好之后(以java maven为例),一般采用何总方式提交任务到spark集群(非local模式)?【打包->上传到HDFS->调用spark-submit脚本】都是这样吗?岂不是很麻烦?
-- Java就是这么麻烦,人生苦短,不如Python
6、想本地起程序链接spark集群,调试程序,同步接收计算结果,是不可能吗?计算结果一般都是再保存的方式异步调用吗?
-- 本地调试一般用小数据量的伪集群吧。spark本身可以直接返回计算结果的呀,但是线上数据那么多,得等多久呀。