/ / Hive on Spark: Nie udało się stworzyć klienta iskrzenia - hadoop, apache-spark, ula, przędza

Hive on Spark: Nie udało się stworzyć iskrownika - hadoop, apache-iskry, ula, przędzy

Próbuję zrobić Hive 2.1.1 na Spark 2.1.0 pracy na jednym wystąpieniu.Nie jestem pewny, że to właściwe podejście.Teraz mam tylko jedną instancję, więc nie mogę zbudować klastra.

Po uruchomieniu dowolnego kwerendy wstawiania w gałęzi, pojawia się błąd:

hive> insert into mcus (id, name) values (1, "ARM");
Query ID = server_20170223121333_416506b4-13ba-45a4-a0a2-8417b187e8cc
Total jobs = 1
Launching Job 1 out of 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapreduce.job.reduces=<number>
Using Spark"s default log4j profile: org/apache/spark/log4j-defaults.properties
Failed to execute spark task, with exception "org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)"
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask

Obawiam się, że nie skonfigurowałem się poprawnie, ponieważ nie mogłem znaleźć żadnych logów Spark hdfs dfs -ls /spark/eventlog. Oto część mojego pliku hive-site.xml, która jest powiązana ze Spark and Yarn:

<property>
<name>hive.exec.stagingdir</name>
<value>/tmp/hive-staging</value>
</property>

<property>
<name>hive.fetch.task.conversion</name>
<value>more</value>
</property>

<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>

<property>
<name>spark.master</name>
<value>spark://ThinkPad-W550s-Lab:7077</value>
</property>

<property>
<name>spark.eventLog.enabled</name>
<value>true</value>
</property>

<property>
<name>spark.eventLog.dir</name>
<value>hdfs://localhost:8020/spark/eventlog</value>
</property>
<property>
<name>spark.executor.memory</name>
<value>2g</value>
</property>

<property>
<name>spark.serializer</name>
<value>org.apache.spark.serializer.KryoSerializer</value>
</property>

<property>
<name>spark.home</name>
<value>/home/server/spark</value>
</property>

<property>
<name>spark.yarn.jar</name>
<value>hdfs://localhost:8020/spark-jars/*</value>
</property>

1) Ponieważ nie skonfigurowałem fs.default.name wartości w hadoop, czy mogę po prostu użyć hdfs://localhost:8020 jako ścieżkę do systemu plików w pliku konfiguracyjnym lub zmienić port na 9000 (pojawia się ten sam błąd przy zmianie 8020 na 9000)?

wprowadź opis obrazu tutaj

2) Rozpoczynam iskrę przez start-master.sh i start-slave.sh spark://ThinkPad-W550s-Lab:7077, czy to jest poprawne?

3) Zgodnie z tym wątek, jak mogę sprawdzić wartość Spark Executor Memory + Overhead w celu ustawienia wartości yarn.scheduler.maximum-allocation-mb i yarn.nodemanager.resource.memory-mb?

Wartości yarn.scheduler.maximum-allocation-mb i yarn.nodemanager.resource.memory-mb są znacznie większe niż spark.executor.memory.

4) Jak mogę naprawić Failed to create spark client błąd? Wielkie dzięki!

Odpowiedzi:

0 dla odpowiedzi № 1

W przypadku trzeciego pytania możesz znaleźć wartościyarn.scheduler.maximum-allocation-mb i yarn.nodemanager.resource.memory-mb properites w pliku yarn-default.xml. Alternatywnie, jeśli masz dostęp do menedżera zasobów przędzy, możesz znaleźć wartości w menu Narzędzia-> Konfiguracja (xml)


0 dla odpowiedzi nr 2

W moim przypadku ustawienie spark.yarn.appMasterEnv.JAVA_HOME właściwość była problemem.

naprawić...

  <property>
<name>spark.executorEnv.JAVA_HOME</name>
<value>${HADOOP CLUSTER JDK PATH}</value>
<description>Must be hadoop cluster jdk PATH.</description>
</property>

<property>
<name>spark.yarn.appMasterEnv.JAVA_HOME</name>
<value>${HADOOP CLUSTER JDK PATH}</value>
<description>Must be hadoop cluster jdk PATH.</description>
</property>