blob: 8e9667d22bfe64c5c5f35da55e6d17d8bb655db0 [file] [view]
---
title: System Architecture and Dependencies
---
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
This section explains general rules-of-thumb for how they are used in
PredictionIO. The actual implementation of the Template will define how much of
this applies. PredictionIO is flexible about much of this configuration but its
Templates generally fit the Lambda model for integrating real-time serving with
background periodic model updates.
![PredictionIO Systems](/images/pio-architecture.svg)
**HBase**: Event Server uses Apache HBase (or JDBC DB for small data) as the
data store. It stores imported events. If you are not using the PredictionIO
Event Server, you do not need to install HBase.
**Apache Spark**: Spark is a large-scale data processing engine that powers the
data preparation and input to the algorithm, training, and sometimes the
serving processing. PredictionIO allows for different engines to be used in
training but many algorithms come from Spark's MLlib.
**HDFS**: is a distributed filesystem from Hadoop. It allows storage to be
shared among clustered machines. It is used to stage data for batch import into
PredictionIO, for export of Event Server datasets, and for storage of some
models (see your template for details).
The output of training has two parts: a model and its meta-data. The model is
then stored in HDFS, a local file system, or Elasticsearch. See the details of
your algorithm.
**Elasticsearch**: stores metadata such as model versions, engine versions,
access key and app ID mappings, evaluation results, etc. For some templates it
may store the model.