# Software Requirements

## Operating System

GBDS can be installed on the following operating systems:

* CentOS 7
* Red Hat 7
* Red Hat 8
* Oracle Linux 7
* Oracle Linux 8

## Hadoop

GBDS is based on Apache Hadoop version 3.1, which is a collection of open-source software. Hadoop provides multipurpose tools for parallel and scalable systems. Currently, GBDS is integrated with the following Hadoop components:

* **Ambari**: Provisioning, management, and monitoring of a Hadoop cluster.
* **Kafka**: Distributed streaming system for real-time data integration.
* **Zookeeper**: Coordination system that enables synchronization within a cluster.
* **HBase**: Non-relational database management system.
* **HDFS**: Distributed file system designed to run on *commodity hardware*.

## Database

GBDS uses two different database systems, relational and non-relational:

* **HBase** For biometric images and templates.
* **MySQL** for metadata, such as transactions, exceptions, criminal cases, biometric profiles, and unresolved latent prints.

{% hint style="success" %}
MySQL is recommended, since some Hadoop components rely on it internally, which makes interoperability between them easier, but it is possible to adapt to any other SQL database system.
{% endhint %}

## Local Load Balancing

The template extraction model from an image requires more resources than biometric comparison between templates and is performed in the *GBDS API handler*. To optimize hardware usage, GBDS is highly parallelized and each node in a cluster must be able to receive API requests, if configured to do so; therefore, the use of a load balancer is recommended to distribute requests evenly among the nodes, aiming to achieve the best performance. In this way, no node will be overloaded in the cluster.

It is possible to use load balancers in both hardware and software. A simple software solution for load balancing is HAProxy, open-source and free software that provides load balancing and server proxy tools.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/gbs/en/gbds-installation/softwarerequirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
