PredictionIO初步使用
0 简介
0.1 什么是ApachePredictionIO®?
ApachePredictionIO®是一个开源的机器学习服务器,它建立在最新的开源堆栈之上(基于:Apache Spark,MLlib,HBase,Akka HTTP和Elasticsearch),供开发人员和数据科学家使用,以为任何机器学习任务创建预测引擎。它可以让您:
- 使用可自定义的模板在生产环境中快速构建和部署引擎作为Web服务,RestfulAPI支持;
- 部署为Web服务后,可以实时响应动态查询;
- 系统地评估和调整多种引擎变体;
- 批量或实时统一来自多个平台的数据,以进行全面的预测分析;
- 通过系统的流程和预先建立的评估措施来加快机器学习建模;
- 支持机器学习和数据处理库,例如Spark MLLib和OpenNLP;
- 实施您自己的机器学习模型并将其无缝整合到您的引擎中;
- RestfulAPI支持
- 简化数据基础架构管理。
0.2 PredictionIO 组件构成
PredictionIO 由三大组件构成:
- PredictionIO platform (PredictionIO平台)-我们的开源机器学习堆栈,用于使用机器学习算法构建,评估和部署引擎。
- Event Server-我们的开源机器学习分析层,部署为Web服务后,它会侦听您的应用程序中的查询并实时响应预测结果。
- Engine(引擎)-引擎负责进行预测。它包含一种或多种机器学习算法。
- Template Gallery (官方模板库)-您可以在此下载用于不同类型的机器学习应用程序的引擎模板
0.3 部署步骤
部署和使用引擎需要6个简单的步骤:
- 安装并运行PredictionIO
- 通过下载引擎模板创建引擎
- 如果要将PredictionIO与新应用程序集成,请生成应用程序ID和访问密钥
- 收集数据
- 将引擎即服务部署
- 使用引擎推荐
1 docker安装ApachePredictionIO
1.1 官网方式
http://predictionio.apache.org/install/install-docker/
1.1.1 下载docker源文件
从v0.13.0开始,ApachePredictionIO®开始为生产环境提供docker支持。Dockerfile和依赖项配置可以在git存储库的docker文件夹中找到。
首先下载项目:
git clone https://github.com/apache/predictionio.git
然后进入docker文件夹下:
cd predictionio/docker
1.1.2 Build Docker Image
为了构建PredictionIO Docker image,在子目录pio
中提供了Dockerfile
。
使用上面的命令,您将能够使用标签prediction/pio:latest
build 一个 image。
docker build -t predictionio/pio pio
1.2 从DockerHub拉取docker镜像
https://github.com/steveny2k/docker-predictionio
https://www.cnblogs.com/Yuanjing-Liu/p/9516536.html
1.2.1 拉取镜像文件
拉取镜像文件:
docker run -it -p 8000:8000 -p 7070:7070 steveny/predictionio:0.12.0 /bin/bash
该命令会自动发现你本地没有该镜像,然后主动去DockerHub拉取。
docker 容器操作:
# 查看所有的容器 及其状态
docker ps -a
# 开始/停止 容器
docker start/stop xxxx
# 查看容器日志
docker logs -f xxxx
#进入docker容器中,比attach命令更好,退出不会关闭
docker exec -it xxxxid bash
# 退出container时,这个container仍然在后台运行
exit # 或者按键“Ctrl + D”
1.2.2 启动事件引擎
拉去镜像之后, docker会直接启动一个 容器。并且进入容器。然后我们 启动所有PredictionIO事件服务器(HBase和Elasticsearch):
pio-start-all
查看有没有启动成功:
pio status
看到以下结果说明成功。
如果报错:Please make sure they are correct. Source Name: ELASTICSEARCH; Type: elasticsearch; xxxxxx 类似的错误 都表示 elasticsearch 没有启动成功,
https://github.com/shimamoto/docker-predictionio/issues/1 参考 解决方案为,增加docker对内存的限制 提高到2g以上
# 如果有问题,就用stop命令关闭,并重启
pio-stop-all
pio-st