1,PredictionIO如果用直接下载的0.11.0-incubating版本,存在一个HDFS配置相关的BUG

执行pio status命令时会发生如下的错误:

-- ::, ERROR org.apache.predictionio.data.storage.Storage$ [main] - Error initializing storage client for source HDFS
java.io.IOException: No FileSystem for scheme: hdfs
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:)
at org.apache.hadoop.fs.FileSystem.access$(FileSystem.java:)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:)
at org.apache.predictionio.data.storage.hdfs.StorageClient.<init>(StorageClient.scala:)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:)
at java.lang.reflect.Constructor.newInstance(Constructor.java:)
at org.apache.predictionio.data.storage.Storage$.getClient(Storage.scala:)
at org.apache.predictionio.data.storage.Storage$.org$apache$predictionio$data$storage$Storage$$updateS2CM(Storage.scala:)
at org.apache.predictionio.data.storage.Storage$$anonfun$sourcesToClientMeta$.apply(Storage.scala:)
at org.apache.predictionio.data.storage.Storage$$anonfun$sourcesToClientMeta$.apply(Storage.scala:)
at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:)
at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:)
at org.apache.predictionio.data.storage.Storage$.sourcesToClientMeta(Storage.scala:)
at org.apache.predictionio.data.storage.Storage$.getDataObject(Storage.scala:)
at org.apache.predictionio.data.storage.Storage$.getDataObjectFromRepo(Storage.scala:)
at org.apache.predictionio.data.storage.Storage$.getModelDataModels(Storage.scala:)
at org.apache.predictionio.data.storage.Storage$.verifyAllDataObjects(Storage.scala:)
at org.apache.predictionio.tools.commands.Management$.status(Management.scala:)
at org.apache.predictionio.tools.console.Pio$.status(Pio.scala:)
at org.apache.predictionio.tools.console.Console$$anonfun$main$.apply(Console.scala:)
at org.apache.predictionio.tools.console.Console$$anonfun$main$.apply(Console.scala:)
at scala.Option.map(Option.scala:)
at org.apache.predictionio.tools.console.Console$.main(Console.scala:)
at org.apache.predictionio.tools.console.Console.main(Console.scala)
-- ::, ERROR org.apache.predictionio.tools.commands.Management$ [main] - Unable to connect to all storage backends successfully.

这是一个已知的代码错误 https://issues.apache.org/jira/browse/PIO-91

可以通过从github上下载最新源码自己编译来解决此问题。

2,编译PredictionIO源码的方式

根据PredictionIO的官方文档编译时,一定要要注意【准确】指定自己的环境中各组件的相应的版本号,例如下面这样。
   ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.1 -Delasticsearch.version=5.5.1 -Dhadoop.version=2.7.3
 
如果用的是ElasticSearch1.7.1版本,就应该是下面这样
   ./make-distribution.sh -Dscala.version=2.11.8 -Dspark.version=2.1.0 -Delasticsearch.version=1.7.1 -Dhadoop.version=2.7.2 

之所以把ElasticSearch版本拿出来说,是因为编译成功后,我们需要修改conf目录中的pio-env.sh配置文件,此时需要特别注意:

3,0.11.0-incubating版本对于ElasticSearch的版本支持问题

这个版本的PIO的代码中,有ElasticSearch1和ElasticSearch5两套支持代码。

而ElasticSearch2可能会使用ES5的代码,可能产生问题,例如使用了一些只有ES5中才有的type “keyword”。

所以0.11.0-incubating版本不建议配合ElasticSearch2使用。

同时要注意,不同版本的ES下,pio-env.sh的配置上可能会有少许差异,否则也会出问题

ES1的默认端口配置为9300

  PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=<some-elasticsearch-node>,<some-other-elasticsearch-node>,...

  PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,9300,9300

ES5的默认端口配置为9200

  PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=<some-elasticsearch-node>,<some-other-elasticsearch-node>,...

  PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9200,9200,9200

因为Universal Recommender中主要支持ElasticSearch1,所以我们最终决定使用ElasticSearch1。

PredictionIO+Universal Recommender快速开发部署推荐引擎的问题总结(1)的更多相关文章

  1. PredictionIO+Universal Recommender快速开发部署推荐引擎的问题总结(3)

    PredictionIO+Universal Recommender虽然可以帮助中小企业快速的搭建部署基于用户行为协同过滤的个性化推荐引擎,单纯从引擎层面来看,开发成本近乎于零,但仍然需要一些前提条件 ...

  2. PredictionIO+Universal Recommender快速开发部署推荐引擎的问题总结(2)

    1, 对Universal Recommender进行pio build成功,但是却提示No engine found Building and delpoying model [INFO] [Eng ...

  3. SNF快速开发平台--规则引擎整体介绍及使用说明书

    一.设计目标 a)规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b)能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c)运算速度快 ...

  4. SNF快速开发平台--规则引擎在程序当中如何调用

    规则定义完如何在程序当中进行使用呢? 其时很简单,只需要如下代码就可以调用程序: 规则定义: 调用代码: #region 演示2:生成左表数据(规则) POST: /api/DEMO/DemoSing ...

  5. SNF快速开发平台--规则引擎介绍和使用文档

    设计目标: a) 规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b) 能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c) 运算速度 ...

  6. Atitit 快速开发的推荐技术标准化 规范 大原则

    Atitit 快速开发的推荐技术标准化 规范 大原则 1. 如何评估什么样的技术适合快速开发??1 1.1. (重要)判断语言层次..层次越高开发效率越高  4gl  dsl> 3.5gl &g ...

  7. 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:公众号后台系统和数据都基本准备妥当了,可以来分享下我是如何开发本微信公众号的后台系统了 ...

  8. 4款java快速开发平台推荐

    JBoss Seam JBoss Seam,算得上是Java开源框架里面最优秀的快速开发框架之一. Seam框架非常出色,尤其是他的组件机制设计的很有匠心,真不愧是Gavin King精心打造的框架了 ...

  9. UWP简单示例(三):快速开发2D游戏引擎

    准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...

随机推荐

  1. 圆形的ImageView

    转载自gitHub的ImageView,因为本身就是可用的,也没什么好说的,拷贝回去用就是了,可以设置除了背景,还可以设置边框什么的,比起CardView设置圆角,功能更加强大. import and ...

  2. day01_HTML

    今日任务 网站信息页面案例 网站图片信息页面案例 网站友情链接页面案例 网站首页案例 网站后台页面案例 教学目标 了解什么是标记语言 了解HTML的框架标签 掌握HTML的主要标签(字体,图片,列表, ...

  3. 基于微博LBS API开发的周边美图android app

    [app 不完善,就差api了] 几年之前看到过新浪微博开放API中有基于Place的API,授权后可以查看基于地理位置的一些数据,比如某个地点周边的微博动态.某个具体用户的位置动态等等.最近空余时间 ...

  4. 2017计算机学科夏令营上机考试-A判决素数个数

    A:判决素数个数 总时间限制:  1000ms 内存限制:  65536kB 描述 输入两个整数X和Y,输出两者之间的素数个数(包括X和Y). 输入 两个整数X和Y(1 <= X,Y <= ...

  5. 使用sklearn进行数据挖掘-房价预测(1)

    使用sklearn进行数据挖掘系列文章: 1.使用sklearn进行数据挖掘-房价预测(1) 2.使用sklearn进行数据挖掘-房价预测(2)-划分测试集 3.使用sklearn进行数据挖掘-房价预 ...

  6. 在本地搭建play-with-docker

    安装play-with-docker 官方Github地址 https://github.com/play-with-docker/play-with-docker 本人Github地址 https: ...

  7. Angular4.0引入laydate.js日期插件方法

    Angular是不支持直接引入js文件的,下面介绍项目如果引入laydate.js的方法 一.将下载的laydate中的js和theme文件放到一个统一的文件下面,我把它放到asset下 二.在ang ...

  8. 两个实用linux小工具

    使用 sshpass 工具来做名密码输入 使用 alias 别名来做成命令语句. Linux命令之非交互SSH密码验证-sshpass ssh登陆不能在命令行中指定密码.sshpass的出现,解决了这 ...

  9. IIS网站本机可以访问但局域网其他机器无法访问 解决方法

    在IIS部署网站的时候,发现只有本机可以访问,通过localhost和IP地址都可以,但是当局域网其他机器访问我的网站的时候,无响应. 我的是WIN10的系统 解决方法:   网站所对应的端口必须对外 ...

  10. 从开源项目看 Python 单元测试

    我觉得以前在我开发程序的时候,除了文档,可能单元测试是另外一个让我希望别人都写,但是自己又一点都不想写的东西.但是,随着开发程序的增多,以及自己对 Bug 的修改的增多,我发现,UT 在很大程度上是对 ...