在外部EC2上运行Zeppelin以连接到Amazon EMR

时间:2018-08-17 05:25:15

标签: amazon-ec2 amazon-emr apache-zeppelin

我想分享一下我在EC2上设置齐柏林飞艇服务器并将其连接到EMR以利用其计算能力的经验。

Zeppelin 0.7.3与spark 2.3.0不兼容,尽管通过向导选项设置EMR时,可以将两者同时使用。在这里,我想下载并安装zeppelin 0.7.3和spark 2.2.1,以便能够将其连接到EMR 5.11.0。

此链接中记录了主要步骤: Running an External Zeppelin Instance using S3 Backed Notebooks with Spark on Amazon EMR

但是,本教程适用于较旧版本的齐柏林飞艇和spark,它可以正常工作,但是当涉及到较新版本的spark和齐柏林飞艇时,会有些棘手。我尝试对zeppelin 0.7.3和spark 2.2.1遵循相同的步骤,但是当我在zeppelin控制台中尝试sc.version时,我经常遇到以下错误:

java.lang.NullPointerException
at org.apache.zeppelin.spark.Utils.invokeMethod(Utils.java:38)
at org.apache.zeppelin.spark.Utils.invokeMethod(Utils.java:33)
at org.apache.zeppelin.spark.SparkInterpreter.createSparkContext_2(SparkInterpreter.java:398)
at org.apache.zeppelin.spark.SparkInterpreter.createSparkContext(SparkInterpreter.java:387)
at org.apache.zeppelin.spark.SparkInterpreter.getSparkContext(SparkInterpreter.java:146)
at org.apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.java:843)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:70)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:491)
at org.apache.zeppelin.scheduler.Job.run(Job.java:175)
at org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:139)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

1 个答案:

答案 0 :(得分:1)

我花了几天的时间找到工作。解决方案是在zeppelin-env.sh文件中添加以下几行:

export SPARK_HOME=/home/ec2-user/spark
export HADOOP_CONF_DIR=/home/ec2-user/hadoopconf
export MASTER=yarn
export HADOOP_USER_NAME=hdfs

尤其是最后一行是技巧,它定义了齐柏林飞艇在其下访问EMR上的hadoop的用户。

齐柏林飞艇0.8.0和星火2.3.0的情况相同。

我希望这对某人有用! :)