Flume Push数据到spark streaming或者接收Spark streaming的poll数据时实际运行程序总结

来源:互联网 发布:08总决赛皮尔斯数据 编辑:程序博客网 时间:2024/04/24 07:48

有兴趣想学习国内整套Spark+Spark Streaming+Machine learning最顶级课程的,可加我qq  471186150。共享视频,性价比超高!

1:如果windows的eclipse,集群运行模式,只能maven打jar包的方式,放到集群上通过脚本运行,如果jar包没打进去或者不是maven的方式打出的jar包,可以把jar包放到集群spark的lib目录下,在脚本中通过--jars   /usr/local/spark/spark_1.6.0/lib/xxx.jar的方式指定一个jar包,可是可能还是会有问题,需要攻破(多个jar包要注意:Class-Path:后需要一个空格,多个jar包间需要一个空格,且一行字符不能太多,换行时需要在jar包前面加一个空格。)

2:如果是windows下的IDEA,scala编写代码,可以导出jar包的方式,来跑程序,方便很多。

3:如果windows的eclipse,本地运行模式,代码中host,不能写master的host,只能写“localhost”,要借助本地tcp测试工具,Tcpudp_1.1.rar,启动这个程序,监控9999端口,在下面的发送区里面随时准备发送数据,启动java本地程序的后,在发送区点击发送按钮即可。但是,这时和集群和Flume都没关系,数据是从发送区里面发送的,不用Flume监控,所以代码里面不能有FlumeUtils之类用到Flueme的代码。

4:安装Linux版本的eclipse,直接在master上跑eclipse中的程序,如果端口没打开,用

nc -lk 9999
打开9999端口即可,不用jar包,直接启动集群,在Flume的bin目录下,启动Flume,运行eclipse中的代码,往监控的Flume目录中放入数据即可。如果又问题,把host换成数据节点worker试下,同时在Flume的配置文件中也要修改对应配置内容。

以上是基于对87,88讲实战跑通程序的总结

5:

2个G的内存如何处理500G的数据?

内存的大小和能处理的数据大小没有必然的联系。可以设置多个partition,每个partition的数据在现有的内存中能够处理就可以了。只是速度比较慢而已.

注意的是:需要修改每个executor默认的收集大小(默认1G),然后设置partition数目,使得每个机器上同时处理的partition内容不会产生OOM,然后再根据业务需求进行具体的优化,
例如需要shuffle的话需要在每个Task的运算结果进行持久化到磁盘,或者对结果进行转化,压缩等操作,防止shuffle过程中数据太多导致OOM

Executor不会将全部内存用于缓存,理论上只有66%用于RDD缓存。当可用于缓存的内存容量小于需要缓存的RDD时,将会使用磁盘缓存,即部分内存缓存、部分磁盘缓存。当数据处理需要用到缓存在磁盘上的数据时,需要重新装载到内存,这样就会降低计算效率。


1 0