Zeppelin源码编译
(英:http://zeppelin.apache.org/docs/snapshot/install/build.html)
编译Docker源码,需要预先安装下面的依赖软件:
Name | Value |
---|---|
Git | (Any Version) |
Maven | 3.1.x or higher |
JDK | 1.7 |
一、编译步骤
如果还没有安装Git和Maven, 参考后面的编译要求一节安装。然后按照下面的步骤进行:
1. 复制源码
git clone https://github.com/apache/zeppelin.git
2. 编译源码
执行下面的maven命令进行编译:
mvn clean package -DskipTests [Options]
有的版本编译不成功,改用install就可以:mvn install -Pbuild-distr -Drat.skip -DskipTests
参数“-Drat.skip -DskipTests”主要是因为rat和一些测试暂时编译通不过。
>>使用代理设置
如果使用代理,加上下面的选项:
-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>
或者使用下面方法设置参数(sock5代理-ssh tunnel):
set MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
如果使用http代理,改为:
set MAVEN_OPTS="-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=$PORT"
使用https带来的话,将http改为https即可。
如果不确定使用的参数,使用下面的参数创建官方版的安装包:
# update all pom.xml to use scala 2.11
./dev/change_scala_version.sh 2.11
# build zeppelin with all interpreters and include latest version of Apache spark support for local mode.
mvn clean package -DskipTests -Pspark-2.0 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pr -Pscala-2.11
3. 启动Zeppelin
编译成功后,直接启动:
./bin/zeppelin-daemon.sh start
更多编译选项查看后面的内容。如果使用网络代理, 按照 代理设置 的说明进行。
如果愿意为本项目作出贡献,请参考:Contributing to Apache Zeppelin (Code) 和 Contributing to Apache Zeppelin (Website).
二、编译选项
Spark Interpreter
编译支持特定版本的Spark、Hadoop和特行,通过指定参数实现。指定下面的参数:
-Pspark-[version]
指定Spark的特定版本,可用的设置参数包括:
-Pspark-2.1
-Pspark-2.0
-Pspark-1.6
-Pspark-1.5
-Pspark-1.4
-Pcassandra-spark-1.5
-Pcassandra-spark-1.4
-Pcassandra-spark-1.3
-Pcassandra-spark-1.2
-Pcassandra-spark-1.1
还可以指定小版本号,如 -Dspark.version=x.x.x
-Phadoop-[version]
指定hadoop的祝版本号,可用参数包括:
-Phadoop-0.23
-Phadoop-1
-Phadoop-2.2
-Phadoop-2.3
-Phadoop-2.4
-Phadoop-2.6
-Phadoop-2.7
小版本号指定 -Dhadoop.version=x.x.x
-Pscala-[version] (optional)
设置 scala 版本 (缺省 2.10) ,可用参数包括:
-Pscala-2.10
-Pscala-2.11
-Pyarn
(optional)
开启 YARN 的 local mode支持
YARN for local mode is not supported for Spark v1.5.0 or higher. Set
SPARK_HOME
instead.
-Ppyspark
(optional)
开启 PySpark 支持 local mode.
-Pr
(optional)
-Psparkr
(optional)
另一个 R 支持,通过SparkR 整合,支持local mode。
-Pvendor-repo
(optional)
开启第三方软件库 (cloudera)
-Pmapr[version]
(optional)
对于 MapR Hadoop 分发版, 这些参数将处理 Hadoop 版本。 像MapR 允许不同的Spark安装,你可以指定需要安装那一个Spark版本(-Pspark-1.6
, -Pspark-2.0
, etc.) 。 正确的Maven artifacts 对应的 MapR 在 http://doc.mapr.com。
可用参数包括:
-Pmapr3
-Pmapr40
-Pmapr41
-Pmapr50
-Pmapr51
-Pexamples (optional)
编译zeppelin-examples 目录下的例子。
编译命令示例
下面是一些编译指令的示例:
# build with spark-2.1, scala-2.11
./dev/change_scala_version.sh 2.11
mvn clean package -Pspark-2.1 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pscala-2.11 -DskipTests
# build with spark-2.0, scala-2.11
./dev/change_scala_version.sh 2.11
mvn clean package -Pspark-2.0 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pscala-2.11 -DskipTests
# build with spark-1.6, scala-2.10
mvn clean package -Pspark-1.6 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -DskipTests
# spark-cassandra integration
mvn clean package -Pcassandra-spark-1.5 -Dhadoop.version=2.6.0 -Phadoop-2.6 -DskipTests -DskipTests
# with CDH
mvn clean package -Pspark-1.5 -Dhadoop.version=2.6.0-cdh5.5.0 -Phadoop-2.6 -Pvendor-repo -DskipTests
# with MapR
mvn clean package -Pspark-1.5 -Pmapr50 -DskipTests
Ignite Interpreter
mvn clean package -Dignite.version=1.8.0 -DskipTests
Scalding Interpreter
mvn clean package -Pscalding -DskipTests
三、Build 要求
安装依赖软件
如果相关依赖软件还没有的话,就先安装一下。(不同的操作系统会有不同,下面以 Ubuntu 为例)
sudo apt-get update
sudo apt-get install git
sudo apt-get install openjdk-7-jdk
sudo apt-get install npm
sudo apt-get install libfontconfig
安装 maven
wget http://www.eu.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
sudo tar -zxf apache-maven-3.3.9-bin.tar.gz -C /usr/local/
sudo ln -s /usr/local/apache-maven-3.3.9/bin/mvn /usr/local/bin/mvn
注意:
- 确保node安装,测试 node --version
- 确保 maven 版本3.1.x 或以上,测试 mvn -version
- 配置maven 使用更多的内存 export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=1024m"
四、代理设置(optional)
如果你的网络在代理之后, 你需要配置maven和npm使用代理穿越访问服务。
首先,配置 maven。修改 ~/.m2/settings.xml
.
<settings>
<proxies>
<proxy>
<id>proxy-http</id>
<active>true</active>
<protocol>http</protocol>
<host>localhost</host>
<port>3128</port>
<!-- <username>usr</username>
<password>pwd</password> -->
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
<proxy>
<id>proxy-https</id>
<active>true</active>
<protocol>https</protocol>
<host>localhost</host>
<port>3128</port>
<!-- <username>usr</username>
<password>pwd</password> -->
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
</proxies>
</settings>
然后, 配置 npm:
npm config set proxy http://localhost:3128
npm config set https-proxy http://localhost:3128
npm config set registry "http://registry.npmjs.org/"
npm config set strict-ssl false
配置 git,同样办法:
git config --global http.proxy http://localhost:3128
git config --global https.proxy http://localhost:3128
git config --global url."http://".insteadOf git://
设置bower proxy,打开/zeppelin-web下的.bowerrc文件,加入下面的内容:
"proxy" : "http://localhost:9999",
"https-proxy" : "http://localhost:9999",
"strict-ssl": false
清除, 设置 active false
在Maven settings.xml
中,并运行命令:
npm config rm proxy
npm config rm https-proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global --unset url."http://".insteadOf
注意:
- 如果在 NTLM 代理后使用 Cntlm Authentication Proxy.
- 替换 localhost:3128
,使用标准的模式 http://user:pwd@host:port
.
五、打包-Package
对最终的分发版打包,包括压缩文档:
mvn clean package -Pbuild-distr
针对特定参数构建分发版,运行:
mvn clean package -Pbuild-distr -Pspark-1.5 -Phadoop-2.4 -Pyarn -Ppyspark
这里的 -Pspark-1.5 -Phadoop-2.4 -Pyarn -Ppyspark
can 可以根据Spark的版本予以调整。产生出的包在 zeppelin-distribution/target
目录下。
运行端到端测试:
Zeppelin 带有一系列的测试,驱动 headless selenium browser。
# assumes zeppelin-server running on localhost:8080 (use -Durl=.. to override)
mvn verify
# or take care of starting/stoping zeppelin-server from packaged zeppelin-distribuion/target
mvn verify -P using-packaged-distr