今天跑第一spark streaming程序读取HDFS文件,碰到很多坑:
1.HDFS配置的是高可用,在spark程序内设置HDFS文件路径的时候指向的是某个Namenode的地址,会报异常org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyException 意思就是访问的standby的NM节点,应该访问Active的节点。
JavaDStream lines = jsc1.textFileStream("hdfs://*.*.*.*:9000/library/SparkStreaming/Data");
换成:ns1不加端口号,就避免这个异常
JavaDStream lines = jsc1.textFileStream("hdfs://ns1/library/SparkStreaming/Data");
还有一种原因,是在spark的配置文件中,指定了HDFS某个NM的实际IP地址,需要将IP地址改成ns1
2.spark提交程序的driver端要用到的资源非常多,不建议将driver与master放到一台机器上运行,今天在程序正常的情况下,一直报OOM异常,最后出现JVM无法正常运行的情况