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. TCP/IP协议栈 --- IP路由

    IP路由:当一个IP包在主机发送出去或者在网络当中时,是怎么选择路径到达目的主机的呢? 一般情况下, 如果说源主机和目的主机在同一个网络中的话,那个数据报可以直接到达目的主机而不经过路由器,下面可以试 ...

  2. yii2数据条件查询-where专题

    条件查询 $customers = Customer::find()->where($cond)->all(); $cond就是我们所谓的条件,条件的写法也根据查询数据的不同存在差异,那么 ...

  3. 【Flink】流-表概念

    title: Flink流-表概念 date: 2017-12-12 14:48:16 categories: technique tags: Flink Flink Streaming Dynami ...

  4. Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置

    背景: 前天开源了框架:开源:Sagit.Framework For IOS 开发框架 所以注定要追补一套开发教程了,所以尽量抽空了!!! 步骤 1:下载框架源码 GitHub:https://git ...

  5. labview生成可执行文件

    labview生成可执行文件可以分为两种情况. 第一种,是电脑中有labview软件开发环境的情况 第二种,是电脑中没有安装labview软件开发环境 下面是一个简单的labview代码: 程序解释: ...

  6. Docker笔记四:Elasticsearch实例部署

    在运行或启动elasticsearch容器前,先在宿主机上执行 sysctl -w vm.max_map_count=262144: 解决" max virtual memory areas ...

  7. SAML2.0 协议初识(一)

    一.什么是 SAML 协议? SAML 即安全断言标记语言,英文全称是 Security Assertion Markup Language.它是一个基于 XML 的标准,用于在不同的安全域(secu ...

  8. KMP算法具体解释

    这几天学习kmp算法,解决字符串的匹配问题.開始的时候都是用到BF算法,(BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配 ...

  9. inline-block并列排序时候的影响

    当两个设置了inline-block属性的元素并列排放时,它们的位置能够互相影响. 元素结构: <div class="container"> <div clas ...

  10. 移动浏览器H5页面通过scheme打开本地应用

    在移动端浏览器H5页面中,点击按钮打开本地应用主要通过 scheme 协议.本文主要介绍如何在浏览器H5页面中通过 scheme 协议打开本地应用. scheme协议定义 scheme 是一种页面之间 ...