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. 常用接口简析2---IComparable和IComparer接口的简析

    常用接口的解析(链接) 1.IEnumerable深入解析 2.IEnumerable.IEnumerator接口解析 3.IList.IList接口解析 默认情况下,对象的Equals(object ...

  2. Winform 中 dataGridView 导出到Excel中的方法总结

    最近,在做CS端数据导出到Excel中时网上找了很多代码感觉都不是自己想要的,通过自己的整理归纳得到一个比较通用的方法,就给大家分享一下: 该方法需要用到两个参数(即对象),一个  DataGridV ...

  3. Java基础回顾(3)

    数组:用一种数据类型的集合 ★数组元素下标从0开始. 数组的复制.扩容: ①.System.arraycopy(源数组, 源数组的初始下标,                     目标数组, 目标数 ...

  4. 命令模式(Command)

    命令模式(Command) 命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行.这个过程好在,三者相互 ...

  5. ##6.1 Neutron控制节点-- openstack pike

    ##6.1 Neutron控制节点 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##6.1 Neutron控制节 ...

  6. 【LintCode·入门】斐波那契数列

    斐波那契数列 描述 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: 前2个数是 0 和 1 . 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, ...

  7. POJ 1511 Invitation Cards 链式前向星+spfa+反向建边

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 27200   Accepted: 902 ...

  8. SVN如何commit(提交)项目代码

    在本地代码做出变更之后,我们就需要通过svn commit命令提交到远程服务端 工具/原料   SVN客户端 方法/步骤   选中需要更新的代码文件夹或目录,点击右键,选择"Tortoise ...

  9. 新版netkeeper开wifi无需路由器

    谈一谈netkeeper的运行原理及如何不用路由器开启wifi.(针对重庆地区,其它地区没研究过.日期:2017.11.29) 旧版: netkeeper将用户名加密为真正的用户名进行登录,登录以后n ...

  10. Hadoop介绍和环境配置

    原文:http://www.cnblogs.com/edisonchou/ 一.Hadoop的发展历史 说到Hadoop的起源,不得不说到一个传奇的IT公司-全球IT技术的引领者Google.Goog ...