blob: 75dc43725d5991f6bea13070e4218bc4b23a3bff [file]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="copyright" content="(C) Copyright 2025" />
<meta name="DC.rights.owner" content="(C) Copyright 2025" />
<meta name="DC.Type" content="concept" />
<meta name="DC.Title" content="Impala Requirements" />
<meta name="DC.Relation" scheme="URI" content="../topics/impala_planning.html" />
<meta name="prodname" content="Impala" />
<meta name="prodname" content="Impala" />
<meta name="version" content="Impala 3.4.x" />
<meta name="version" content="Impala 3.4.x" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="prereqs" />
<link rel="stylesheet" type="text/css" href="../commonltr.css" />
<title>Impala Requirements</title>
</head>
<body id="prereqs">
<h1 class="title topictitle1" id="ariaid-title1">Impala Requirements</h1>
<div class="body conbody">
<p class="p">
To perform as expected, Impala depends on the availability of the software, hardware, and
configurations described in the following sections.
</p>
<p class="p toc inpage"></p>
</div>
<div class="related-links">
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a class="link" href="../topics/impala_planning.html">Planning for Impala Deployment</a></div>
</div>
</div><div class="topic concept nested1" aria-labelledby="ariaid-title2" id="prereqs_os">
<h2 class="title topictitle2" id="ariaid-title2">Supported Operating Systems</h2>
<div class="body conbody">
<p class="p">
Apache Impala runs on Linux systems only. See the <span class="ph filepath">README.md</span> file
for more information.
</p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title3" id="prereqs_hive">
<h2 class="title topictitle2" id="ariaid-title3">Hive Metastore and Related Configuration</h2>
<div class="body conbody">
<p class="p">
Impala can interoperate with data stored in Hive, and uses the same infrastructure as
Hive for tracking metadata about schema objects such as tables and columns. The
following components are prerequisites for Impala:
</p>
<ul class="ul">
<li class="li">
MySQL or PostgreSQL, to act as a metastore database for both Impala and Hive.
<p class="p">
Always configure a <strong class="ph b">Hive metastore service</strong> rather than connecting directly to
the metastore database. The Hive metastore service is required to interoperate
between different levels of metastore APIs if this is necessary for your
environment, and using it avoids known issues with connecting directly to the
metastore database.
</p>
<p class="p">
See below for a summary of the metastore installation process.
</p>
</li>
<li class="li">
Hive (optional). Although only the Hive metastore database is required for Impala to
function, you might install Hive on some client machines to create and load data into
tables that use certain file formats. See
<a class="xref" href="impala_file_formats.html#file_formats">How Impala Works with Hadoop File Formats</a> for details. Hive does not need to
be installed on the same DataNodes as Impala; it just needs access to the same
metastore database.
</li>
</ul>
<p class="p">
To install the metastore:
</p>
<ol class="ol">
<li class="li">
Install a MySQL or PostgreSQL database. Start the database if it is not started after
installation.
</li>
<li class="li">
Download the
<a class="xref" href="http://www.mysql.com/products/connector/" target="_blank">MySQL
connector</a> or the
<a class="xref" href="http://jdbc.postgresql.org/download.html" target="_blank">PostgreSQL
connector</a> and place it in the <code class="ph codeph">/usr/share/java/</code> directory.
</li>
<li class="li">
Use the appropriate command line tool for your database to create the metastore
database.
</li>
<li class="li">
Use the appropriate command line tool for your database to grant privileges for the
metastore database to the <code class="ph codeph">hive</code> user.
</li>
<li class="li">
Modify <code class="ph codeph">hive-site.xml</code> to include information matching your particular
database: its URL, username, and password. You will copy the
<code class="ph codeph">hive-site.xml</code> file to the Impala Configuration Directory later in the
Impala installation process.
</li>
</ol>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title4" id="prereqs_java">
<h2 class="title topictitle2" id="ariaid-title4">Java Dependencies</h2>
<div class="body conbody">
<p class="p">
Although Impala is primarily written in C++, it does use Java to communicate with
various Hadoop components:
</p>
<ul class="ul">
<li class="li">
The officially supported JVM for Impala is the Oracle JVM. Other JVMs might cause
issues, typically resulting in a failure at <span class="keyword cmdname">impalad</span> startup. In
particular, the JamVM used by default on certain levels of Ubuntu systems can cause
<span class="keyword cmdname">impalad</span> to fail to start.
</li>
<li class="li">
Internally, the <span class="keyword cmdname">impalad</span> daemon relies on the
<code class="ph codeph">JAVA_HOME</code> environment variable to locate the system Java libraries.
Make sure the <span class="keyword cmdname">impalad</span> service is not run from an environment with
an incorrect setting for this variable.
</li>
<li class="li">
All Java dependencies are packaged in the <code class="ph codeph">impala-dependencies.jar</code>
file, which is located at <code class="ph codeph">/usr/lib/impala/lib/</code>. These map to
everything that is built under <code class="ph codeph">fe/target/dependency</code>.
</li>
</ul>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title5" id="prereqs_network">
<h2 class="title topictitle2" id="ariaid-title5">Networking Configuration Requirements</h2>
<div class="body conbody">
<p class="p">
As part of ensuring best performance, Impala attempts to complete tasks on local data,
as opposed to using network connections to work with remote data. To support this goal,
Impala matches the <strong class="ph b">hostname</strong> provided to each Impala daemon with the <strong class="ph b">IP
address</strong> of each DataNode by resolving the hostname flag to an IP address. For
Impala to work with local data, use a single IP interface for the DataNode and the
Impala daemon on each machine. Ensure that the Impala daemon's hostname flag resolves to
the IP address of the DataNode. For single-homed machines, this is usually automatic,
but for multi-homed machines, ensure that the Impala daemon's hostname resolves to the
correct interface. Impala tries to detect the correct hostname at start-up, and prints
the derived hostname at the start of the log in a message of the form:
</p>
<pre class="pre codeblock"><code>Using hostname: impala-daemon-1.example.com</code></pre>
<p class="p">
In the majority of cases, this automatic detection works correctly. If you need to
explicitly set the hostname, do so by setting the <code class="ph codeph">--hostname</code> flag.
</p>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title6" id="prereqs_hardware">
<h2 class="title topictitle2" id="ariaid-title6">Hardware Requirements</h2>
<div class="body conbody">
<p class="p">
The memory allocation should be consistent across Impala executor nodes. A single Impala
executor with a lower memory limit than the rest can easily become a bottleneck and lead
to suboptimal performance.
</p>
<p class="p">
This guideline does not apply to coordinator-only nodes.
</p>
</div>
<div class="topic concept nested2" aria-labelledby="ariaid-title7" id="concept_dqy_n1w_zdb">
<h3 class="title topictitle3" id="ariaid-title7">Hardware Requirements for Optimal Join Performance</h3>
<div class="body conbody">
<p class="p">
During join operations, portions of data from each joined table are loaded into
memory. Data sets can be very large, so ensure your hardware has sufficient memory to
accommodate the joins you anticipate completing.
</p>
<p class="p">
While requirements vary according to data set size, the following is generally
recommended:
</p>
<ul class="ul">
<li class="li">
CPU
<p class="p">
Impala version 2.2 and higher uses the SSSE3 instruction set, which is included in
newer processors.
</p>
<div class="note note"><span class="notetitle">Note:</span>
This required level of processor is the same as in Impala version 1.x. The Impala
2.0 and 2.1 releases had a stricter requirement for the SSE4.1 instruction set,
which has now been relaxed.
</div>
</li>
<li class="li">
Memory
<p class="p">
128 GB or more recommended, ideally 256 GB or more. If the intermediate results
during query processing on a particular node exceed the amount of memory available
to Impala on that node, the query writes temporary work data to disk, which can
lead to long query times. Note that because the work is parallelized, and
intermediate results for aggregate queries are typically smaller than the original
data, Impala can query and join tables that are much larger than the memory
available on an individual node.
</p>
</li>
<li class="li">
JVM Heap Size for Catalog Server
<p class="p">
4 GB or more recommended, ideally 8 GB or more, to accommodate the maximum numbers
of tables, partitions, and data files you are planning to use with Impala.
</p>
</li>
<li class="li">
Storage
<p class="p">
DataNodes with 12 or more disks each. I/O speeds are often the limiting factor for
disk performance with Impala. Ensure that you have sufficient disk space to store
the data Impala will be querying.
</p>
</li>
</ul>
</div>
</div>
</div>
<div class="topic concept nested1" aria-labelledby="ariaid-title8" id="prereqs_account">
<h2 class="title topictitle2" id="ariaid-title8">User Account Requirements</h2>
<div class="body conbody">
<p class="p">
Impala creates and uses a user and group named <code class="ph codeph">impala</code>. Do not delete
this account or group and do not modify the account's or group's permissions and rights.
Ensure no existing systems obstruct the functioning of these accounts and groups. For
example, if you have scripts that delete user accounts not in a white-list, add these
accounts to the list of permitted accounts.
</p>
<p class="p">
For correct file deletion during <code class="ph codeph">DROP TABLE</code> operations, Impala must be
able to move files to the HDFS trashcan. You might need to create an HDFS directory
<span class="ph filepath">/user/impala</span>, writeable by the <code class="ph codeph">impala</code> user, so
that the trashcan can be created. Otherwise, data files might remain behind after a
<code class="ph codeph">DROP TABLE</code> statement.
</p>
<p class="p">
Impala should not run as root. Best Impala performance is achieved using direct reads,
but root is not permitted to use direct reads. Therefore, running Impala as root
negatively affects performance.
</p>
<p class="p">
By default, any user can connect to Impala and access all the associated databases and
tables. You can enable authorization and authentication based on the Linux OS user who
connects to the Impala server, and the associated groups for that user.
<a class="xref" href="impala_security.html#security">Impala Security</a> for details. These security features do not
change the underlying file permission requirements; the <code class="ph codeph">impala</code> user
still needs to be able to access the data files.
</p>
</div>
</div>
</body>
</html>