2016-04-29 20 views
0

EDIT:Apache Spark Deployment Ausgabe (Cluster-Modus) mit Hive

Ich entwickle eine Spark-Anwendung, die eine Daten von den mehreren strukturierten Schemata liest und ich versuche, die Informationen aus diesen Schemata zu aggregieren . Meine Anwendung läuft gut, wenn ich sie lokal ausführe. Aber wenn ich es auf einem Cluster ausführe, habe ich Probleme mit den Konfigurationen (höchstwahrscheinlich mit hive-site.xml) oder mit den Argumenten für den Befehl submit. Ich habe nach den anderen verwandten Posts gesucht, konnte aber nicht die SPEZIFISCHE Lösung für mein Szenario finden. Ich habe erwähnt, welche Befehle ich ausprobiert habe und welche Fehler ich im Detail unten erhalten habe. Ich bin neu bei Spark und ich vermisse etwas Triviales, kann aber mehr Informationen liefern, um meine Frage zu unterstützen.

Ursprüngliche Frage:

Ich habe versucht, meine Funke Anwendung in einem 6-Knoten Hadoop-Cluster mit HDP2.3 Komponenten gebündelt zu laufen.

Hier sind Komponenteninformationen, die in der Annahme, die Lösungen für euch nützlich sein könnten:

Cluster Informationen: 6-Knoten-Cluster:

128GB RAM 24 Kern 8TB HDD

In der Anwendung verwendete Komponenten

HDP - 2,3

Funken - 1.3.1

$ hadoop Version:

Hadoop 2.7.1.2.3.0.0-2557 
Subversion [email protected]:hortonworks/hadoop.git -r 9f17d40a0f2046d217b2bff90ad6e2fc7e41f5e1 
Compiled by jenkins on 2015-07-14T13:08Z 
Compiled with protoc 2.5.0 
From source with checksum 54f9bbb4492f92975e84e390599b881d 

Szenario:

Ich versuche, die SparkContext zu verwenden und HiveContext in einer Weise, die Echtzeit-Anfrage des Funkens auf seiner Datenstruktur li voll zu nutzen ke Datenrahmen. Die Abhängigkeiten in meiner Anwendung verwendet werden:

<dependency> <!-- Spark dependency --> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.10</artifactId> 
     <version>1.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-sql_2.10</artifactId> 
     <version>1.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-hive_2.10</artifactId> 
     <version>1.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.databricks</groupId> 
     <artifactId>spark-csv_2.10</artifactId> 
     <version>1.4.0</version> 
    </dependency> 

Unterhalb der einreichen sind Befehle und die coresponding Fehlerprotokolle, die ich erhalte:

Senden Command1:

spark-submit --class working.path.to.Main \ 
    --master yarn \ 
    --deploy-mode cluster \ 
    --num-executors 17 \ 
    --executor-cores 8 \ 
    --executor-memory 25g \ 
    --driver-memory 25g \ 
    --num-executors 5 \ 
    application-with-all-dependencies.jar 

Fehler Log1:

User class threw exception: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient 

Befehl einreichen2:

spark-submit --class working.path.to.Main \ 
    --master yarn \ 
    --deploy-mode cluster \ 
    --num-executors 17 \ 
    --executor-cores 8 \ 
    --executor-memory 25g \ 
    --driver-memory 25g \ 
    --num-executors 5 \ 
    --files /etc/hive/conf/hive-site.xml \ 
    application-with-all-dependencies.jar 

Fehler Log2:

User class threw exception: java.lang.NumberFormatException: For input string: "5s" 

Da ich die administrativen Berechtigungen nicht habe, kann ich nicht die Konfiguration ändern.Nun, ich kann mich mit dem IT-Ingenieur in Verbindung setzen und die Änderungen vornehmen, aber ich suche nach der Lösung, die weniger Änderungen in den Konfigurationsdateien beinhaltet, wenn möglich!

Konfigurationsänderungen wurden vorgeschlagen here.

Dann habe ich versucht, verschiedene JAR-Dateien als Argumente übergeben, wie in anderen Diskussionsforen vorgeschlagen.

Command3 Senden:

spark-submit --class working.path.to.Main \ 
    --master yarn \ 
    --deploy-mode cluster \ 
    --num-executors 17 \ 
    --executor-cores 8 \ 
    --executor-memory 25g \ 
    --driver-memory 25g \ 
    --num-executors 5 \ 
    --jars /usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-api-jdo-3.2.6.jar,/usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-core-3.2.10.jar,/usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-rdbms-3.2.9.jar \ 
    --files /etc/hive/conf/hive-site.xml \ 
    application-with-all-dependencies.jar 

Fehler Log3:

User class threw exception: java.lang.NumberFormatException: For input string: "5s" 

ich nicht verstanden, was mit dem folgenden Befehl geschehen ist und nicht das Fehlerprotokoll analysieren konnte.

Command4 Senden:

spark-submit --class working.path.to.Main \ 
    --master yarn \ 
    --deploy-mode cluster \ 
    --num-executors 17 \ 
    --executor-cores 8 \ 
    --executor-memory 25g \ 
    --driver-memory 25g \ 
    --num-executors 5 \ 
    --jars /usr/hdp/2.3.0.0-2557/spark/lib/*.jar \ 
    --files /etc/hive/conf/hive-site.xml \ 
    application-with-all-dependencies.jar 

Log4 Senden:

Application application_1461686223085_0014 failed 2 times due to AM Container for appattempt_1461686223085_0014_000002 exited with exitCode: 10 
For more detailed output, check application tracking page:http://cluster-host:XXXX/cluster/app/application_1461686223085_0014Then, click on links to logs of each attempt. 
Diagnostics: Exception from container-launch. 
Container id: container_e10_1461686223085_0014_02_000001 
Exit code: 10 
Stack trace: ExitCodeException exitCode=10: 
at org.apache.hadoop.util.Shell.runCommand(Shell.java:545) 
at org.apache.hadoop.util.Shell.run(Shell.java:456) 
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722) 
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211) 
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) 
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Container exited with a non-zero exit code 10 
Failing this attempt. Failing the application. 

jede andere mögliche Optionen? Jede Art von Hilfe wird sehr geschätzt. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Vielen Dank.

+0

Was ist das eine Cocktailfrage? post bitte eine Frage pro Ausgabe! das ist inakzeptabel – eliasah

+0

Liebe @eliasah, ich verstehe meine Frage war abit lang. Aber wenn Sie sich die Organisation der Frage ansehen, versuche ich zu fragen, was mit meinem Submit-Befehl falsch ist, der diese Fehler verursacht, die mit der Hive-Konfiguration zusammenhängen. Ich denke, informativer zu sein, wenn man Fragen stellt, ist gut für die Leser, die ihnen helfen werden, das Szenario zu verstehen. Es tut mir leid, wenn es dir nicht gefallen hat, aber meine Absicht war es nicht, es zu einer Cocktailfrage zu machen. Nun, meine Frage wird immer noch die selbe sein, weil ich VERSUCHT habe und meine Antwort NICHT gefunden habe. – accssharma

+0

Sie hätten mir die passende Möglichkeit vorschlagen können, meine Frage vor der Abstimmung zu stellen, da ich keine Angst habe, meine Fehler zu verbessern, und die Absicht ist, die Lösung für die Probleme zu suchen, die ich nicht kenne. – accssharma

Antwort

0

Die Lösung, die in here erklärt wird, arbeitete für meinen Fall. Es gibt zwei Standorte, auf denen sich die Datei hive-site.xml befindet, die möglicherweise verwirrend ist. Verwenden Sie --files /usr/hdp/current/spark-client/conf/hive-site.xml anstelle von --files /etc/hive/conf/hive-site.xml. Ich musste die Gläser für meine Konfiguration nicht hinzufügen. Hoffe, das wird jemandem helfen, der mit dem ähnlichen Problem kämpft. Vielen Dank.