我寫了一個Spark應用程序,讀取一些CSV文件(〜5-10 GB),轉換數據並將數據轉換爲HFile。數據從HDFS中讀取並保存到HDFS中。Spark將不會在紗線簇模式下運行最後的`saveAsNewAPIHadoopFile`方法
當我在yarn-client
模式下運行應用程序時,似乎一切正常。
但是當我嘗試運行它作爲yarn-cluster
應用程序時,該過程似乎不運行最終saveAsNewAPIHadoopFile
行動對我的轉換和準備保存的RDD!
這裏是我的星火UI,在這裏你可以看到所有其他作業的處理的快照:
以及相應階段:
這裏我的應用程序的最後一步,其中調用saveAsNewAPIHadoopFile
方法:
JavaPairRDD<ImmutableBytesWritable, KeyValue> cells = ...
try {
Connection c = HBaseKerberos.createHBaseConnectionKerberized("userpricipal", "/etc/security/keytabs/user.keytab");
Configuration baseConf = c.getConfiguration();
baseConf.set("hbase.zookeeper.quorum", HBASE_HOST);
baseConf.set("zookeeper.znode.parent", "/hbase-secure");
Job job = Job.getInstance(baseConf, "Test Bulk Load");
HTable table = new HTable(baseConf, "map_data");
HBaseAdmin admin = new HBaseAdmin(baseConf);
HFileOutputFormat2.configureIncrementalLoad(job, table);
Configuration conf = job.getConfiguration();
cells.saveAsNewAPIHadoopFile(outputPath, ImmutableBytesWritable.class, KeyValue.class, HFileOutputFormat2.class, conf);
System.out.println("Finished!!!!!");
} catch (IOException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
我通過spark-submit --master yarn --deploy-mode cluster --class sparkhbase.BulkLoadAsKeyValue3 --driver-cores 8 --driver-memory 11g --executor-cores 4 --executor-memory 9g /home/myuser/app.jar
當我看着我的HDFS的輸出目錄,它仍然是空的運行appliaction!我在HDP 2.5平臺中使用Spark 1.6.3。
所以我有兩個問題在這裏:從哪裏來的(可能是內存問題)這種行爲?紗線客戶和紗線集羣模式之間有什麼區別(我還沒有理解,還有文檔不清楚)?謝謝你的幫助!
但Spark UI顯示其他作業和階段,我可以通過x/y進度條跟蹤它們的狀態,並且我的YARN資源管理器UI還會在運行時顯示保留的資源。 –
感謝您對羣集和客戶端模式的解釋,非常好理解! –
您能否提供您工作處於運行狀態的紗線用戶界面的快照。 您是否看到工作日誌? –