使用要求
- 下载Git或者一个能够支持Git的IDE
- 下载安装Apache Maven 3.2.5 or later
- 安装Java JDK (not just JRE) 8 or later
必须确保以上工具已经安装在你的电脑上了
编译
将Oryx源码下载到本地目录,并且去编译构建:
git clone https://github.com/OryxProject/oryx.git oryx cd oryx mvn -DskipTests package //使用maven方法来进行打包处理
以上的操作将会生成以下三个二进制文件:
- Batch Layer: deploy/oryx-batch/target/oryx-batch-2.6.0.jar
- Speed Layer: deploy/oryx-speed/target/oryx-speed-2.6.0.jar
- Serving Layer: deploy/oryx-serving/target/oryx-serving-2.6.0.jar
平台
默认的编译是包含基于Spark MLlib和其他库的ML应用,在你自己的app上只构建lambda层和ML层,不能这样写-P!app-tier.,因为!是被保留的,所以你应该这样写:-P\!app-tier.
测试
mvn test 运行所有单元测试. mvn verify 将会运行所有的测试,可能花费更多的时间
模块映射
主要模块以及它们层与层的关系:
Serving | Speed | Batch | |
---|---|---|---|
Binary | oryx-serving | oryx-speed | oryx-batch |
App | oryx-app-serving | oryx-app-mllib oryx-app | oryx-app-mllib oryx-app |
ML | oryx-ml | oryx-ml | |
Lambda | oryx-lambda-serving | oryx-lambda | oryx-lambda |
支撑类的模块 oryx-common, oryx-app-common, oryx-api, and oryx-app-api 是没有被列出来。
搭建一个Oryx应用
Oryx是一个实现了批量、速度、推荐服务逻辑、聚类和分类的应用层,然而,任何一个实现都是可以基于Oryx的,可以进行混合或者关联使用。
创建一个应用
当你创建一个传统的批量、速度或者服务层应用,其实就是相当于实现了com.cloudera.oryx.api中一些JAVA接口或者是Scala的特性。
Java | Scala | |
---|---|---|
Batch | batch.BatchLayerUpdate | batch.ScalaBatchLayerUpdate |
Speed | speed.SpeedModelManager | speed.ScalaSpeedModelManager |
Serving | serving.ServingModelManager | serving.ScalaServingModelManager |
com.cloudera.oryx.api 中也包含了主要的支持类和接口
构建一个应用
为了能够在你的应用中使用这些接口/特性,需要添加一个依赖包com.cloudera.oryx:oryx-api。
在maven中,可以直接添加一个依赖:
<dependencies> <dependency> <groupId>com.cloudera.oryx</groupId> <artifactId>oryx-api</artifactId> <scope>provided</scope> <version>2.6.0</version> </dependency> </dependencies>
在example/中可以看到一个小项目“word count”,这个应用是对多行中的单词进行分割并统计不同单词的个数
编译代码并创建只包含实现的JAR文件,以及任何支持第三方代码的文件。使用Maven,这发生在MVN包。
编译Word Count这个例子
使用mvn构建整个项目,产生的jar是放在target/目录下。
重新编译或者打包那个word count例子:
cd app/example mvn package
注意,除非你一开始进行了mvn ... install,否则的话它不会从头进行构建打包
定制一个Oryx应用
当部署一个已经打好包的Oryx应用,正常情况下,会为了特定应用场景的需要会添加一些额外的实现。
<dependencies> <dependency> <groupId>com.cloudera.oryx</groupId> <artifactId>oryx-app-api</artifactId> <scope>provided</scope> <version>2.6.0</version> </dependency> </dependencies>
部署一个应用
复制结果JAR包(myapp.jar)到含有Oryx二进制jar包的文件目录,这样它便会运行起来。
更改Oryx .conf文件为了能够用于你的批量、速度或者服务实现的类。
当你运行 Batch / Speed / Serving Layers, 把--app-jar myapp.jar 加到oryx-run.sh 的命令行中。
部署Word Count例子
如果你将构建word count这个应用,你可以通过复制和改编wordcount-example.conf 配置文件来使它运行。
./oryx-run.sh batch --conf wordcount-example.conf --app-jar example-2.6.0.jar
对于speed和serving layers是同样的,输入输出,然后观察计数。
curl -X POST http://.../add/foo%20bar%20baz ... curl http://.../distinct {"foo":2,"bar":2,"baz":2}