Instal·leu Plesk a CentOS 7
Utilitzeu un sistema diferent? Plesk és un tauler de control d'amfitrió web propietari que permet als usuaris administrar els seus llocs web personals i/o de clients, bases de dades
Els enfocaments tradicionals de l'anàlisi de dades són impossibles d'utilitzar quan els conjunts de dades arriben a una mida determinada. Una alternativa moderna per analitzar els grans conjunts de dades és utilitzar mètodes d'aprenentatge automàtic. L'aprenentatge automàtic és capaç de produir resultats precisos quan s'utilitza un algorisme ràpid i eficient.
Apache PredictionIO és un servidor d'aprenentatge automàtic de codi obert que s'utilitza per crear motors predictius per a qualsevol tasca d'aprenentatge automàtic. Escurça el temps de l'aplicació d'aprenentatge automàtic des del laboratori fins a la producció mitjançant l'ús de plantilles de motor personalitzables que es poden crear i desplegar ràpidament. Proporciona la recopilació de dades i els components de servei, i resumeix la tecnologia subjacent per exposar una API que permet als desenvolupadors centrar-se en components de transformació. Un cop el servidor del motor de PredictionIO s'ha desplegat com a servei web, pot respondre a consultes dinàmiques en temps real.
Apache PredictionIO consta de diferents components.
En aquest tutorial, utilitzarem 192.0.2.1
com a adreça IP pública del servidor. Substituïu totes les ocurrències de 192.0.2.1
per la vostra adreça IP pública Vultr.
Actualitzeu el vostre sistema base mitjançant la guia Com actualitzar CentOS 7 . Un cop actualitzat el sistema, procediu a instal·lar Java.
Molts dels components de PredictionIO requereixen JDK, o Java Development Kit, versió 8 per funcionar. És compatible amb OpenJDK i Oracle Java. En aquest tutorial, instal·larem OpenJDK versió 8.
OpenJDK es pot instal·lar fàcilment, ja que el paquet està disponible al repositori YUM predeterminat.
sudo yum -y install java-1.8.0-openjdk-devel
Verifiqueu la versió de Java per assegurar-vos que s'ha instal·lat correctament.
java -version
Obtindreu una sortida similar.
[user@vultr ~]$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
Abans de continuar, haurem de configurar les variables d'entorn JAVA_HOME
i JRE_HOME
. Trobeu la ruta absoluta de l'executable JAVA al vostre sistema.
readlink -f $(which java)
Veureu una sortida similar.
[user@vultr ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/bin/java
Ara, configureu JAVA_HOME
i JRE_HOME
variable d'entorn segons la ruta del directori Java.
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64" >> ~/.bash_profile
echo "export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre" >> ~/.bash_profile
Executeu el bash_profile
fitxer.
source ~/.bash_profile
Ara podeu executar l' echo $JAVA_HOME
ordre per comprovar si la variable d'entorn està establerta.
[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64
Apache proporciona fitxers font de PredictionIO que es poden descarregar i compilar localment. Creeu un nou directori temporal per descarregar i compilar el fitxer font.
mkdir /tmp/pio_sourcefiles && cd /tmp/pio_sourcefiles
Baixeu l'arxiu de fitxers font de PredictionIO mitjançant qualsevol lloc d'Apache Mirror .
wget http://apache.mirror.vexxhost.com/incubator/predictionio/0.12.0-incubating/apache-predictionio-0.12.0-incubating.tar.gz
Extraieu l'arxiu i compileu la font per crear una distribució de PredictionIO.
tar xf apache-predictionio-0.12.0-incubating.tar.gz
./make-distribution.sh
La distribució anterior es construirà amb les versions predeterminades de les dependències, que són Scala 2.11.8
, Spark 2.1.1
, Hadoop 2.7.3
i ElasticSearch 5.5.2
. Espereu que acabi la construcció, trigarà uns deu minuts a completar-se, depenent del rendiment del vostre sistema.
Nota : podeu utilitzar la darrera versió compatible de les dependències, però és possible que vegeu alguns avisos durant la compilació, ja que algunes funcions poden estar obsoletes. Executeu ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3
, substituint el número de versió segons la vostra elecció.
Un cop finalitzada la construcció correctament, veureu el missatge següent al final.
...
PredictionIO-0.12.0-incubating/python/pypio/__init__.py
PredictionIO-0.12.0-incubating/python/pypio/utils.py
PredictionIO-0.12.0-incubating/python/pypio/shell.py
PredictionIO binary distribution created at PredictionIO-0.12.0-incubating.tar.gz
Els fitxers binaris de PredictionIO es desaran a l' PredictionIO-0.12.0-incubating.tar.gz
arxiu. Extraieu l'arxiu al /opt
directori i proporcioneu la propietat a l'usuari actual.
sudo tar xf PredictionIO-0.12.0-incubating.tar.gz -C /opt/
sudo chown -R $USER:$USER /opt/PredictionIO-0.12.0-incubating
Estableix la PIO_HOME
variable d'entorn.
echo "export PIO_HOME=/opt/PredictionIO-0.12.0-incubating" >> ~/.bash_profile
source ~/.bash_profile
Creeu un directori nou per instal·lar dependències de PredictionIO com ara HBase
, Spark
i Elasticsearch
.
mkdir /opt/PredictionIO-0.12.0-incubating/vendors
Baixeu la versió 2.11.8 de Scala i extreu-la al vendors
directori.
wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
tar xf scala-2.11.8.tgz -C /opt/PredictionIO-0.12.0-incubating/vendors
Baixeu Apache Hadoop versió 2.7.3 i extreu-lo al vendors
directori.
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
tar xf hadoop-2.7.3.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors
Apache Spark és el motor de processament predeterminat de PredictionIO. Baixeu Spark versió 2.1.1 i extreu-la al vendors
directori.
wget https://archive.apache.org/dist/spark/spark-2.1.1/spark-2.1.1-bin-hadoop2.7.tgz
tar xf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/PredictionIO-0.12.0-incubating/vendors
Baixeu la versió 5.5.2 d'Elasticsearch i extreu-la al vendors
directori.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
tar xf elasticsearch-5.5.2.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors
Finalment, descarregueu la versió 1.2.6 d'HBase i extreu-la al vendors
directori.
wget https://archive.apache.org/dist/hbase/stable/hbase-1.2.6-bin.tar.gz
tar xf hbase-1.2.6-bin.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors
Obriu el hbase-site.xml
fitxer de configuració per configurar HBase perquè funcioni en un entorn autònom.
nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-site.xml
Cerqueu el bloc de configuració buit i substituïu-lo per la configuració següent.
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/user/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/data</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/user/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/zookeeper</value>
</property>
</configuration>
El directori de dades el crearà automàticament HBase. Editeu el fitxer d'entorn HBase per establir el JAVA_HOME
camí.
nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-env.sh
Descomenteu la línia número 27 i configureu JAVA_HOME
el camí de la jre
vostra instal·lació de Java. Podeu trobar el camí a l'executable JAVA mitjançant l' readlink -f $(which java)
ordre.
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre
A més, comenta els números de línia 46 i 47, ja que no són necessaris per a JAVA 8.
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
La configuració predeterminada del fitxer d'entorn PredictionIO pio-env.sh
suposa que estem utilitzant PostgreSQL o MySQL. Com hem utilitzat HBase i Elasticsearch, haurem de modificar gairebé totes les configuracions del fitxer. El millor és fer una còpia de seguretat del fitxer existent i crear un nou fitxer d'entorn PredictionIO.
mv /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh.bak
Now create a new file for PredictionIO environment configuration.
nano /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh
Populate the file with the following configuration.
# PredictionIO Main Configuration
#
# This section controls core behavior of PredictionIO. It is very likely that
# you need to change these to fit your site.
# SPARK_HOME: Apache Spark is a hard dependency and must be configured.
SPARK_HOME=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.7
# POSTGRES_JDBC_DRIVER=$PIO_HOME/lib/postgresql-42.0.0.jar
# MYSQL_JDBC_DRIVER=$PIO_HOME/lib/mysql-connector-java-5.1.41.jar
# ES_CONF_DIR: You must configure this if you have advanced configuration for
# your Elasticsearch setup.
ES_CONF_DIR=$PIO_HOME/vendors/elasticsearch-5.5.2/config
# HADOOP_CONF_DIR: You must configure this if you intend to run PredictionIO
# with Hadoop 2.
HADOOP_CONF_DIR=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.7/conf
# HBASE_CONF_DIR: You must configure this if you intend to run PredictionIO
# with HBase on a remote cluster.
HBASE_CONF_DIR=$PIO_HOME/vendors/hbase-1.2.6/conf
# Filesystem paths where PredictionIO uses as block storage.
PIO_FS_BASEDIR=$HOME/.pio_store
PIO_FS_ENGINESDIR=$PIO_FS_BASEDIR/engines
PIO_FS_TMPDIR=$PIO_FS_BASEDIR/tmp
# PredictionIO Storage Configuration
#
# This section controls programs that make use of PredictionIO's built-in
# storage facilities. Default values are shown below.
#
# For more information on storage configuration please refer to
# http://predictionio.incubator.apache.org/system/anotherdatastore/
# Storage Repositories
# Default is to use PostgreSQL
PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta
PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH
PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event
PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE
PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model
PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS
# Storage Data Sources
# PostgreSQL Default Settings
# Please change "pio" to your database name in PIO_STORAGE_SOURCES_PGSQL_URL
# Please change PIO_STORAGE_SOURCES_PGSQL_USERNAME and
# PIO_STORAGE_SOURCES_PGSQL_PASSWORD accordingly
# PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc
# PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio
# PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio
# PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio
# MySQL Example
# PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc
# PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://localhost/pio
# PIO_STORAGE_SOURCES_MYSQL_USERNAME=pio
# PIO_STORAGE_SOURCES_MYSQL_PASSWORD=pio
# Elasticsearch Example
PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch
PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost
PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9200
PIO_STORAGE_SOURCES_ELASTICSEARCH_SCHEMES=http
PIO_STORAGE_SOURCES_ELASTICSEARCH_CLUSTERNAME=pio
PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$PIO_HOME/vendors/elasticsearch-5.5.2
# Optional basic HTTP auth
# PIO_STORAGE_SOURCES_ELASTICSEARCH_USERNAME=my-name
# PIO_STORAGE_SOURCES_ELASTICSEARCH_PASSWORD=my-secret
# Elasticsearch 1.x Example
# PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch
# PIO_STORAGE_SOURCES_ELASTICSEARCH_CLUSTERNAME=<elasticsearch_cluster_name>
# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost
# PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300
# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$PIO_HOME/vendors/elasticsearch-1.7.6
# Local File System Example
PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs
PIO_STORAGE_SOURCES_LOCALFS_PATH=$PIO_FS_BASEDIR/models
# HBase Example
PIO_STORAGE_SOURCES_HBASE_TYPE=hbase
PIO_STORAGE_SOURCES_HBASE_HOME=$PIO_HOME/vendors/hbase-1.2.6
# AWS S3 Example
# PIO_STORAGE_SOURCES_S3_TYPE=s3
# PIO_STORAGE_SOURCES_S3_BUCKET_NAME=pio_bucket
# PIO_STORAGE_SOURCES_S3_BASE_PATH=pio_model
Save the file and exit from the editor.
Open the Elasticsearch configuration file.
nano /opt/PredictionIO-0.12.0-incubating/vendors/elasticsearch-5.5.2/config/elasticsearch.yml
Uncomment the line and set the cluster name to exactly the same as the one provided in the PredictionIO environment file. The cluster name is set to pio
in the above configuration.
# Use a descriptive name for your cluster:
#
cluster.name: pio
Now add the $PIO_HOME/bin
directory into the PATH variable so that the PredictionIO executables are executed directly.
echo "export PATH=$PATH:$PIO_HOME/bin" >> ~/.bash_profile
source ~/.bash_profile
At this point, PredictionIO is successfully installed on your server.
You can start all the services in PredictionIO such as Elasticsearch, HBase and Event server using a single command.
pio-start-all
You will see the following output.
[user@vultr ~]$ pio-start-all
Starting Elasticsearch...
Starting HBase...
starting master, logging to /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/bin/../logs/hbase-user-master-vultr.guest.out
Waiting 10 seconds for Storage Repositories to fully initialize...
Starting PredictionIO Event Server...
Use the following command to check the status of the PredictionIO server.
pio status
You will see the following output.
[user@vultr ~]$ pio status
[INFO] [Management$] Inspecting PredictionIO...
[INFO] [Management$] PredictionIO 0.12.0-incubating is installed at /opt/PredictionIO-0.12.0-incubating
[INFO] [Management$] Inspecting Apache Spark...
[INFO] [Management$] Apache Spark is installed at /opt/PredictionIO-0.12.0-incubating/vendors/spark-2.1.1-bin-hadoop2.7
[INFO] [Management$] Apache Spark 2.1.1 detected (meets minimum requirement of 1.3.0)
[INFO] [Management$] Inspecting storage backend connections...
[INFO] [Storage$] Verifying Meta Data Backend (Source: ELASTICSEARCH)...
[INFO] [Storage$] Verifying Model Data Backend (Source: LOCALFS)...
[INFO] [Storage$] Verifying Event Data Backend (Source: HBASE)...
[INFO] [Storage$] Test writing to Event Store (App Id 0)...
[INFO] [HBLEvents] The namespace pio_event doesn't exist yet. Creating now...
[INFO] [HBLEvents] The table pio_event:events_0 doesn't exist yet. Creating now...
[INFO] [HBLEvents] Removing table pio_event:events_0...
[INFO] [Management$] Your system is all ready to go.
As we can see in the above messages, our system is ready to use for implementing an engine template and predicting data.
Several ready to use engine templates are available on the PredictionIO Template Gallery which can be easily installed on the PredictionIO server. You are free to browse through the list of engine templates to find the one that is close to your requirements or you can write your own engine.
In this tutorial, we will implement the E-Commerce Recommendation
engine template to demonstrate the functionality of PredictionIO server using some sample data. This engine template provides some personal recommendation to a user in an e-commerce website. By default, it has features such as excluding out of stock items or providing recommendations to a user who signs up after the model is trained. Also, by default, the engine template takes a user's view and buy events, items with categories and properties and list of unavailable items. Once the engine has been trained and deployed, you can send a query with the user id and number of items to be recommended. The generated output will be a ranked list of recommended item ids.
Install Git, as it will be used to clone the repository.
cd ~
sudo yum -y install git
Clone the E-Commerce Recommender engine template on your system.
git clone https://github.com/apache/incubator-predictionio-template-ecom-recommender.git MyEComRecomm
Create a new application for the E-Commerce Recommendation template engine. Each application in PredictionIO is used to store the data for a separate website. If you have multiple websites, then you can create multiple apps to store each website's data into a different application. You are free to choose any name for your application.
cd MyEComRecomm/
pio app new myecom
You will see the following output.
[user@vultr MyEComRecomm]$ pio app new myecom
[INFO] [HBLEvents] The table pio_event:events_1 doesn't exist yet. Creating now...
[INFO] [App$] Initialized Event Store for this app ID: 1.
[INFO] [Pio$] Created a new app:
[INFO] [Pio$] Name: myecom
[INFO] [Pio$] ID: 1
[INFO] [Pio$] Access Key: a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
The output above also contains the access key which will be used to authenticate when sending the input data to the event server.
You can always find the access key along with the list of available applications by running.
pio app list
You will see the following output containing a list of applications and the access key.
[user@vultr MyEComRecomm]$ pio app list
[INFO] [Pio$] Name | ID | Access Key | Allowed Event(s)
[INFO] [Pio$] myecom | 1 | a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t | (all)
[INFO] [Pio$] Finished listing 1 app(s).
Ara que hem creat una nova aplicació, hi afegirem algunes dades. A l'entorn de producció, voldríeu enviar automàticament les dades al servidor d'esdeveniments integrant l'API del servidor d'esdeveniments a l'aplicació. Per saber com funciona PredictionIO, hi importarem algunes dades de mostra. El motor de plantilles proporciona un script Python que es pot utilitzar fàcilment per importar dades de mostra al servidor d'esdeveniments.
Instal·leu Python pip.
sudo yum -y install python-pip
sudo pip install --upgrade pip
Instal·leu PredictionIO Python SDK mitjançant pip.
sudo pip install predictionio
Executeu l'script de Python per afegir les dades de mostra al servidor d'esdeveniments.
python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
Assegureu-vos de substituir la clau d'accés per la vostra clau d'accés real. Veureu una sortida similar.
[user@vultr MyEComRecomm]$ python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
Namespace(access_key='a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t', url='http://localhost:7070')
{u'status': u'alive'}
Importing data...
('Set user', 'u1')
('Set user', 'u2')
...
('User', 'u10', 'buys item', 'i30')
('User', 'u10', 'views item', 'i40')
('User', 'u10', 'buys item', 'i40')
204 events are imported.
L'script anterior importa 10 usuaris, 50 articles en 6 categories i alguns esdeveniments aleatoris de compra i visualitzacions. Per comprovar si els esdeveniments s'han importat o no, podeu executar la consulta següent.
curl -i -X GET "http://localhost:7070/events.json?accessKey=a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t"
La sortida us mostrarà la llista de tots els esdeveniments importats en format JSON.
Ara, obriu el engine.json
fitxer a l'editor. Aquest fitxer conté la configuració del motor.
nano engine.json
Cerqueu les dues ocurrències appName
i substituïu el valor pel nom real de l'aplicació que heu creat anteriorment.
{
"id": "default",
"description": "Default settings",
"engineFactory": "org.example.ecommercerecommendation.ECommerceRecommendationEngine",
"datasource": {
"params" : {
"appName": "myecom"
}
},
"algorithms": [
{
"name": "ecomm",
"params": {
"appName": "myecom",
"unseenOnly": true,
"seenEvents": ["buy", "view"],
"similarEvents": ["view"],
"rank": 10,
"numIterations" : 20,
"lambda": 0.01,
"seed": 3
}
}
]
}
Construeix l'aplicació.
pio build --verbose
Si no voleu veure els missatges de registre, elimineu l' --verbose
opció. La creació de la plantilla del motor per primera vegada trigarà uns minuts. Veureu una sortida similar quan la construcció finalitzi correctament.
[user@vultr MyEComRecomm]$ pio build --verbose
[INFO] [Engine$] Using command '/opt/PredictionIO-0.12.0-incubating/sbt/sbt' at /home/user/MyEComRecomm to build.
...
[INFO] [Engine$] Build finished successfully.
[INFO] [Pio$] Your engine is ready for training.
Entrena el motor ara. Durant l'entrenament, el motor analitza el conjunt de dades i s'entrena segons l'algorisme proporcionat.
pio train
Abans de desplegar l'aplicació, haurem d'obrir el port 8000
perquè l'estat de l'aplicació es pugui veure a la GUI web. Així mateix, els llocs web i les aplicacions que utilitzen el servidor d'esdeveniments enviaran i rebran les seves consultes a través d'aquest port.
sudo firewall-cmd --zone=public --permanent --add-port=8000/tcp
sudo firewall-cmd --reload
Ara podeu implementar el motor PredictionIO.
pio deploy
L'ordre anterior desplegarà el motor i el servidor web integrat al port 8000
per respondre a les consultes dels llocs web i aplicacions de comerç electrònic. Veureu la sortida següent al final un cop el motor s'hagi desplegat correctament.
[INFO] [HttpListener] Bound to /0.0.0.0:8000
[INFO] [MasterActor] Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
Podeu verificar l'estat del motor http://192.0.2.1:8000
mitjançant qualsevol navegador modern. Assegureu-vos que la substituïu 192.0.2.1
per la vostra adreça IP de Vultr real.
Això significa que la plantilla del motor per a la recomanació de comerç electrònic s'ha desplegat i funciona correctament. Podeu consultar la plantilla del motor per obtenir cinc recomanacions per a l'usuari u5
executant la consulta següent en una nova sessió de terminal.
curl -H "Content-Type: application/json" \
-d '{ "user": "u5", "num": 5 }' \
http://localhost:8000/queries.json
Veureu les recomanacions generades per a l'usuari u5
.
[user@vultr ~]$ curl -H "Content-Type: application/json" \
> -d '{ "user": "u5", "num": 5 }' \
> http://localhost:8000/queries.json
{"itemScores":[{"item":"i25","score":0.9985169366745619},{"item":"i10","score":0.996613946803819},{"item":"i27","score":0.996613946803819},{"item":"i17","score":0.9962796867639341},{"item":"i8","score":0.9955868705972656}]}
Enhorabona, Apache PredictionIO s'ha implementat correctament al vostre servidor. Ara podeu utilitzar l'API del servidor d'esdeveniments per importar les dades al motor per predir les recomanacions per a l'usuari. Si voleu, podeu utilitzar altres plantilles de la galeria de plantilles. Assegureu-vos de consultar la plantilla del motor de recomanació universal que es pot utilitzar en gairebé tots els casos d'ús, inclosos el comerç electrònic, les notícies o el vídeo.
Utilitzeu un sistema diferent? Plesk és un tauler de control d'amfitrió web propietari que permet als usuaris administrar els seus llocs web personals i/o de clients, bases de dades
Squid és un popular programa Linux gratuït que us permet crear un servidor intermediari web de reenviament. En aquesta guia, veureu com instal·lar Squid a CentOS per convertir-vos-hi
Introducció Lighttpd és una bifurcació d'Apache destinada a ser molt menys intensiu en recursos. És lleuger, d'aquí el seu nom, i és bastant senzill d'utilitzar. Instal·lant
Recentment, VULTR ha fet canvis al seu extrem, i ara tot hauria de funcionar bé des de la caixa amb NetworkManager habilitat. Si voleu desactivar
Icinga2 és un sistema de supervisió potent i, quan s'utilitza en un model de client mestre, pot substituir la necessitat de controls de monitoratge basats en NRPE. El mestre-client
Utilitzeu un sistema diferent? Apache Cassandra és un sistema de gestió de bases de dades NoSQL gratuït i de codi obert dissenyat per proporcionar escalabilitat, alta
Utilitzeu un sistema diferent? Microweber és un CMS d'arrossegar i deixar anar de codi obert i una botiga en línia. El codi font de Microweber està allotjat a GitHub. Aquesta guia us mostrarà
Utilitzeu un sistema diferent? Vanilla Forum és una aplicació de fòrum de codi obert escrita en PHP. És totalment personalitzable, fàcil d'utilitzar i admet externa
Utilitzeu un sistema diferent? Mattermost és una alternativa autoallotjada de codi obert al servei de missatgeria Slack SAAS. En altres paraules, amb Mattermost, ca
Què necessitareu Un Vultr VPS amb almenys 1 GB de RAM. Accés SSH (amb privilegis d'arrel/administrador). Pas 1: instal·lació de BungeeCord Primer de tot
El tauler de control de Plesk inclou una integració molt agradable per Lets Encrypt. Lets Encrypt és un dels únics proveïdors SSL que ofereix certificats complets
Lets Encrypt és una autoritat de certificació dedicada a proporcionar certificats SSL de manera gratuïta. cPanel ha creat una integració perfecta perquè tu i el teu client
Utilitzeu un sistema diferent? Concrete5 és un CMS de codi obert que ofereix moltes característiques distintives i útils per ajudar els editors a produir continguts fàcilment i
Utilitzeu un sistema diferent? Review Board és una eina gratuïta i de codi obert per revisar el codi font, la documentació, les imatges i molts més. És un programari basat en web
En aquesta guia, aprendràs a configurar l'autenticació HTTP per a un servidor web Nginx que s'executa a CentOS 7. Requisits Per començar, necessitareu el
Utilitzeu un sistema diferent? GoAccess és un analitzador de registres web de codi obert. Podeu utilitzar-lo per analitzar els registres en temps real al terminal o
YOURLS (Your Own URL Shortener) és una aplicació d'anàlisi de dades i escurçament d'URL de codi obert. En aquest article, tractarem el procés d'instal·lació
Utilitzeu un sistema diferent? Introducció ArangoDB és una base de dades NoSQL de codi obert amb un model de dades flexible per a documents, gràfics i claus-valors. És
Introducció El directori /etc/ té un paper crític en el funcionament d'un sistema Linux. La raó d'això és perquè gairebé totes les configuracions del sistema
Molts administradors de sistemes gestionen grans quantitats de servidors. Quan s'hagi d'accedir als fitxers a través de diferents servidors, inicieu sessió a cadascun individualment ca
La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.
També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.
Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.
Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.
El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...
A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.
Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.
Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.
En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.
Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació