From cb6107c871d86aa61c99cc282570549aa7c2f36a Mon Sep 17 00:00:00 2001 From: Lena Hunter <54044802+lenapivotal@users.noreply.github.com> Date: Wed, 18 Mar 2020 16:49:09 -0700 Subject: [PATCH] Feature/plcontainer reorg (#9768) * clarifying pg_upgrade note * first edits * edits for menu and content * menu changes * further funtion edits * new file for config reference * editing links and configuration file reference * fixing references * further link edits * move of logging section * arranging sections * fixing references * intro edits * small edit * small improvements --- gpdb-doc/dita/analytics/analytics.ditamap | 8 +- .../graphics/pl_container_architecture.png | Bin 0 -> 294406 bytes gpdb-doc/dita/analytics/pl_container.xml | 1781 ++++------------- .../dita/analytics/pl_container_using.xml | 472 +++++ .../plcontainer-configuration-xml.xml | 316 +++ gpdb-doc/dita/analytics/plcontainer_ref.xml | 316 +++ .../dita/utility_guide/contrib-programs.xml | 2 +- 7 files changed, 1460 insertions(+), 1435 deletions(-) create mode 100644 gpdb-doc/dita/analytics/graphics/pl_container_architecture.png create mode 100644 gpdb-doc/dita/analytics/pl_container_using.xml create mode 100644 gpdb-doc/dita/analytics/plcontainer-configuration-xml.xml create mode 100644 gpdb-doc/dita/analytics/plcontainer_ref.xml diff --git a/gpdb-doc/dita/analytics/analytics.ditamap b/gpdb-doc/dita/analytics/analytics.ditamap index 110788ac78..a48f78574a 100644 --- a/gpdb-doc/dita/analytics/analytics.ditamap +++ b/gpdb-doc/dita/analytics/analytics.ditamap @@ -12,7 +12,13 @@ - + + + + + + + diff --git a/gpdb-doc/dita/analytics/graphics/pl_container_architecture.png b/gpdb-doc/dita/analytics/graphics/pl_container_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..36acff43a8943630eece62facaea649cd6508a3f GIT binary patch literal 294406 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 XuU1q47v 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 ZI-|Pfhq~C1WX81v;zXulK&eYjs* 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 PL/Container Language -

This section includes the following information about PL/Container 1.1 and later:

+

User defined functions (UDFs), using the Greenplum supported procedural languages, PL/Python + and PL/R, should only be created and used by trusted Greenplum Database administrators. This + restricts the data scientists using their own functions for training and debugging models. + PL/Container overcomes this limitation by allowing users to run UDFs inside a restricted + environment with no security risks.

+

This topic covers information about the architecture, installation, and setup of + PL/Container:

    -
  • -
  • -
  • -
  • -
  • +
  • -
  • -
  • -
  • +
  • +
  • -
  • -
  • -
  • -
  • -
+

For detailed information about using PL/Container, refer to:

+

+

    +
  • PL/Container Resource + Management
  • +
  • PL/Container Functions
  • +
+

+

The PL/Container language extension is available as an open source module. For information + about the module, see the README file in the GitHub repository at https://github.com/greenplum-db/plcontainer

- - About the PL/Container Language Extension + + About PL/Container Language Extension -

The Greenplum Database PL/Container language extension (PL/Container) is an interface that - allows Greenplum Database to interact with a Docker container to execute a user-defined - function (UDF) in the container. Docker containers ensure the user code cannot access the - file system of the source host. Also, containers are started without network access or with - limited network access and cannot connect back to Greenplum Database or open any other - external connections. For information about available UDF languages, see

-

Generally speaking, a Docker container is a Linux process that runs in a managed way - by using Linux kernel features such as cgroups, namespaces and union file systems. A Docker - image is the basis of a container. A Docker container is a running instance of a - Docker image. When you start a Docker container you specify a Docker image. A Docker image - is the collection of root filesystem changes and execution parameters that are used when you - run a Docker container on the host system. An image does not have state and never changes. - For information about Docker, see the Docker web site https://www.docker.com/.

-

Greenplum Database starts a container only on the first call to a function in that - container. For example, consider a query that selects table data using all available - segments, and applies a transformation to the data using a PL/Container function. In this - case, Greenplum Database would start the Docker container only once on each segment, and - then contact the running container to obtain the results.

-

After starting a full cycle of a query execution, the executor sends a call to the - container. The container might respond with an SPI - SQL query executed by the container to - get some data back from the database, returning the result to the query executor.

-

The container shuts down when the connection to it is closed. This occurs when you close - the Greenplum Database session that started the container. A container running in standby - mode has almost no consumption of CPU resources as it is waiting on the socket. PL/Container - memory consumption depends on the amount of data you cache in global dictionaries.

-

The PL/Container language extension is available as an open source module. For information - about the module, see the README file in the GitHub repository at https://github.com/greenplum-db/plcontainer.

- -
- - Requirements and Limitations - -
- Requirements -

These are requirements for running PL/Container with Greenplum Database:

-
    -
  • PL/Container is supported with these Greenplum Database releases:
      -
    • PL/Container 1.x and 2.0.x is supported on Greenplum Database 5.2.x and later on - Red Hat Enterprise Linux (RHEL) 7.x (or later) and CentOS 7.x (or later).
    • -
    • PL/Container 2.1.0 and later is supported on Greenplum Database 6 on CentOS 7.x - (or later), RHEL 7.x (or later), or Ubuntu 18.04. - PL/Container 2.1.0 and later supports Docker images with Python 3 - installed.
    • -
    - PL/Container is not supported when Greenplum Database is run within - a Docker container.
  • -
  • For the Docker host RHEL 7.x and CentOS 7.x operating system, the minimum supported - Linux OS kernel version is 3.10.

    You can check your kernel version with the command - uname -r.

  • -
-
    -
  • These are the minimum Docker versions that must be installed on Greenplum Database - hosts (master, primary and all standby hosts):
      -
    • For PL/Container 1.x or 2.0.x on RHEL or CentOS 7.x - Docker 17.05
    • -
    • -

      For PL/Container 2.1.x on CentOS or RHEL 7.x, or Ubuntu 18.04 - Docker 19.03

      -
    • -

    See .

  • -
  • On each Greenplum Database host, the gpadmin user should be part of - the docker group for the user to be able to manage Docker images and - containers.
  • -
-
-
- Limitations -

These are PL/Container limitations:

-
    -
  • Python and R call stack information is not displayed when debugging a UDF.
  • -
  • The plpy.execute() methods nrows() and - status() are not supported.
  • -
  • Multi-dimensional arrays are not supported.
  • -
  • The PL/Python function plpy.SPIError() is not supported.
  • -
  • Executing the SAVEPOINT command with plpy.execute() - is not supported.
  • -
  • Greenplum Database domains are not supported.
  • -
  • The DO command is not supported.
  • -
  • Only PL/Container 1.2.x and later can be managed by Greenplum Database resource - groups. Resource Groups are available in Greenplum Database 5.8.0 and later. See .
  • -
  • OUT parameters are not supported.
  • -
  • The Python dict type cannot be returned from a PL/Python UDF. When - returning the Python dict type from a UDF, you can convert the - dict type to a Greenplum Database user-defined data type (UDT).
  • -
  • You cannot upgrade from version 1.0 to 1.1 or - later with the gppkg utility -u option. You uninstall - version 1.0 and install the new version. See .
  • -
+

The Greenplum Database PL/Container language extension allows users to create and run + PL/Python or PL/R user-defined functions (UDFs) securely, inside a Docker container. A + Docker container is a Linux process that runs in a managed way by using Linux kernel + features such as cgroups, namespaces and union file systems. For information about Docker, + see the Docker web site.

+

Running UDFs inside the Docker container has several benefits:

+
    +
  • ensures isolation of the execution process in a separate environment and allows + decoupling of the data processing. SQL operators such as "scan," "filter," and "project" + are executed at the query executor (QE) side, and advanced data analysis is executed at + the container side.
  • +
  • the user code cannot access the OS or the file system of the local host.
  • +
  • the code cannot introduce any security risks.
  • +
  • the functions cannot connect back to the Greenplum Database if the container is started + with limited or no network access.
  • +
  • the user functions cannot open any unsecure external connections.
  • +
+ +
+ PL/Container Architecture + + + + + +

Example of the process flow:

+

Consider a query that selects table data using all available segments, and transforms the + data using a PL/Container function. On the first call to a function in a segment + container, the query executor on master host starts the container on that segment host. It + then contacts the running container to obtain the results. The container might respond + with an SPI - a SQL query executed by the container to get some data back from the + database - returning the result to the query executor.

+

A container running in standby mode waits on the socket and does not consume any CPU + resources. PL/Container memory consumption depends on the amount of data cached in global + dictionaries.

+

The container connection is closed by closing the Greenplum Database session that started + the container, and the container shuts down.

+
- - About PL/Container Resource Management - -

Greenplum Database runs PL/Container user-defined functions in Docker containers. The - Docker containers and the Greenplum Database server share CPU and memory resources on the - same hosts. In the default case, Greenplum Database is unaware of the resources consumed by - running PL/Container instances. Using PL/Container 1.2 and later with Greenplum Database - 5.8.0 and later, you can use Greenplum Database resource groups to control overall CPU and - memory resource usage for running PL/Container instances, as described in the following - section.

-

PL/Container manages resource usage at two levels - the container level and the runtime - level. You can control container-level CPU and memory resources with the - memory_mb and cpu_share settings that you configure for - the PL/Container runtime. memory_mb governs the memory resources available - to each container instance. The cpu_share setting identifies the relative - weighting of a container's CPU usage compared to other containers. Refer to for PL/Container configuration information.

-

You cannot, by default, restrict the number of executing PL/Container container instances, - nor can you restrict the total amount of memory or CPU resources that they consume.

- - - Using Resource Groups to Manage PL/Container Resources - -

With PL/Container 1.2.0 and later, you can use Greenplum Database resource groups to - manage and limit the total CPU and memory resources of containers in PL/Container - runtimes. For more information about enabling, configuring, and using Greenplum Database - resource groups, refer to Using Resource Groups in the Greenplum Database - Administrator Guide.

- If you do not explicitly configure resource groups for a PL/Container runtime, its - container instances are limited only by system resources. The containers may consume - resources at the expense of the Greenplum Database server. -

Resource groups for external components such as PL/Container use Linux control groups - (cgroups) to manage component-level use of memory and CPU resources. When you manage - PL/Container resources with resource groups, you configure both a memory limit and a CPU - limit that Greenplum Database applies to all container instances that share the same - PL/Container runtime configuration.

-

When you create a resource group to manage the resources of a PL/Container runtime, you - must specify MEMORY_AUDITOR=cgroup and CONCURRENCY=0 in - addition to the required CPU and memory limits. For example, the following command creates - a resource group named plpy_run1_rg for a PL/Container runtime: - CREATE RESOURCE GROUP plpy_run1_rg WITH (MEMORY_AUDITOR=cgroup, CONCURRENCY=0, - CPU_RATE_LIMIT=10, MEMORY_LIMIT=10);

-

PL/Container does not use the MEMORY_SHARED_QUOTA and - MEMORY_SPILL_RATIO resource group memory limits. Refer to the - CREATE RESOURCE GROUP reference page for - detailed information about this SQL command.

-

You can create one or more resource groups to manage your running PL/Container instances. - After you create a resource group for PL/Container, you assign the resource group to one - or more PL/Container runtimes. You make this assignment using the groupid - of the resource group. You can determine the groupid for a given resource - group name from the gp_resgroup_config - gp_toolkit view. For example, the following query displays the - groupid of a resource group named - plpy_run1_rg:SELECT groupname, groupid FROM gp_toolkit.gp_resgroup_config - WHERE groupname='plpy_run1_rg'; - - groupname | groupid ---------------+---------- - plpy_run1_rg | 16391 -(1 row)

-

You assign a resource group to a PL/Container runtime configuration by specifying the - -s resource_group_id=rg_groupid option to the - plcontainer runtime-add (new runtime) or plcontainer - runtime-replace (existing runtime) commands. For example, to assign the - plpy_run1_rg resource group to a new PL/Container runtime named - python_run1: - plcontainer runtime-add -r python_run1 -i pivotaldata/plcontainer_python_shared:devel -l python -s resource_group_id=16391

-

You can also assign a resource group to a PL/Container runtime using the - plcontainer runtime-edit command. For information about the - plcontainer command, see .

-

After you assign a resource group to a PL/Container runtime, all container instances that - share the same runtime configuration are subject to the memory limit and the CPU limit - that you configured for the group. If you decrease the memory limit of a PL/Container - resource group, queries executing in running containers in the group may fail with an out - of memory error. If you drop a PL/Container resource group while there are running - container instances, Greenplum Database kills the running containers.

- -
- - Configuring Resource Groups for PL/Container - -

To use Greenplum Database resource groups to manage PL/Container resources, you must - explicitly configure both resource groups and PL/Container.

- PL/Container 1.2 and later utilizes the new resource group capabilities introduced in - Greenplum Database 5.8.0. If you downgrade to a Greenplum Database system that uses - PL/Container 1.1. or earlier, you must use plcontainer runtime-edit to - remove any resource_group_id settings from your PL/Container runtime - configuration. - - - Procedure - -

Perform the following procedure to configure PL/Container to use Greenplum Database - resource groups for CPU and memory resource management:

-
    -
  1. If you have not already configured and enabled resource groups in your Greenplum - Database deployment, configure cgroups and enable Greenplum Database resource groups - as described in Using Resource Groups in the Greenplum Database - Administrator Guide. - If you have previously configured and enabled resource groups in your - deployment, ensure that the Greenplum Database resource group - gpdb.conf cgroups configuration file includes a memory { - } block as described in the previous link.
  2. -
  3. Analyze the resource usage of your Greenplum Database deployment. Determine the - percentage of resource group CPU and memory resources that you want to allocate to - PL/Container Docker containers.
  4. -
  5. Determine how you want to distribute the total PL/Container CPU and memory resources - that you identified in the step above among the PL/Container runtimes. Identify:
      -
    • The number of PL/Container resource group(s) that you require.
    • -
    • The percentage of memory and CPU resources to allocate to each resource - group.
    • -
    • The resource-group-to-PL/Container-runtime assignment(s).
    • -
  6. -
  7. Create the PL/Container resource groups that you identified in the step above. For - example, suppose that you choose to allocate 25% of both memory and CPU Greenplum - Database resources to PL/Container. If you further split these resources among 2 - resource groups 60/40, the following SQL commands create the resource - groups:CREATE RESOURCE GROUP plr_run1_rg WITH (MEMORY_AUDITOR=cgroup, CONCURRENCY=0, - CPU_RATE_LIMIT=15, MEMORY_LIMIT=15); -CREATE RESOURCE GROUP plpy_run1_rg WITH (MEMORY_AUDITOR=cgroup, CONCURRENCY=0, - CPU_RATE_LIMIT=10, MEMORY_LIMIT=10);
  8. -
  9. Find and note the groupid associated with each resource group that - you created. For - example:SELECT groupname, groupid FROM gp_toolkit.gp_resgroup_config - WHERE groupname IN ('plpy_run1_rg', 'plr_run1_rg'); - - groupname | groupid ---------------+---------- - plpy_run1_rg | 16391 - plr_run1_rg | 16393 -(1 row)
  10. -
  11. Assign each resource group that you created to the desired PL/Container runtime - configuration. If you have not yet created the runtime configuration, use the - plcontainer runtime-add command. If the runtime already exists, use - the plcontainer runtime-replace or plcontainer - runtime-edit command to add the resource group assignment to the runtime - configuration. For example: - plcontainer runtime-add -r python_run1 -i pivotaldata/plcontainer_python_shared:devel -l python -s resource_group_id=16391 -plcontainer runtime-replace -r r_run1 -i pivotaldata/plcontainer_r_shared:devel -l r -s resource_group_id=16393

    For - information about the plcontainer command, see .

  12. -
- -
-
-
- - PL/Container Docker Images - -

PL/Python and PL/R image are available from the Greenplum Database product download site of - Pivotal Network at https://network.pivotal.io/.

    -
  • PL/Container for Python 3 - Docker image with Python 3.7 and the Python Data Science - Module package installed. - PL/Container 2.1.0 and later supports Docker images with Python 3 - installed.
  • -
  • PL/Container for Python 2 - Docker image with Python 2.7.12 and the Python Data - Science Module package installed.
  • -
  • PL/Container for R - A Docker image with container with R-3.3.3 and the R Data Science - Library package installed.
  • -

-

The Data Science packages contain a set of Python modules or R functions and data sets - related to data science. For information about the packages, see - Python Data Science - Module Package and R Data Science Library Package.

-

The Docker image tag represents the PL/Container release version (for example, 2.1.0). For - example, the full Docker image name for the PL/Container for Python Docker image is similar - to pivotaldata/plc_python_shared:2.1.0. This is the name that is referred - to in the default PL/Container configuration. Also, you can create custom Docker images, - install the image and add the image to the PL/Container configuration.

- -
+ - Installing the PL/Container Language Extension + Install PL/Container + -

To use PL/Container, install the PL/Container language extension, install Docker images, - and configure PL/Container to use the images.

    -
  1. Ensure the Greenplum Database hosts meet the prerequisites, see .
  2. -
  3. Install the PL/Container extension, see .

    If you are upgrading from PL/Container - 1.0, see .

  4. -
  5. Build and Install the PL/Container extension from source, see - .
  6. -
  7. Install Docker images and configure PL/Container, see .
  8. -

- - - Installing the PL/Container Language Extension Package - - -

Install the PL/Container language extension with the Greenplum Database - gppkg utility.

+
This topic includes how to:

    +
  • install Docker
  • +
  • install PL/Container
  • +
  • install the PL/Container + Docker images
  • +
  • test the PL/Container + installation.
  • +

The following sections describe these tasks in detail.

+
+ +
+ Prerequisites +
    +
  1. For PL/Container 2.1.0 and later use Greenplum Database 6 on CentOS 7.x (or later), + RHEL 7.x (or later), or Ubuntu 18.04. PL/Container 2.1.0 and later supports Docker + images with Python 3 installed.
  2. +
  3. The minimum Linux OS kernel version supported is 3.10. To verfiy your kernel release + use: $ uname -r +
  4. +
  5. The minimum Docker versions on all hosts needs to be Docker 19.03.
  6. +
+ +
+ +
+ Install Docker +

To use PL/Container you need to install Docker on all Greenplum Database host systems. + The these instructions show how to set up the Docker service on CentOS 7 but RHEL 7 is a + similar process.

+

These steps install the docker package and start the Docker service as a user with sudo + privileges.

+
    +
  1. Ensure the CentOS extras repository is accessible.
  2. +
  3. Ensure the user has sudo privileges or is root.
  4. +
  5. Install the dependencies required for + Docker:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  6. +
  7. Add the Docker + repo:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  8. +
  9. Update yum cache:sudo yum makecache fast
  10. +
  11. Install Docker:sudo yum -y install docker-ce
  12. +
  13. Start Docker daemon:sudo systemctl start docker
  14. +
  15. On each Greenplum Database host, the gpadmin user should be part of + the docker group for the user to be able to manage Docker images and containers. Assign + the Greenplum Database administrator gpadmin to the group + docker: sudo usermod -aG docker gpadmin
  16. +
  17. Exit the session and login again to update the privileges.
  18. +
  19. Configure Docker to start when the host system + starts:sudo systemctl enable docker.servicesudo systemctl start docker.service
  20. +
  21. Run a Docker command to test the Docker installation. This command lists the currently + running Docker containers. docker ps
  22. +
  23. After you install Docker on all Greenplum Database hosts, restart the Greenplum + Database system to give Greenplum Database access to Docker. + gpstop -ra
  24. +
+

For a list of observations while using Docker and PL/Container, see the Notes section. For a list of Docker reference documentation, + see Docker References.

+
+ +
+ Install PL/Container + +

Install the PL/Container language extension using the gppkg utility.

    -
  1. Copy the PL/Container language extension package to the Greenplum Database master host - as the gpadmin user.
  2. -
  3. Make sure Greenplum Database is up and running. If not, bring it up with this - command.gpstart -a
  4. +
  5. Download the PL/Container package version that applies to your Greenplum Database + version, from VMware Tanzu Network. PL/Container is listed under Greenplum Database Language + extensions.
  6. +
  7. As gpadmin, copy the PL/Container language extension package to the + master host.
  8. +
  9. Make sure Greenplum Database is up and running:gpstate -sIf + it's not, start it:gpstart -a
  10. Run the package installation - command.gppkg -i plcontainer-2.1.0-rhel7-x86_64.gppkg
  11. + command:gppkg -i plcontainer-2.1.0-rhel7-x86_64.gppkg
  12. Source the file - $GPHOME/greenplum_path.sh.source $GPHOME/greenplum_path.sh
  13. -
  14. Restart Greenplum Database.gpstop -ra
  15. -
  16. Enable PL/Container for specific databases by running this command.
      -
    1. For PL/Container 1.1 and later, log into the database as a Greenplum Database - superuser (gpadmin) and run this - command.CREATE EXTENSION plcontainer;

      The command - registers PL/Container and creates PL/Container-specific functions and - views.

    2. -
    3. For PL/Container 1.0, run this - command.psql -d your_database -f $GPHOME/share/postgresql/plcontainer/plcontainer_install.sql

      The - SQL script registers the language plcontainer in the database and - creates PL/Container-specific functions and views.

    4. -
  17. + $GPHOME/greenplum_path.sh:source $GPHOME/greenplum_path.sh +
  18. Restart Greenplum Database:gpstop -ra
  19. +
  20. Login into one of the available databases, for example: + psql postgres
  21. +
  22. Register the PL/Container extension, which installs the plcontainer + utility:CREATE EXTENSION plcontainer;

    You'll need to + register the utility separately on each database that might need the PL/Container + functionality.

-

After installing PL/Container, you can manage Docker images and manage the PL/Container - configuration with the Greenplum Database plcontainer utility.

- - - - Upgrading from PL/Container 1.0 - -

To upgrade to PL/Container 1.1 or later, uninstall version 1.0 and install the new - version. You cannot use the gppkg option -u. The - gppkg utility installs PL/Container 1.1 and later as a Greenplum - Database extension, while PL/Container 1.0 is installed as a Greenplum Database language. - The Docker images and the PL/Container configuration do not change when upgrading - PL/Container, only the PL/Container extension installation changes.

-

As part of the upgrade process, you must drop PL/Container from all databases that are - configured with PL/Container.

- Dropping PL/Container from a database drops all PL/Container UDFs - from the database, including user-created PL/Container UDFs. If the UDFs are required, - ensure you can re-create the UDFs before dropping PL/Container. This - SELECT command lists the names of and body of PL/Container UDFs in a - database.SELECT proname, prosrc FROM pg_proc WHERE prolang = (SELECT oid FROM pg_language WHERE lanname = 'plcontainer');

For - information about the catalog tables, pg_proc and - pg_language, see System Tables.

-

These steps upgrade from PL/Container 1.0 to PL/Container 1.1 or later in a database. The - steps save the PL/Container 1.0 configuration and restore the configuration for use with - PL/Container 1.1 or later.

    -
  1. Save the PL/Container configuration. This example saves the configuration to - plcontainer10-backup.xml in the local - directory.plcontainer runtime-backup -f plcontainer10-backup.xml
  2. -
  3. Remove any setting elements that contain the - use_container_network attribute from the configuration file. For - example, this setting element must be removed from the configuration - file.<setting use_container_network="yes"/>
  4. -
  5. Run the plcontainer_uninstall.sql script as the - gpadmin user for each database that is configured with - PL/Container. For example, this command drops the plcontainer - language in the mytest database. - psql -d mytest -f $GPHOME/share/postgresql/plcontainer/plcontainer_uninstall.sql

    The - script drops the plcontainer language with the - CASCADE clause that drops PL/Container-specific functions and - views in the database.

  6. -
  7. Use the Greenplum Database gppkg utility with the - -r option to uninstall the PL/Container language extension. This - example uninstalls the PL/Container language extension on a Linux - system.$ gppkg -r plcontainer-1.0.0
  8. -
  9. Run the package installation command. This example installs the PL/Container 2.1.0 - language extension on a Linux - system.gppkg -i plcontainer-2.1.0-gp6-rhel7_x86_64.gppkg
  10. -
  11. Source the file - $GPHOME/greenplum_path.sh.source $GPHOME/greenplum_path.sh
  12. -
  13. Update the PL/Container configuration. This command restores the saved - configuration.plcontainer runtime-restore -f plcontainer10-backup.xml
  14. -
  15. Restart Greenplum Database.gpstop -ra
  16. -
  17. Register the new PL/Container extension as an extension for each database that uses - PL/Container UDFs. This psql command runs a CREATE - EXTENSION command to register PL/Container in the database - mytest. - psql -d mytest -c 'CREATE EXTENSION plcontainer;'

    The - command registers PL/Container as an extension and creates PL/Container-specific - functions and views.

  18. -

-

After upgrading PL/Container for a database, re-install any user-created PL/Container - UDFs that are required.

- -
- - Upgrading from PL/Container 1.1 +
+ +
+ Install PL/Container Docker Images +

Install the Docker images that PL/Container will use to create language specific + containers to run the UDFs.

+ +

The PL/Container open source module contains dockerfiles to build + Docker images that can be used with PL/Container. You can build a Docker image to run + PL/Python UDFs and a Docker image to run PL/R UDFs. See the dockerfiles in the GitHub + repository at https://github.com/greenplum-db/plcontainer.

+ +
    +
  • Download the tar.gz files that contain the Docker images from from VMware Tanzu + Network. For example, for Greenplum 6.3, download PL/Container Docker Image + for Python with file name plcontainer-python-image-2.1.0-gp6.tar.gz + which includes Python 2.7.12 and the Python Data Science Module Package.

    If + you require different images from the ones provided by Pivotal, you can create custom + Docker images, install the image and add the image to the PL/ Container configuration. +

  • +
  • +

    Use the plcontainer utility command image-add to + install the images on all Greenplum Database hosts where -f + indicates the location of the downloaded files:

    + # Install a Python 2 based Docker image +plcontainer image-add -f /home/gpadmin/plcontainer-python-image-2.1.0-gp6.tar.gz + +# Install a Python 3 based Docker image +plcontainer image-add -f /home/gpadmin/plcontainer-python3-image-2.1.0-gp6.tar.gz + +# Install an R based Docker image +plcontainer image-add -f /home/gpadmin/plcontainer-r-image-2.1.0-gp6.tar.gz +

    The utility displays progress information, similar to:

    + 20200127:21:54:43:004607 plcontainer:mdw:gpadmin-[INFO]:-Checking whether docker is installed on all hosts... +20200127:21:54:43:004607 plcontainer:mdw:gpadmin-[INFO]:-Distributing image file /home/gpadmin/plcontainer-python-images-1.5.0.tar to all hosts... +20200127:21:54:55:004607 plcontainer:mdw:gpadmin-[INFO]:-Loading image on all hosts... +20200127:21:55:37:004607 plcontainer:mdw:gpadmin-[INFO]:-Removing temporary image files on all hosts... +

    For more information on image-add options, visit the plcontainer reference page.

    +
  • +
  • To display the installed Docker images on the local host use: + $ plcontainer image-list + + REPOSITORY + TAG + IMAGE ID + CREATED + + + pivotaldata/plcontainer_r_shared + devel + 7427f920669d + 10 months ago + + + pivotaldata/plcontainer_python_shared + devel + e36827eba53e + 10 months ago + + + pivotaldata/plcontainer_python3_shared + devel + y32827ebe55b + 5 months ago + +
  • +
  • Add the image information to the PL/Container configuration file using + plcontainer runtime-add, to allow PL/Container to associate + containers with specified Docker images.

    Use the -r option to + specify your own user defined runtime ID name, use the -i option to + specify the Docker image, and the -l option to specify the Docker + image language. When there are multiple versions of the same docker image, for + example 1.0.0 or 1.2.0, specify the TAG version using ":" after the image name. +

    # Add a Python 2 based runtime +plcontainer runtime-add -r plc_python_shared -i pivotaldata/plcontainer_python_shared:devel -l python + +# Add a Python 3 based runtime that is supported with PL/Container 2.1.0 and later +plcontainer runtime-add -r plc_python3_shared -i pivotaldata/plcontainer_python3_shared:devel -l python3 + +# Add an R based runtime +plcontainer runtime-add -r plc_r_shared -i pivotaldata/plcontainer_r_shared:devel -l rThe + utility displays progress information as it updates the PL/Container configuration file + on the Greenplum Database instances.

    For details on other + runtime-add options, see the plcontainer reference page. +

  • +
  • Optional: Use Greenplum Database resource groups to manage and limit the total CPU and + memory resources of containers in PL/Container runtimes. In this example, the Python + runtime will be used with a preconfigured resource group + 16391:.plcontainer runtime-add -r plc_python_shared -i pivotaldata/plcontainer_python_shared:devel -l + python -s resource_group_id=16391

    For + more information about enabling, configuring, and using Greenplum Database resource + groups with PL/Container, see PL/Container Resource Management .

  • +
+

You can now create a simple function to test your PL/Container installation.

+
+
+ Test the PL/Container Installation +

List the names of the runtimes your created and added to the PL/Container XML + file:plcontainer runtime-show +

+

Which will show a list of all installed + runtimes:PL/Container Runtime Configuration: +--------------------------------------------------------- + Runtime ID: plc_python_shared + Linked Docker Image: pivotaldata/plcontainer_python_shared:devel + Runtime Setting(s): + Shared Directory: + ---- Shared Directory From HOST '/usr/local/greenplum-db/./bin/plcontainer_clients' to Container '/clientdir', access mode is 'ro' +--------------------------------------------------------- + + +

+

You can also view the PL/Container configuration information with the plcontainer + runtime-show -r <runtime_id> command. You can view the PL/Container + configuration XML file with the plcontainer runtime-edit command.

+

Use the psql utility and select an existing database:

+ psql postgres; +

If PL/Container extension is not registered with the selected database, first enable the + extension:

+ postgres=# CREATE EXTENSION plcontainer; +

Create a simple function to test your installation, where the function will use the + runtime plc_python_shared:

+ postgres=# CREATE FUNCTION dummyPython() RETURNS text AS $$ +# container: plc_python_shared +return 'hello from Python' +$$ LANGUAGE plcontainer; +

And test the function using:

+ postgres=# SELECT dummyPython(); + dummypython +------------------- + hello from Python +(1 row) + +

For further details and examples about using PL/Container functions, see PL/Container Functions .

+
+ +
+ + + Upgrade PL/Container -

To upgrade from PL/Container 1.1 or higher, you save the current configuration, upgrade - PL/Container, and then restore the configuration after upgrade. There is no need to update - the Docker images when you upgrade PL/Container.

+

To upgrade PL/Container, you save the current configuration, upgrade PL/Container, and + then restore the configuration after upgrade. There is no need to update the Docker images + when you upgrade PL/Container.

Before you perform this upgrade procedure, ensure that you have migrated your - PL/Container 1.1 package from your previous Greenplum Database installation to your new + PL/Container package from your previous Greenplum Database installation to your new Greenplum Database installation. Refer to the gppkg command for package installation and migration information. -

Perform the following procedure to upgrade from PL/Container 1.1 to PL/Container version - 1.2 or later.

    +

    To upgrade, perform the following procedure: +

    1. Save the PL/Container configuration. For example, to save the configuration to a - file named plcontainer110-backup.xml in the local - directory:$ plcontainer runtime-backup -f plcontainer110-backup.xml
    2. + file named plcontainer202-backup.xml in the local + directory:$ plcontainer runtime-backup -f plcontainer202-backup.xml
    3. Use the Greenplum Database gppkg utility with the -u option to update the PL/Container language extension. For example, the following command updates the PL/Container language extension to version @@ -435,94 +334,22 @@ plcontainer runtime-replace -r r_run1 -i pivotaldata/plcontainer_r_shared:devel system:$ gppkg -u plcontainer-2.1.0-gp6-rhel7_x86_64.gppkg
    4. Source the Greenplum Database environment file $GPHOME/greenplum_path.sh.$ source $GPHOME/greenplum_path.sh
    5. -
    6. Restore the PL/Container configuration. For example, this command restores the - PL/Container configuration that you saved in a previous step: - $ plcontainer runtime-restore -f plcontainer110-backup.xml
    7. +
    8. Restore the PL/Container configuration that you saved in a previous step: + $ plcontainer runtime-restore -f plcontainer202-backup.xml
    9. Restart Greenplum Database.$ gpstop -ra
    10. You do not need to re-register the PL/Container extension in the databases in which - you previously created the extension. You must register the PL/Container extension in - each new database that will run PL/Container UDFs. For example, the following command - registers PL/Container in a database named mytest: - $ psql -d mytest -c 'CREATE EXTENSION plcontainer;'

      The - command also creates PL/Container-specific functions and views.

    11. + you previously created the extension but ensure that you register the PL/Container + extension in each new database that will run PL/Container UDFs. For example, the + following command registers PL/Container in a database named mytest: + $ psql -d mytest -c 'CREATE EXTENSION plcontainer;'

      The + command also creates PL/Container-specific functions and views.

    - PL/Container 1.2 and later utilizes the new resource group capabilities introduced in - Greenplum Database 5.8.0. If you downgrade to a Greenplum Database system that uses - PL/Container 1.1. or earlier, you must use plcontainer runtime-edit to - remove any resource_group_id settings from your PL/Container runtime - configuration. - - - - Building and Installing the PL/Container Language Extension - - -

    The PL/Container language extension is available as an open source module. For - information about the building and installing the module as part of Greenplum Database, - see the README file in the GitHub repository at https://github.com/greenplum-db/plcontainer.

    - +
    - - - Installing PL/Container Docker Images - -

    The PL/Container language extension includes the plcontainer utility that - installs Docker images on the Greenplum Database hosts and adds configuration information to - the PL/Container configuration file. The configuration information allows PL/Container to - create Docker containers with the Docker images. For information about - plcontainer, see .

    - -

    Download the tar.gz file that contains the Docker - images from Pivotal Network.

      -
    • plcontainer-python3-image-<version>.tar.gz
    • -
    • plcontainer-python-image-<version>.tar.gz
    • -
    • plcontainer-r-image-<version>.tar.gz
    • -

    - -

    The PL/Container open source module contains dockerfiles to build - Docker images that can be used with PL/Container. You can build a Docker image to run - PL/Python UDFs and a Docker image to run PL/R UDFs. See the dockerfiles in the GitHub - repository at https://github.com/greenplum-db/plcontainer.

    -

    Install Docker images on all the Greenplum Database hosts with the plcontainer - image-add command. These examples assume that the Docker images are in files - located in /home/gpadmin. - # Install a Python 2 based Docker image -plcontainer image-add -f /home/gpadmin/plcontainer-python-image-2.1.0-gp6.tar.gz -# Install a Python 3 based Docker image -plcontainer image-add -f /home/gpadmin/plcontainer-python3-image-2.1.0-gp6.tar.gz - -# Install an R based Docker image -plcontainer image-add -f /home/gpadmin/plcontainer-r-image-2.1.0-gp6.tar.gz

    -

    The utility displays progress information as it installs the Docker image on the Greenplum - Database hosts.

    -

    Use the plcontainer image-list command to display the installed Docker - images on the local host.

    -

    Use the plcontainer runtime-add command to add information to the - PL/Container configuration file so that PL/Container can access the Docker image. The - -r option specifies the runtime ID that you choose. The - -l option specifies the language that is contained in the Docker image. - # Add a Python 2 based runtime -plcontainer runtime-add -r plc_py -i pivotaldata/plcontainer_python_shared:devel -l python - -# Add a Python 3 based runtime that is supported with PL/Container 2.1.0 and later -plcontainer runtime-add -r plc_py3 -i pivotaldata/plcontainer_python3_shared:devel -l python3 - -# Add an R based runtime -plcontainer runtime-add -r plc_r -i pivotaldata/plcontainer_r_shared:devel -l r

    -

    The utility displays progress information as it updates the PL/Container configuration file - on the Greenplum Database instances.

    -

    You can view the PL/Container configuration information with the plcontainer - runtime-show -r <runtime_id> command. You can view the PL/Container - configuration XML file with the plcontainer runtime-edit command.

    - -
    - - Uninstalling PL/Container + + + Uninstall PL/Container

    To uninstall PL/Container, remove Docker containers and images, and then remove the PL/Container support from Greenplum Database.

    @@ -553,31 +380,15 @@ plcontainer runtime-add -r plc_r -i pivotaldata/plcontainer_r_shared:devel -l r< Remove PL/Container Support for a Database -

    For a database that no long requires PL/Container, remove support for PL/Container.

    -
    - PL/Container 1.1 and Later -

    For PL/Container 1.1 and later, drop the extension from the database. This - psql command runs a DROP EXTENION command to remove - PL/Container in the database - mytest.psql -d mytest -c 'DROP EXTENSION plcontainer CASCADE;'

    -

    The command drops the plcontainer extension. The - CASCADE keyword drops PL/Container-specific functions and views from - the database.

    -
    -
    - PL/Container 1.0 -

    Run the plcontainer_uninstall.sql script as the - gpadmin user. For example, this command removes the - plcontainer language in the mytest database.

    - psql -d mytest -f $GPHOME/share/postgresql/plcontainer/plcontainer_uninstall.sql -

    The script drops the plcontainer language with - CASCADE to drop PL/Container-specific functions and views from the - database.

    -
    +

    To remove support for PL/Container, drop the extension from the database. Use the + psql utility with DROP EXTENION command (using + -c) to remove PL/Container from mytest database.

    + psql -d mytest -c 'DROP EXTENSION plcontainer CASCADE;' +

    The CASCADE keyword drops PL/Container-specific functions and views.

    - Uninstalling PL/Container Language Extension + Uninstall PL/Container Language Extension

    If no databases have plcontainer as a registered language, uninstall the Greenplum Database PL/Container language extension with the gppkg @@ -595,844 +406,16 @@ plcontainer runtime-add -r plc_r -i pivotaldata/plcontainer_r_shared:devel -l r<

-
- - Using PL/Container Functions - -

When you enable PL/Container in a database of a Greenplum Database system, the language - plcontainer is registered in the database. You can create and run - user-defined functions in the procedural languages supported by the PL/Container Docker - images when you specify plcontainer as a language in a UDF definition.

-

A UDF definition that uses PL/Container must have the these items.

-
    -
  • The first line of the UDF must be # container: - ID
  • -
  • The LANGUAGE attribute must be plcontainer
  • -
-

The ID is the name that PL/Container uses to identify a Docker image. - When Greenplum Database executes a UDF on a host, the Docker image on the host is used to - start a Docker container that runs the UDF. In the XML configuration file - plcontainer_configuration.xml, there is a runtime XML - element that contains a corresponding id XML element that specifies the - Docker container startup information. See for - information about how PL/Container maps the ID to a Docker image. See - for example UDF definitions.

-

The PL/Container configuration file is read only on the first invocation of a PL/Container - function in each Greenplum Database session that runs PL/Container functions. You can force - the configuration file to be re-read by performing a SELECT command on the - view plcontainer_refresh_config during the session. For example, this - SELECT command forces the configuration file to be read.

- SELECT * FROM plcontainer_refresh_config; -

Running the command executes a PL/Container function that updates the configuration on the - master and segment instances and returns the status of the - refresh. gp_segment_id | plcontainer_refresh_local_config ----------------+---------------------------------- - 1 | ok - 0 | ok - -1 | ok -(3 rows)

-

Also, you can show all the configurations in the session by performing a - SELECT command on the view plcontainer_show_config. For - example, this SELECT command returns the PL/Container configurations.

- SELECT * FROM plcontainer_show_config; -

Running the command executes a PL/Container function that displays configuration - information from the master and segment instances. This is an example of the start and end - of the view - output.INFO: plcontainer: Container 'plc_py_test' configuration -INFO: plcontainer: image = 'pivotaldata/plcontainer_python_shared:devel' -INFO: plcontainer: memory_mb = '1024' -INFO: plcontainer: use container network = 'no' -INFO: plcontainer: use container logging = 'no' -INFO: plcontainer: shared directory from host '/usr/local/greenplum-db/./bin/plcontainer_clients' to container '/clientdir' -INFO: plcontainer: access = readonly - - ... - -INFO: plcontainer: Container 'plc_r_example' configuration (seg0 slice3 192.168.180.45:40000 pid=3304) -INFO: plcontainer: image = 'pivotaldata/plcontainer_r_without_clients:0.2' (seg0 slice3 192.168.180.45:40000 pid=3304) -INFO: plcontainer: memory_mb = '1024' (seg0 slice3 192.168.180.45:40000 pid=3304) -INFO: plcontainer: use container network = 'no' (seg0 slice3 192.168.180.45:40000 pid=3304) -INFO: plcontainer: use container logging = 'yes' (seg0 slice3 192.168.180.45:40000 pid=3304) -INFO: plcontainer: shared directory from host '/usr/local/greenplum-db/bin/plcontainer_clients' to container '/clientdir' (seg0 slice3 192.168.180.45:40000 pid=3304) -INFO: plcontainer: access = readonly (seg0 slice3 192.168.180.45:40000 pid=3304) -gp_segment_id | plcontainer_show_local_config ----------------+------------------------------- - 0 | ok - -1 | ok - 1 | ok

-

The PL/Container function plcontainer_containers_summary() displays - information about the currently running Docker - containers.SELECT * FROM plcontainer_containers_summary();

-

If a normal (non-superuser) Greenplum Database user runs the function, the function - displays information only for containers created by the user. If a Greenplum Database - superuser runs the function, information for all containers created by Greenplum Database - users is displayed. This is sample output when 2 containers are running.

- SEGMENT_ID | CONTAINER_ID | UP_TIME | OWNER | MEMORY_USAGE(KB) -------------+------------------------------------------------------------------+--------------+---------+------------------ - 1 | 693a6cb691f1d2881ec0160a44dae2547a0d5b799875d4ec106c09c97da422ea | Up 8 seconds | gpadmin | 12940 - 1 | bc9a0c04019c266f6d8269ffe35769d118bfb96ec634549b2b1bd2401ea20158 | Up 2 minutes | gpadmin | 13628 -(2 rows) - - - Examples - -

The values in the # container lines of the examples, - plc_python_shared and plc_r_shared, are the - id XML elements defined in the plcontainer_config.xml - file. The id element is mapped to the image element that - specifies the Docker image to be started. If you configured PL/Container with a different - ID, change the value of the # container line. For information about - configuring PL/Container and viewing the configuration settings, see .

-

This is an example of PL/Python function that runs using the - plc_python_shared container that contains Python - 2:CREATE OR REPLACE FUNCTION pylog100() RETURNS double precision AS $$ -# container: plc_python_shared -import math -return math.log10(100) -$$ LANGUAGE plcontainer;

-

This is an example of a similar function using the plc_r_shared - container:CREATE OR REPLACE FUNCTION rlog100() RETURNS text AS $$ -# container: plc_r_shared -return(log10(100)) -$$ LANGUAGE plcontainer;

-

If the # container line in a UDF specifies an ID that is not in the - PL/Container configuration file, Greenplum Database returns an error when you try to - execute the UDF.

- -
-
- - About PL/Container Running PL/Python - -

In the Python language container, the module plpy is implemented. The - module contains these methods:

-
    -
  • plpy.execute(stmt) - Executes the query string stmt - and returns query result in a list of dictionary objects. To be able to access the result - fields ensure your query returns named fields.
  • -
  • plpy.prepare(stmt[, argtypes]) - Prepares the execution plan for a - query. It is called with a query string and a list of parameter types, if you have - parameter references in the query.
  • -
  • plpy.execute(plan[, argtypes]) - Executes a prepared plan.
  • -
  • plpy.debug(msg) - Sends a DEBUG2 message to the Greenplum Database - log.
  • -
  • plpy.log(msg) - Sends a LOG message to the Greenplum Database log.
  • -
  • plpy.info(msg) - Sends an INFO message to the Greenplum Database - log.
  • -
  • plpy.notice(msg) - Sends a NOTICE message to the Greenplum Database - log.
  • -
  • plpy.warning(msg) - Sends a WARNING message to the Greenplum Database - log.
  • -
  • plpy.error(msg) - Sends an ERROR message to the Greenplum Database log. - An ERROR message raised in Greenplum Database causes the query execution process to stop - and the transaction to rollback.
  • -
  • plpy.fatal(msg) - Sends a FATAL message to the Greenplum Database log. - A FATAL message causes Greenplum Database session to be closed and transaction to be - rolled back.
  • -
  • plpy.subtransaction() - Manages plpy.execute calls in - an explicit subtransaction. See Explicit Subtransactions in the PostgreSQL documentation for - additional information about plpy.subtransaction().
  • -
-

If an error of level ERROR or FATAL is raised in a nested - Python function call, the message includes the list of enclosing functions.

-

The Python language container supports these string quoting functions that are useful when - constructing ad-hoc queries.

    -
  • plpy.quote_literal(string) - Returns the string quoted to be used as - a string literal in an SQL statement string. Embedded single-quotes and backslashes are - properly doubled. quote_literal() returns null on null input (empty - input). If the argument might be null, quote_nullable() might be more - appropriate.
  • -
  • plpy.quote_nullable(string) - Returns the string quoted to be used as - a string literal in an SQL statement string. If the argument is null, returns - NULL. Embedded single-quotes and backslashes are properly - doubled.
  • -
  • - plpy.quote_ident(string) - Returns the string quoted to be used as an - identifier in an SQL statement string. Quotes are added only if necessary (for example, - if the string contains non-identifier characters or would be case-folded). Embedded - quotes are properly doubled.
  • -

-

When returning text from a PL/Python function, PL/Container converts a Python unicode - object to text in the database encoding. If the conversion cannot be performed, an error is - returned.

-

PL/Container does not support this Greenplum Database PL/Python feature:

    -
  • Multi-dimensional arrays.
  • -

-

Also, the Python module has two global dictionary objects that retain the data between - function calls. They are named GD and SD. GD is used to share the data between all the - function running within the same container, while SD is used for sharing the data between - multiple calls of each separate function. Be aware that accessing the data is possible only - within the same session, when the container process lives on a segment or master. Be aware - that for idle sessions Greenplum Database terminates segment processes, which means the - related containers would be shut down and the data from GD and SD lost.

-

For information about PL/Python, see .

-

For information about the plpy methods, see https://www.postgresql.org/docs/9.4/plpython-database.htm.

- -
- - About PL/Container Running PL/R - -

In the R language container, the module pg.spi is implemented. The module - contains these methods:

-
    -
  • pg.spi.exec(stmt) - Executes the query string stmt and - returns query result in R data.frame. To be able to access the result - fields make sure your query returns named fields.
  • -
  • pg.spi.prepare(stmt[, argtypes]) - Prepares the execution plan for a - query. It is called with a query string and a list of parameter types if you have - parameter references in the query.
  • -
  • pg.spi.execp(plan[, argtypes]) - Execute a prepared plan.
  • -
  • pg.spi.debug(msg) - Sends a DEBUG2 message to the Greenplum Database - log.
  • -
  • pg.spi.log(msg) - Sends a LOG message to the Greenplum Database - log.
  • -
  • pg.spi.info(msg) - Sends an INFO message to the Greenplum Database - log.
  • -
  • pg.spi.notice(msg) - Sends a NOTICE message to the Greenplum Database - log.
  • -
  • pg.spi.warning(msg) - Sends a WARNING message to the Greenplum Database - log.
  • -
  • pg.spi.error(msg) - Sends an ERROR message to the Greenplum Database - log. An ERROR message raised in Greenplum Database causes the query execution process to - stop and the transaction to rollback.
  • -
  • pg.spi.fatal(msg) - Sends a FATAL message to the Greenplum Database - log. A FATAL message causes Greenplum Database session to be closed and transaction to be - rolled back.
  • -
-

PL/Container does not support this PL/R feature:

    -
  • Multi-dimensional arrays.
  • -

-

For information about PL/R, see .

-

For information about the pg.spi methods, see http://www.joeconway.com/plr/doc/plr-spi-rsupport-funcs-normal.html

- -
- - Configuring PL/Container - -

The Greenplum Database utility plcontainer manages the PL/Container - configuration files in a Greenplum Database system. The utility ensures that the - configuration files are consistent across the Greenplum Database master and segment - instances.

- Modifying the configuration files on the segment instances without using - the utility might create different, incompatible configurations on different Greenplum - Database segments that could cause unexpected behavior. -

Configuration changes that are made with the utility are applied to the XML files on all - Greenplum Database segments. However, PL/Container configurations of currently running - sessions use the configuration that existed during session start up. To update the - PL/Container configuration in a running session, execute this command in the session.

- SELECT * FROM plcontainer_refresh_config; -

Running the command executes a PL/Container function that updates the session configuration - on the master and segment instances.

- - - The plcontainer Utility - -

The plcontainer utility installs Docker images and manages the - PL/Container configuration. The utility consists of two sets of commands.

-
    -
  • image-* commands manage Docker images on the Greenplum Database - system hosts.
  • -
  • runtime-* commands manage the PL/Container configuration file on the - Greenplum Database instances. You can add Docker image information to the PL/Container - configuration file including the image name, location, and shared folder information. - You can also edit the configuration file.
  • -
-

To configure PL/Container to use a Docker image, you install the Docker image on all the - Greenplum Database hosts and then add configuration information to the PL/Container - configuration.

-

PL/Container configuration values, such as image names, runtime IDs, and parameter values - and names are case sensitive.

-
- plcontainer Syntax - plcontainer [command] [-h | --help] [--verbose] -

Where command is one of the following.

- image-add {{-f | --file} image_file} | {{-u | --URL} image_URL} - image-delete {-i | --image} image_name - image-list + - runtime-add {-r | --runtime} runtime_id - {-i | --image} image_name {-l | --language} {python | python3 | r} - [{-v | --volume} shared_volume [{-v| --volume} shared_volume...]] - [{-s | --setting} param=value [{-s | --setting} param=value ...]] - runtime-replace {-r | --runtime} runtime_id - {-i | --image} image_name -l {r | python} - [{-v | --volume} shared_volume [{-v | --volume} shared_volume...]] - [{-s | --setting} param=value [{-s | --setting} param=value ...]] - runtime-show {-r | --runtime} runtime_id - runtime-delete {-r | --runtime} runtime_id - runtime-edit [{-e | --editor} editor] - runtime-backup {-f | --file} config_file - runtime-restore {-f | --file} config_file - runtime-verify -
-
- plcontainer Commands and Options -
- - - image-add location - Install a Docker image on the Greenplum Database hosts. Specify either the location - of the Docker image file on the host or the URL to the Docker image. These are the - supported location options.
    -
  • {-f | --file} image_file Specify the tar - archive file on the host that contains the Docker image. This example points to an - image file in the gpadmin home directory - /home/gpadmin/test_image.tar.gz
  • -
  • {-u | --URL} image_URL Specify the URL of the - Docker repository and image. This example URL points to a local Docker repository - 192.168.0.1:5000/images/mytest_plc_r:devel
  • -
- After installing the Docker image, use the runtime-add - command to configure PL/Container to use the Docker image. -
- - image-delete {-i | --image} image_name - Remove an installed Docker image from all Greenplum Database hosts. Specify the full - Docker image name including the tag for example - pivotaldata/plcontainer_python_shared:1.0.0 - - - image-list - List the Docker images installed on the host. The command list only the images on - the local host, not remote hosts. The command lists all installed Docker images, - including images installed with Docker commands. - - - runtime-add options - Add configuration information to the PL/Container configuration file on all - Greenplum Database hosts. If the specified runtime_id exists, the - utility returns an error and the configuration information is not added. - For information about PL/Container configuration, see . - These are the supported options: - - - - {-i | --image} docker-image - Required. Specify the full Docker image name, including the tag, that is - installed on the Greenplum Database hosts. For example - pivotaldata/plcontainer_python:1.0.0. - The utility returns a warning if the specified Docker image is not - installed. - The plcontainer image-list command displays installed image - information including the name and tag (the Repository and Tag columns). - - - {-l | --language} python | python3 | r - Required. Specify the PL/Container language type, supported values are - python (PL/Python using Python 2), python3 - (PL/Python using Python 3) and r (PL/R). When adding - configuration information for a new runtime, the utility adds a startup command - to the configuration based on the language you specify. - Startup command for the Python 2 - language./clientdir/pyclient.sh - Startup command for the Python 3 - language./clientdir/pyclient3.sh - Startup command for the R - language./clientdir/rclient.sh - - - {-r | --runtime} runtime_id - - Required. Add the runtime ID. When adding a runtime element - in the PL/Container configuration file, this is the value of the - id element in the PL/Container configuration file. Maximum - length is 63 Bytes. - You specify the name in the Greenplum Database UDF on the # - container line. See . - - - {-s | --setting} - param=value - Optional. Specify a setting to add to the runtime configuration information. - You can specify this option multiple times. The setting applies to the runtime - configuration specified by the runtime_id. The parameter is - the XML attribute of the settings element in the PL/Container - configuration file. These are valid parameters.
    -
  • cpu_share - Set the CPU limit for each container in the - runtime configuration. The default value is 1024. The value is a relative - weighting of CPU usage compared to other containers.
  • -
  • memory_mb - Set the memory limit for each container in - the runtime configuration. The default value is 1024. The value is an - integer that specifies the amount of memory in MB.
  • -
  • resource_group_id - Assign the specified resource group - to the runtime configuration. The resource group limits the total CPU and - memory resource usage for all containers that share this runtime - configuration. You must specify the groupid of the resource - group. For information about managing PL/Container resources, see About PL/Container Resource - Management.
  • -
  • roles - Specify the Greenplum Database roles that are - allowed to run a container for the runtime configuration. You can specify a - single role name or comma separated lists of role names. The default is no - restriction.
  • -
  • use_container_logging - Enable or disable Docker logging - for the container. The value is either yes (enable logging) - or no (disable logging, the default).

    The Greenplum - Database server configuration parameter log_min_messages controls the log level. - The default log level is warning. For information about - PL/Container log information, see Notes.

  • -
-
- - {-v | --volume} shared-volume - Optional. Specify a Docker volume to bind mount. You can specify this option - multiple times to define multiple volumes. - The format for a shared volume: - host-dir:container-dir:[rw|ro]. - The information is stored as attributes in the shared_directory - element of the runtime element in the PL/Container - configuration file.
    -
  • host-dir - absolute path to a directory on the host - system. The Greenplum Database administrator user (gpadmin) must have - appropriate access to the directory.
  • -
  • container-dir - absolute path to a directory in the - Docker container.
  • -
  • [rw|ro] - read-write or read-only access to the host - directory from the container.
  • -
- When adding configuration information for a new runtime, the utility adds this - read-only shared volume information. - - greenplum-home/bin/plcontainer_clients:/clientdir:ro - - If needed, you can specify other shared directories. The utility returns an - error if the specified container-dir is the same as the one - that is added by the utility, or if you specify multiple shared volumes with the - same container-dir. - Allowing read-write access to a host directory requires - special considerations.
    -
  • When specifying read-write access to host directory, ensure that the - specified host directory has the correct permissions.
  • -
  • When running PL/Container user-defined functions, multiple concurrent - Docker containers that are running on a host could change data in the host - directory. Ensure that the functions support multiple concurrent access to - the data in the host directory.
  • -
-
-
-
-
- - runtime-backup {-f | --file} config_file - -

Copies the PL/Container configuration file to the specified file on the - local host.

-
-
- - runtime-delete {-r | --runtime} runtime_id - -

Removes runtime configuration information in the PL/Container - configuration file on all Greenplum Database instances. The utility returns a - message if the specified runtime_id does not exist in the - file.

-
-
- - runtime-edit [{-e | --editor} editor] - Edit the XML file plcontainer_configuration.xml with the specified - editor. The default editor is vi.

Saving the file updates the - configuration file on all Greenplum Database hosts. If errors exist in the updated - file, the utility returns an error and does not update the file.

-
- - runtime-replace options - -

Replaces runtime configuration information in the PL/Container - configuration file on all Greenplum Database instances. If the - runtime_id does not exist, the information is added to the - configuration file. The utility adds a startup command and shared directory to the - configuration.

-

See runtime-add for command options and information added to the - configuration.

-
-
- - runtime-restore {-f | --file} config_file - -

Replaces information in the PL/Container configuration file - plcontainer_configuration.xml on all Greenplum Database instances - with the information from the specified file on the local host.

-
-
- - runtime-show [{-r | --runtime} runtime_id] - -

Displays formatted PL/Container runtime configuration information. If a - runtime_id is not specified, the configuration for all runtime - IDs are displayed.

-
-
- - runtime-verify - -

Checks the PL/Container configuration information on the Greenplum - Database instances with the configuration information on the master. If the utility - finds inconsistencies, you are prompted to replace the remote copy with the local - copy. The utility also performs XML validation.

-
-
- - -h | --help - Display help text. If specified without a command, displays help for all - plcontainer commands. If specified with a command, displays help - for the command. - - - --verbose - Enable verbose logging for the command. - -
-
- Examples -

These are examples of common commands to manage PL/Container:

-
    -
  • Install a Docker image on all Greenplum Database hosts. This example loads a Docker - image from a file. The utility displays progress information on the command line as - the utility installs the Docker image on all the - hosts.plcontainer image-add -f plc_newr.tar.gz

    After - installing the Docker image, you add or update a runtime entry in the PL/Container - configuration file to give PL/Container access to the Docker image to start Docker - containers.

  • -
  • Add a container entry to the PL/Container configuration file. This example adds - configuration information for a PL/R runtime, and specifies a shared volume and - settings for memory and logging. - plcontainer runtime-add -r runtime2 -i test_image2:0.1 -l r \ - -v /host_dir2/shared2:/container_dir2/shared2:ro \ - -s memory_mb=512 -s use_container_logging=yes

    The - utility displays progress information on the command line as it adds the runtime - configuration to the configuration file and distributes the updated configuration to - all instances.

  • -
  • Show specific runtime with given runtime id in configuration - fileplcontainer runtime-show -r plc_python_shared

    The - utility displays the configuration information similar to this - output.PL/Container Runtime Configuration: ---------------------------------------------------------- - Runtime ID: plc_python_shared - Linked Docker Image: test1:latest - Runtime Setting(s): - Shared Directory: - ---- Shared Directory From HOST '/usr/local/greenplum-db/bin/plcontainer_clients' to Container '/clientdir', access mode is 'ro' - ---- Shared Directory From HOST '/home/gpadmin/share/' to Container '/opt/share', access mode is 'rw' ----------------------------------------------------------

  • -
  • Edit the configuration in an interactive editor of your choice. This example edits - the configuration file with the vim - editor.plcontainer runtime-edit -e vim

    When you save the - file, the utility displays progress information on the command line as it - distributes the file to the Greenplum Database hosts.

  • -
  • Save the current PL/Container configuration to a file. This example saves the file - to the local file - /home/gpadmin/saved_plc_config.xmlplcontainer runtime-backup -f /home/gpadmin/saved_plc_config.xml
  • -
  • Overwrite PL/Container configuration file with an XML file. This example replaces - the information in the configuration file with the information from the file in the - /home/gpadmin - directory.plcontainer runtime-restore -f /home/gpadmin/new_plcontainer_configuration.xmlThe - utility displays progress information on the command line as it distributes the - updated file to the Greenplum Database instances.
  • -
-
- -
- - PL/Container Configuration File - -

PL/Container maintains a configuration file - plcontainer_configuration.xml in the data directory of all Greenplum - Database segments. The PL/Container configuration file is an XML file. In the XML file, - the root element configuration contains one or more - runtime elements. You specify the id of the - runtime element in the # container: line of a - PL/Container function definition.

-

In an XML file, names, such as element and attribute names, and values are case - sensitive.

-

This is an example - file.<?xml version="1.0" ?> -<configuration> - <runtime> - <id>plc_python_example1</id> - <image>pivotaldata/plcontainer_python_with_clients:0.1</image> - <command>./pyclient</command> - </runtime> - <runtime> - <id>plc_python_example2</id> - <image>pivotaldata/plcontainer_python_without_clients:0.1</image> - <command>/clientdir/pyclient.sh</command> - <shared_directory access="ro" container="/clientdir" host="/usr/local/greenplum-db/bin/plcontainer_clients"/> - <setting memory_mb="512"/> - <setting use_container_logging="yes"/> - <setting cpu_share="1024"/> - <setting resource_group_id="16391"/> - </runtime> - <runtime> - <id>plc_r_example</id> - <image>pivotaldata/plcontainer_r_without_clients:0.2</image> - <command>/clientdir/rclient.sh</command> - <shared_directory access="ro" container="/clientdir" host="/usr/local/greenplum-db/bin/plcontainer_clients"/> - <setting use_container_logging="yes"/> - <setting roles="gpadmin,user1"/> - </runtime> - <runtime> -</configuration>

-

These are the XML elements and attributes in a PL/Container configuration file.

- - - configuration - Root element for the XML file. - - - runtime - One element for each specific container available in the system. These are child - elements of the configuration element. - - - - id - Required. The value is used to reference a Docker container from a - PL/Container user-defined function. The id value must be unique - in the configuration. The id must start with a character or - digit (a-z, A-Z, or 0-9) and can contain characters, digits, or the characters - _ (underscore), . (period), or - - (dash). Maximum length is 63 Bytes.

The - id specifies which Docker image to use when PL/Container - creates a Docker container to execute a user-defined function.

-
- - image - -

Required. The value is the full Docker image name, including image tag. The - same way you specify them for starting this container in Docker. Configuration - allows to have many container objects referencing the same image name, this - way in Docker they would be represented by identical containers.

-

For example, you might have two runtime elements, with - different id elements, plc_python_128 and - plc_python_256, both referencing the Docker image - pivotaldata/plcontainer_python:1.0.0. The first - runtime specifies a 128MB RAM limit and the second one - specifies a 256MB limit that is specified by the memory_mb - attribute of a setting element.

-
-
- - command - Required. The value is the command to be run inside of container to start the - client process inside in the container. When creating a runtime - element, the plcontainer utility adds a - command element based on the language (the - -l option). - command element for the Python 2 - language.<command>/clientdir/pyclient.sh</command> - command element for the Python 3 - language.<command>/clientdir/pyclient3.sh</command> - command element for the R - language.<command>/clientdir/rclient.sh</command> - You should modify the value only if you build a custom container and want to - implement some additional initialization logic before the container starts. - This element cannot be set with the plcontainer utility. - You can update the configuration file with the plcontainer - runtime-edit command. - - - shared_directory - Optional. This element specifies a shared Docker shared volume for a container - with access information. Multiple shared_directory elements are - allowed. Each shared_directory element specifies a single - shared volume. XML attributes for the shared_directory - element:
    -
  • host - a directory location on the host system.
  • -
  • container - a directory location inside of - container.
  • -
  • access - access level to the host directory, which can be - either ro (read-only) or rw (read-write). -
  • -
- When creating a runtime element, the - plcontainer utility adds a shared_directory - element.<shared_directory access="ro" container="/clientdir" host="/usr/local/greenplum-db/bin/plcontainer_clients"/> - For each runtime element, the container - attribute of the shared_directory elements must be unique. For - example, a runtime element cannot have two - shared_directory elements with attribute - container="/clientdir". - Allowing read-write access to a host directory requires - special consideration.
    -
  • When specifying read-write access to host directory, ensure that the - specified host directory has the correct permissions.
  • -
  • When running PL/Container user-defined functions, multiple concurrent - Docker containers that are running on a host could change data in the host - directory. Ensure that the functions support multiple concurrent access to - the data in the host directory.
  • -
-
- - settings - Optional. This element specifies Docker container configuration information. - Each setting element contains one attribute. The element - attribute specifies logging, memory, or networking information. For example, - this element enables - logging.<setting use_container_logging="yes"/> - These are the valid attributes. - - cpu_share - Optional. Specify the CPU usage for each PL/Container container in the - runtime. The value of the element is a positive integer. The default value - is 1024. The value is a relative weighting of CPU usage compared to other - containers. - For example, a container with a cpu_share of 2048 is - allocated double the CPU slice time compared with container with the - default value of 1024. - - - memory_mb="size" - Optional. The value specifies the amount of memory, in MB, that each - container is allowed to use. Each container starts with this amount of RAM - and twice the amount of swap space. The container memory consumption is - limited by the host system cgroups configuration, which - means in case of memory overcommit, the container is terminated by the - system. - - - resource_group_id="rg_groupid" - Optional. The value specifies the groupid of the - resource group to assign to the PL/Container runtime. The resource group - limits the total CPU and memory resource usage for all running containers - that share this runtime configuration. You must specify the - groupid of the resource group. If you do not assign a - resource group to a PL/Container runtime configuration, its container - instances are limited only by system resources. For information about - managing PL/Container resources, see About PL/Container Resource Management. - - - roles="list_of_roles" - Optional. The value is a Greenplum Database role name or a - comma-separated list of roles. PL/Container runs a container that uses the - PL/Container runtime configuration only for the listed roles. If the - attribute is not specified, any Greenplum Database role can run an - instance of this container runtime configuration. For example, you create - a UDF that specifies the plcontainer language and - identifies a # container: runtime configuration that has - the roles attribute set. When a role (user) runs the UDF, - PL/Container checks the list of roles and runs the container only if the - role is on the list. - - - use_container_logging="{yes | no}" - Optional. Enables or disables Docker logging for the container. The - attribute value yes enables logging. The attribute value - no disables logging (the default). - The Greenplum Database server configuration parameter log_min_messages controls the - PL/Container log level. The default log level is warning. - For information about PL/Container log information, see Notes. - -

By default, the PL/Container log information is sent to a system - service. On Red Hat 7 or CentOS 7 systems, the log information is sent - to the journald service. On Red Hat 6 or CentOS 6 - systems, the log is sent to the syslogd service.

-
-
-
-
-
-
-
-
- -
- - Updating the PL/Container Configuration - -

You can add a runtime element to the PL/Container configuration file - with the plcontainer runtime-add command. The command options specify - information such as the runtime ID, Docker image, and language. You can use the - plcontainer runtime-replace command to update an existing - runtime element. The utility updates the configuration file on the - master and all segment instances.

-

The PL/Container configuration file can contain multiple runtime - elements that reference the same Docker image specified by the XML element - image. In the example configuration file, the runtime - elements contain id elements named plc_python_128 and - plc_python_256, both referencing the Docker container - pivotaldata/plcontainer_python:1.0.0. The first - runtime element is defined with a 128MB RAM limit and the second one - with a 256MB RAM limit.

- <configuration> - <runtime> - <id>plc_python_128</id> - <image>pivotaldata/plcontainer_python:1.0.0</image> - <command>./client</command> - <shared_directory access="ro" container="/clientdir" host="/usr/local/gpdb/bin/plcontainer_clients"/> - <setting memory_mb="128"/> - </runtime> - <runtime> - <id>plc_python_256</id> - <image>pivotaldata/plcontainer_python:1.0.0</image> - <command>./client</command> - <shared_directory access="ro" container="/clientdir" host="/usr/local/gpdb/bin/plcontainer_clients"/> - <setting memory_mb="256"/> - <setting resource_group_id="16391"/> - </runtime> -<configuration> - -
+ Notes +

Docker Notes

    -
  • PL/Container does not support the Greenplum Database domain object.
  • -
  • PL/Container maintains the configuration file - plcontainer_configuration.xml in the data directory of all Greenplum - Database segment instances: master, standby master, primary, and mirror. This query - lists the Greenplum Database system data - directories:SELECT hostname, datadir FROM gp_segment_configuration;

    A - sample PL/Container configuration file is in - $GPHOME/share/postgresql/plcontainer.

  • -
  • When Greenplum Database executes a PL/Container UDF, Query Executer (QE) processes - start Docker containers and reuse them as needed. After a certain amount of idle time, a - QE process quits and destroys its Docker containers. You can control the amount of idle - time with the Greenplum Database server configuration parameter gp_vmem_idle_resource_timeout. Controlling the idle - time might help with Docker container reuse and avoid the overhead of creating and - starting a Docker container. Changing - gp_vmem_idle_resource_timeout value, might affect performance due - to resource issues. The parameter also controls the freeing of Greenplum Database - resources other than Docker containers.
  • If a PL/Container Docker container exceeds the maximum allowed memory, it is - terminated and an out of memory warning is displayed. On Red Hat 6 or CentOS 6 systems - that are configured with Docker version 1.7.1, the out of memory warning is also - displayed if the PL/Container Docker container main program (PID 1) is terminated.
  • -
  • In some cases, when PL/Container is running in a high concurrency environment, the - Docker daemon hangs with log entries that indicate a memory shortage. This can happen - even when the system seems to have adequate free memory.

    The issue seems to be - triggered by a combination of two factors, the aggressive virtual memory requirement - of the Go language (golang) runtime that is used by PL/Container, and - the Greenplum Database Linux server kernel parameter setting for - overcommit_memory. The parameter is set to 2 which does not allow - memory overcommit.

    A workaround that might help is to increase the amount of - swap space and increase the Linux server kernel parameter - overcommit_ratio. If the issue still occurs after the changes, - there might be memory shortage. You should check free memory on the system and add - more RAM if needed. You can also decrease the cluster load.

  • + terminated and an out of memory warning is displayed.
  • PL/Container does not limit the Docker base device size, the size of the Docker container. In some cases, the Docker daemon controls the base device size. For example, if the Docker storage driver is devicemapper, the Docker daemon @@ -1445,103 +428,29 @@ $$ LANGUAGE plcontainer;

    format="html" scope="external">Daemon storage-driver.

    When setting the Docker base device size, the size must be set on all Greenplum Database hosts.

  • -
  • When PL/Container logging is enabled, you can set the log level with the Greenplum - Database server configuration parameter log_min_messages. The default log level is - warning. The parameter controls the PL/Container log level and also - controls the Greenplum Database log level.
      -
    • PL/Container logging is enabled or disabled for each runtime ID with the - setting attribute use_container_logging. The - default is no logging.
    • -
    • The PL/Container log information is the information from the UDF that is run in - the Docker container. By default, the PL/Container log information is sent to a - system service. On Red Hat 7 or CentOS 7 systems, the log information is sent to the - journald service. On Red Hat 6 or CentOS 6 systems, the log - information is sent to the syslogd service. The PL/Container log - information is sent to the log file of the host were the Docker container runs.
    • -
    • The Greenplum Database log information is sent to log file on the Greenplum - Database master.
    • -

    When testing or troubleshooting a PL/Container UDF, you can change the Greenplum - Database log level with the SET command. You can set the parameter in - the session before you run your PL/Container UDF. This example sets the log level to - debug1.

    SET log_min_messages='debug1' ; - The parameter log_min_messages controls both the Greenplum - Database and PL/Container logging, increasing the log level might affect Greenplum - Database performance even if a PL/Container UDF is not running.
  • +
  • +

    Known issue:

    +

    Occasionally, when PL/Container is running in a high concurrency environment, the + Docker daemon hangs with log entries that indicate a memory shortage. This can happen + even when the system seems to have adequate free memory.

    +

    The issue seems to be triggered by the aggressive virtual memory requirement of the Go + language (golang) runtime that is used by PL/Container, and the Greenplum Database Linux + server kernel parameter setting for overcommit_memory. The parameter is set to 2 + which does not allow memory overcommit.

    +

    A workaround that might help is to increase the amount of swap space and increase the + Linux server kernel parameter overcommit_ratio. If the issue still occurs after the + changes, there might be memory shortage. You should check free memory on the system and + add more RAM if needed. You can also decrease the cluster load.

    +
-
- - Installing Docker - -

To use PL/Container, Docker must be installed on all Greenplum Database host systems. The - these instructions show how to set up the Docker service on CentOS 7. Installing on RHEL 7 - is a similar process.

-

Before performing the Docker installation ensure these requirements are met.

    -
  • The CentOS extras repository is accessible.
  • -
  • The user has sudo privileges or is root.
  • -

-

See also the Docker site installation instructions for CentOS https://docs.docker.com/engine/installation/linux/centos/. For a - list of Docker commands, see the Docker engine Run Reference https://docs.docker.com/engine/reference/run/.

-
- Installing Docker on CentOS 7 -

These steps install the Docker package and start the Docker service as a user with sudo - privileges.

-
    -
  1. Install dependencies required for - Dockersudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. -
  3. Add the Docker - reposudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. -
  5. Update yum cachesudo yum makecache fast
  6. -
  7. Install Dockersudo yum -y install docker-ce
  8. -
  9. Start Docker daemon.sudo systemctl start docker
  10. -
  11. To give access to the Docker daemon and docker commands, assign the Greenplum Database - administrator (gpadmin) to the group - docker.sudo usermod -aG docker gpadmin
  12. -
  13. Exit the session and login again to update the privileges.
  14. -
  15. Run a Docker command to test the Docker installation. This command lists the currently - running Docker containers. docker ps
  16. -
-

This command configures Docker to start when the host system - starts.sudo systemctl start docker.service

-

After you have installed Docker on all Greenplum Database hosts, restart the Greenplum - Database system to give Greenplum Database access to Docker. - gpstop -ra

-
-
- Installing Docker on CentOS 6 -

These steps install the Docker package and start the docker service as a user with sudo - privileges.

-
    -
  1. Install EPEL packagesudo yum -y install epel-release
  2. -
  3. Install Dockersudo yum -y install docker-io
  4. -
  5. Create a docker groupsudo groupadd docker
  6. -
  7. Start Dockersudo service docker start
  8. -
  9. To give access to the Docker daemon and docker commands, assign the Greenplum Database - administrator (gpadmin) to the group - docker.sudo usermod -aG docker gpadmin
  10. -
  11. Exit the session and login again to update the privileges.
  12. -
  13. Run a Docker command to test the Docker installation. This command lists the currently - running Docker containers. docker ps
  14. -
-

This command configures Docker to start when the host system - starts.sudo chkconfig docker on

-

After you have installed Docker on all Greenplum Database hosts, restart the Greenplum - Database system to give Greenplum Database access to Docker. - gpstop -ra

-
- -
+ + + - References - + Docker References +

Docker home page https://www.docker.com/

Docker command line interface

Dockerfile reference https://docs.docker.com/engine/reference/builder/

+

For CentOS, see Docker site installation instructions for CentOS.

+

For a list of Docker commands, see the Docker + engine Run Reference.

Installing Docker on Linux systems https://docs.docker.com/engine/installation/linux/centos/

@@ -1560,6 +474,7 @@ $$ LANGUAGE plcontainer;

scope="external">What’s New in Python

Porting from Python 2 to 3 Porting Python 2 Code to Python 3

- +
+ diff --git a/gpdb-doc/dita/analytics/pl_container_using.xml b/gpdb-doc/dita/analytics/pl_container_using.xml new file mode 100644 index 0000000000..9998ed63e7 --- /dev/null +++ b/gpdb-doc/dita/analytics/pl_container_using.xml @@ -0,0 +1,472 @@ + + + + Using PL/Container + +

This topic covers further details on:

+

+

    +
  • PL/Container Resource Management
  • +
  • PL/Container Functions
  • +
+

+ + + PL/Container Resource Management + +
+

The Docker containers and the Greenplum Database servers share CPU and memory + resources on the same hosts. In the default case, Greenplum Database is unaware + of the resources consumed by running PL/Container instances. You can use + Greenplum Database resource groups to control overall CPU and memory resource + usage for running PL/Container instances.

+

PL/Container manages resource usage at two levels - the container level and the + runtime level. You can control container-level CPU and memory resources with the + memory_mb and cpu_share settings that you + configure for the PL/Container runtime. memory_mb governs the + memory resources available to each container instance. The + cpu_share setting identifies the relative weighting of a + container's CPU usage compared to other containers. See for further + details.

+

You cannot, by default, restrict the number of executing PL/Container container + instances, nor can you restrict the total amount of memory or CPU resources that + they consume.

+
+
+ Using Resource Groups to Manage PL/Container Resources +

With PL/Container 1.2.0 and later, you can use Greenplum Database resource groups + to manage and limit the total CPU and memory resources of containers in + PL/Container runtimes. For more information about enabling, configuring, and + using Greenplum Database resource groups, refer to Using Resource Groups in the Greenplum Database Administrator + Guide.

+ If you do not explicitly configure resource groups for a PL/Container runtime, + its container instances are limited only by system resources. The containers may + consume resources at the expense of the Greenplum Database server. +

Resource groups for external components such as PL/Container use Linux control + groups (cgroups) to manage component-level use of memory and CPU resources. When + you manage PL/Container resources with resource groups, you configure both a + memory limit and a CPU limit that Greenplum Database applies to all container + instances that share the same PL/Container runtime configuration.

+

When you create a resource group to manage the resources of a PL/Container + runtime, you must specify MEMORY_AUDITOR=cgroup and + CONCURRENCY=0 in addition to the required CPU and memory + limits. For example, the following command creates a resource group named + plpy_run1_rg for a PL/Container runtime: + CREATE RESOURCE GROUP plpy_run1_rg WITH (MEMORY_AUDITOR=cgroup, CONCURRENCY=0, + CPU_RATE_LIMIT=10, MEMORY_LIMIT=10);

+

PL/Container does not use the MEMORY_SHARED_QUOTA and + MEMORY_SPILL_RATIO resource group memory limits. Refer to + the CREATE RESOURCE GROUP + reference page for detailed information about this SQL command.

+

You can create one or more resource groups to manage your running PL/Container + instances. After you create a resource group for PL/Container, you assign the + resource group to one or more PL/Container runtimes. You make this assignment + using the groupid of the resource group. You can determine the + groupid for a given resource group name from the + gp_resgroup_config + gp_toolkit view. For example, the following query displays the + groupid of a resource group named + plpy_run1_rg:SELECT groupname, groupid FROM gp_toolkit.gp_resgroup_config + WHERE groupname='plpy_run1_rg'; + + groupname | groupid + --------------+---------- + plpy_run1_rg | 16391 + (1 row)

+

You assign a resource group to a PL/Container runtime configuration by specifying + the -s resource_group_id=rg_groupid option + to the plcontainer runtime-add (new runtime) or + plcontainer runtime-replace (existing runtime) commands. + For example, to assign the plpy_run1_rg resource group to a new + PL/Container runtime named python_run1: + plcontainer runtime-add -r python_run1 -i pivotaldata/plcontainer_python_shared:devel -l python -s resource_group_id=16391

+

You can also assign a resource group to a PL/Container runtime using the + plcontainer runtime-edit command. For information about the + plcontainer command, see reference page.

+

After you assign a resource group to a PL/Container runtime, all container + instances that share the same runtime configuration are subject to the memory + limit and the CPU limit that you configured for the group. If you decrease the + memory limit of a PL/Container resource group, queries executing in running + containers in the group may fail with an out of memory error. If you drop a + PL/Container resource group while there are running container instances, + Greenplum Database kills the running containers.

+
+
+ Configuring Resource Groups for PL/Container +

To use Greenplum Database resource groups to manage PL/Container resources, you + must explicitly configure both resource groups and PL/Container.

+ +

Perform the following procedure to configure PL/Container to use Greenplum Database + resource groups for CPU and memory resource management:

+
    +
  1. If you have not already configured and enabled resource groups in your Greenplum + Database deployment, configure cgroups and enable Greenplum Database resource + groups as described in Using Resource Groups in the + Greenplum Database Administrator Guide. If you have + previously configured and enabled resource groups in your deployment, ensure + that the Greenplum Database resource group gpdb.conf + cgroups configuration file includes a memory { } block as + described in the previous link.
  2. +
  3. Analyze the resource usage of your Greenplum Database deployment. Determine the + percentage of resource group CPU and memory resources that you want to allocate + to PL/Container Docker containers.
  4. +
  5. Determine how you want to distribute the total PL/Container CPU and memory + resources that you identified in the step above among the PL/Container runtimes. + Identify:
      +
    • The number of PL/Container resource group(s) that you require.
    • +
    • The percentage of memory and CPU resources to allocate to each resource + group.
    • +
    • The resource-group-to-PL/Container-runtime assignment(s).
    • +
  6. +
  7. Create the PL/Container resource groups that you identified in the step above. + For example, suppose that you choose to allocate 25% of both memory and CPU + Greenplum Database resources to PL/Container. If you further split these + resources among 2 resource groups 60/40, the following SQL commands create the + resource + groups:CREATE RESOURCE GROUP plr_run1_rg WITH (MEMORY_AUDITOR=cgroup, CONCURRENCY=0, + CPU_RATE_LIMIT=15, MEMORY_LIMIT=15); + CREATE RESOURCE GROUP plpy_run1_rg WITH (MEMORY_AUDITOR=cgroup, CONCURRENCY=0, + CPU_RATE_LIMIT=10, MEMORY_LIMIT=10);
  8. +
  9. Find and note the groupid associated with each resource group + that you created. For + example:SELECT groupname, groupid FROM gp_toolkit.gp_resgroup_config + WHERE groupname IN ('plpy_run1_rg', 'plr_run1_rg'); + + groupname | groupid + --------------+---------- + plpy_run1_rg | 16391 + plr_run1_rg | 16393 + (1 row)
  10. +
  11. Assign each resource group that you created to the desired PL/Container runtime + configuration. If you have not yet created the runtime configuration, use the + plcontainer runtime-add command. If the runtime already + exists, use the plcontainer runtime-replace or + plcontainer runtime-edit command to add the resource group + assignment to the runtime configuration. For example: + plcontainer runtime-add -r python_run1 -i pivotaldata/plcontainer_python_shared:devel -l python -s resource_group_id=16391 + plcontainer runtime-replace -r r_run1 -i pivotaldata/plcontainer_r_shared:devel -l r -s resource_group_id=16393

    For + information about the plcontainer command, see reference page.

  12. +
+ +
+ Notes +

PL/Container logging

+

When PL/Container logging is enabled, you can set the log level with the + Greenplum Database server configuration parameter log_min_messages. The default log level is + warning. The parameter controls the PL/Container log level + and also controls the Greenplum Database log level.

+
    +
  • PL/Container logging is enabled or disabled for each runtime ID with the + setting attribute + use_container_logging. The default is no logging.
  • +
  • The PL/Container log information is the information from the UDF that is run + in the Docker container. By default, the PL/Container log information is + sent to a system service. On Red Hat 7 or CentOS 7 systems, the log + information is sent to the journald service.
  • +
  • The Greenplum Database log information is sent to log file on the Greenplum + Database master.
  • +
  • When testing or troubleshooting a PL/Container UDF, you can change the + Greenplum Database log level with the SET command. You can + set the parameter in the session before you run your PL/Container UDF. This + example sets the log level to debug1. SET log_min_messages='debug1' ; + The parameter log_min_messages controls both the + Greenplum Database and PL/Container logging, increasing the log level + might affect Greenplum Database performance even if a PL/Container UDF + is not running.
  • +
+
+ +
+ + + PL/Container Functions + +

When you enable PL/Container in a database of a Greenplum Database system, the + language plcontainer is registered in that database. Specify + plcontainer as a language in a UDF definition to create and run + user-defined functions in the procedural languages supported by the PL/Container + Docker images.

+ +
+ Limitations +

Review the following limitations when creating and using PL/Container PL/Python + and PL/R functions:

+
    +
  • Greenplum Database domains are not supported.
  • +
  • Multi-dimensional arrays are not supported.
  • +
  • Python and R call stack information is not displayed when debugging a + UDF.
  • +
  • The plpy.execute() methods nrows() and + status() are not supported.
  • +
  • The PL/Python function plpy.SPIError() is not + supported.
  • +
  • Executing the SAVEPOINT command with plpy.execute() is not + supported.
  • +
  • The DO command is not supported.
  • +
  • See .OUT parameters are not supported.The Python dict type cannot be + returned from a PL/Python UDF.
  • +
  • When returning the Python dict type from a UDF, you can convert the dict + type to a Greenplum Database user-defined data type (UDT).
  • +
+
+ +
+ Using PL/Container functions +

A UDF definition that uses PL/Container must have the these items.

+
    +
  • The first line of the UDF must be # container: + ID
  • +
  • The LANGUAGE attribute must be + plcontainer
  • +
+

The ID is the name that PL/Container uses to identify a Docker + image. When Greenplum Database executes a UDF on a host, the Docker image on the + host is used to start a Docker container that runs the UDF. In the XML + configuration file plcontainer_configuration.xml, there is a + runtime XML element that contains a corresponding + id XML element that specifies the Docker container startup + information. See for information about how PL/Container maps the + ID to a Docker image. See for example UDF definitions.

+

The PL/Container configuration file is read only on the first invocation of a + PL/Container function in each Greenplum Database session that runs PL/Container + functions. You can force the configuration file to be re-read by performing a + SELECT command on the view + plcontainer_refresh_config during the session. For example, + this SELECT command forces the configuration file to be + read.

+ SELECT * FROM plcontainer_refresh_config; +

Running the command executes a PL/Container function that updates the + configuration on the master and segment instances and returns the status of the + refresh. gp_segment_id | plcontainer_refresh_local_config + ---------------+---------------------------------- + 1 | ok + 0 | ok + -1 | ok + (3 rows)

+

Also, you can show all the configurations in the session by performing a + SELECT command on the view + plcontainer_show_config. For example, this + SELECT command returns the PL/Container configurations.

+ SELECT * FROM plcontainer_show_config; +

Running the command executes a PL/Container function that displays configuration + information from the master and segment instances. This is an example of the + start and end of the view + output.INFO: plcontainer: Container 'plc_py_test' configuration + INFO: plcontainer: image = 'pivotaldata/plcontainer_python_shared:devel' + INFO: plcontainer: memory_mb = '1024' + INFO: plcontainer: use container network = 'no' + INFO: plcontainer: use container logging = 'no' + INFO: plcontainer: shared directory from host '/usr/local/greenplum-db/./bin/plcontainer_clients' to container '/clientdir' + INFO: plcontainer: access = readonly + + ... + + INFO: plcontainer: Container 'plc_r_example' configuration (seg0 slice3 192.168.180.45:40000 pid=3304) + INFO: plcontainer: image = 'pivotaldata/plcontainer_r_without_clients:0.2' (seg0 slice3 192.168.180.45:40000 pid=3304) + INFO: plcontainer: memory_mb = '1024' (seg0 slice3 192.168.180.45:40000 pid=3304) + INFO: plcontainer: use container network = 'no' (seg0 slice3 192.168.180.45:40000 pid=3304) + INFO: plcontainer: use container logging = 'yes' (seg0 slice3 192.168.180.45:40000 pid=3304) + INFO: plcontainer: shared directory from host '/usr/local/greenplum-db/bin/plcontainer_clients' to container '/clientdir' (seg0 slice3 192.168.180.45:40000 pid=3304) + INFO: plcontainer: access = readonly (seg0 slice3 192.168.180.45:40000 pid=3304) + gp_segment_id | plcontainer_show_local_config + ---------------+------------------------------- + 0 | ok + -1 | ok + 1 | ok

+

The PL/Container function plcontainer_containers_summary() + displays information about the currently running Docker + containers.SELECT * FROM plcontainer_containers_summary();

+

If a normal (non-superuser) Greenplum Database user runs the function, the + function displays information only for containers created by the user. If a + Greenplum Database superuser runs the function, information for all containers + created by Greenplum Database users is displayed. This is sample output when 2 + containers are running.

+ SEGMENT_ID | CONTAINER_ID | UP_TIME | OWNER | MEMORY_USAGE(KB) + ------------+------------------------------------------------------------------+--------------+---------+------------------ + 1 | 693a6cb691f1d2881ec0160a44dae2547a0d5b799875d4ec106c09c97da422ea | Up 8 seconds | gpadmin | 12940 + 1 | bc9a0c04019c266f6d8269ffe35769d118bfb96ec634549b2b1bd2401ea20158 | Up 2 minutes | gpadmin | 13628 + (2 rows) +

When Greenplum Database executes a PL/Container UDF, Query Executer (QE) + processes start Docker containers and reuse them as needed. After a certain + amount of idle time, a QE process quits and destroys its Docker containers. You + can control the amount of idle time with the Greenplum Database server + configuration parameter gp_vmem_idle_resource_timeout. Controlling + the idle time might help with Docker container reuse and avoid the overhead of + creating and starting a Docker container.

+ Changing gp_vmem_idle_resource_timeout value, + might affect performance due to resource issues. The parameter also controls the + freeing of Greenplum Database resources other than Docker containers. +
+ +
+ Examples +

The values in the # container lines of the examples, + plc_python_shared and plc_r_shared, are + the id XML elements defined in the + plcontainer_config.xml file. The id + element is mapped to the image element that specifies the + Docker image to be started. If you configured PL/Container with a different ID, + change the value of the # container line. For information about + configuring PL/Container and viewing the configuration settings, see .

+

This is an example of PL/Python function that runs using the + plc_python_shared container that contains Python + 2:CREATE OR REPLACE FUNCTION pylog100() RETURNS double precision AS $$ + # container: plc_python_shared + import math + return math.log10(100) + $$ LANGUAGE plcontainer;

+

This is an example of a similar function using the plc_r_shared + container:CREATE OR REPLACE FUNCTION rlog100() RETURNS text AS $$ +# container: plc_r_shared +return(log10(100)) +$$ LANGUAGE plcontainer;

+

If the # container line in a UDF specifies an ID that is not in + the PL/Container configuration file, Greenplum Database returns an error when + you try to execute the UDF.

+
+ + +
+ About PL/Container Running PL/Python + +

In the Python language container, the module plpy is + implemented. The module contains these methods:

+
    +
  • plpy.execute(stmt) - Executes the query string + stmt and returns query result in a list of dictionary + objects. To be able to access the result fields ensure your query returns + named fields.
  • +
  • plpy.prepare(stmt[, argtypes]) - Prepares the execution + plan for a query. It is called with a query string and a list of parameter + types, if you have parameter references in the query.
  • +
  • plpy.execute(plan[, argtypes]) - Executes a prepared + plan.
  • +
  • plpy.debug(msg) - Sends a DEBUG2 message to the Greenplum + Database log.
  • +
  • plpy.log(msg) - Sends a LOG message to the Greenplum + Database log.
  • +
  • plpy.info(msg) - Sends an INFO message to the Greenplum + Database log.
  • +
  • plpy.notice(msg) - Sends a NOTICE message to the Greenplum + Database log.
  • +
  • plpy.warning(msg) - Sends a WARNING message to the + Greenplum Database log.
  • +
  • plpy.error(msg) - Sends an ERROR message to the Greenplum + Database log. An ERROR message raised in Greenplum Database causes the query + execution process to stop and the transaction to rollback.
  • +
  • plpy.fatal(msg) - Sends a FATAL message to the Greenplum + Database log. A FATAL message causes Greenplum Database session to be closed + and transaction to be rolled back.
  • +
  • plpy.subtransaction() - Manages + plpy.execute calls in an explicit subtransaction. See + Explicit Subtransactions in the + PostgreSQL documentation for additional information about + plpy.subtransaction().
  • +
+

If an error of level ERROR or FATAL is raised + in a nested Python function call, the message includes the list of enclosing + functions.

+

The Python language container supports these string quoting functions that are + useful when constructing ad-hoc queries.

    +
  • plpy.quote_literal(string) - Returns the string quoted + to be used as a string literal in an SQL statement string. Embedded + single-quotes and backslashes are properly doubled. + quote_literal() returns null on null input (empty + input). If the argument might be null, quote_nullable() + might be more appropriate.
  • +
  • plpy.quote_nullable(string) - Returns the string quoted + to be used as a string literal in an SQL statement string. If the + argument is null, returns NULL. Embedded single-quotes + and backslashes are properly doubled.
  • +
  • + plpy.quote_ident(string) - Returns the string quoted to + be used as an identifier in an SQL statement string. Quotes are added + only if necessary (for example, if the string contains non-identifier + characters or would be case-folded). Embedded quotes are properly + doubled.
  • +

+

When returning text from a PL/Python function, PL/Container converts a Python + unicode object to text in the database encoding. If the conversion cannot be + performed, an error is returned.

+

PL/Container does not support this Greenplum Database PL/Python feature:

    +
  • Multi-dimensional arrays.
  • +

+

Also, the Python module has two global dictionary objects that retain the data + between function calls. They are named GD and SD. GD is used to share the data + between all the function running within the same container, while SD is used for + sharing the data between multiple calls of each separate function. Be aware that + accessing the data is possible only within the same session, when the container + process lives on a segment or master. Be aware that for idle sessions Greenplum + Database terminates segment processes, which means the related containers would + be shut down and the data from GD and SD lost.

+

For information about PL/Python, see .

+

For information about the plpy methods, see https://www.postgresql.org/docs/9.4/plpython-database.htm.

+ +
+
+ About PL/Container Running PL/R + +

In the R language container, the module pg.spi is implemented. + The module contains these methods:

+
    +
  • pg.spi.exec(stmt) - Executes the query string + stmt and returns query result in R + data.frame. To be able to access the result fields make + sure your query returns named fields.
  • +
  • pg.spi.prepare(stmt[, argtypes]) - Prepares the execution + plan for a query. It is called with a query string and a list of parameter + types if you have parameter references in the query.
  • +
  • pg.spi.execp(plan[, argtypes]) - Execute a prepared + plan.
  • +
  • pg.spi.debug(msg) - Sends a DEBUG2 message to the Greenplum + Database log.
  • +
  • pg.spi.log(msg) - Sends a LOG message to the Greenplum + Database log.
  • +
  • pg.spi.info(msg) - Sends an INFO message to the Greenplum + Database log.
  • +
  • pg.spi.notice(msg) - Sends a NOTICE message to the + Greenplum Database log.
  • +
  • pg.spi.warning(msg) - Sends a WARNING message to the + Greenplum Database log.
  • +
  • pg.spi.error(msg) - Sends an ERROR message to the Greenplum + Database log. An ERROR message raised in Greenplum Database causes the query + execution process to stop and the transaction to rollback.
  • +
  • pg.spi.fatal(msg) - Sends a FATAL message to the Greenplum + Database log. A FATAL message causes Greenplum Database session to be closed + and transaction to be rolled back.
  • +
+

PL/Container does not support this PL/R feature:

    +
  • Multi-dimensional arrays.
  • +

+

For information about PL/R, see .

+

For information about the pg.spi methods, see http://www.joeconway.com/plr/doc/plr-spi-rsupport-funcs-normal.html

+ +
+ +
+
\ No newline at end of file diff --git a/gpdb-doc/dita/analytics/plcontainer-configuration-xml.xml b/gpdb-doc/dita/analytics/plcontainer-configuration-xml.xml new file mode 100644 index 0000000000..196218b9f3 --- /dev/null +++ b/gpdb-doc/dita/analytics/plcontainer-configuration-xml.xml @@ -0,0 +1,316 @@ + + + + PL/Container Configuration File + +

The Greenplum Database utility plcontainer manages the + PL/Container configuration files in a Greenplum Database system. The utility + ensures that the configuration files are consistent across the Greenplum + Database master and segment instances.

+ Modifying the configuration files on the segment instances + without using the utility might create different, incompatible configurations on + different Greenplum Database segments that could cause unexpected behavior. +
PL/Container Configuration File +

PL/Container maintains a configuration file + plcontainer_configuration.xml in the data directory of + all Greenplum Database segments. This query lists the Greenplum Database + system data directories: +

SELECT hostname, datadir FROM gp_segment_configuration; + A sample PL/Container configuration file is in + $GPHOME/share/postgresql/plcontainer.

In an XML file, + names, such as element and attribute names, and values are case + sensitive.

In this XML file, the root element + configuration contains one or more runtime + elements. You specify the id of the runtime + element in the # container: line of a PL/Container function + definition.

This is an example file. Note that all XML elements, names, and + attributes are case + sensitive.<?xml version="1.0" ?> +<configuration> + <runtime> + <id>plc_python_example1</id> + <image>pivotaldata/plcontainer_python_with_clients:0.1</image> + <command>./pyclient</command> + </runtime> + <runtime> + <id>plc_python_example2</id> + <image>pivotaldata/plcontainer_python_without_clients:0.1</image> + <command>/clientdir/pyclient.sh</command> + <shared_directory access="ro" container="/clientdir" host="/usr/local/greenplum-db/bin/plcontainer_clients"/> + <setting memory_mb="512"/> + <setting use_container_logging="yes"/> + <setting cpu_share="1024"/> + <setting resource_group_id="16391"/> + </runtime> + <runtime> + <id>plc_r_example</id> + <image>pivotaldata/plcontainer_r_without_clients:0.2</image> + <command>/clientdir/rclient.sh</command> + <shared_directory access="ro" container="/clientdir" host="/usr/local/greenplum-db/bin/plcontainer_clients"/> + <setting use_container_logging="yes"/> + <setting roles="gpadmin,user1"/> + </runtime> + <runtime> +</configuration>

These + are the XML elements and attributes in a PL/Container configuration + file.

+ + configuration + Root element for the XML file. + + + runtime + One element for each specific container available in the system. + These are child elements of the configuration + element. + + + + id + Required. The value is used to reference a Docker + container from a PL/Container user-defined function. The + id value must be unique in the + configuration. The id must start with a + character or digit (a-z, A-Z, or 0-9) and can contain + characters, digits, or the characters _ + (underscore), . (period), or + - (dash). Maximum length is 63 + Bytes.

The id specifies which + Docker image to use when PL/Container creates a + Docker container to execute a user-defined + function.

+
+ + image + +

Required. The value is the full Docker image name, + including image tag. The same way you specify them + for starting this container in Docker. Configuration + allows to have many container objects referencing + the same image name, this way in Docker they would + be represented by identical containers.

+

For example, you might have two + runtime elements, with different + id elements, + plc_python_128 and + plc_python_256, both referencing + the Docker image + pivotaldata/plcontainer_python:1.0.0. + The first runtime specifies a 128MB + RAM limit and the second one specifies a 256MB limit + that is specified by the memory_mb + attribute of a setting element.

+
+
+ + command + Required. The value is the command to be run inside of + container to start the client process inside in the + container. When creating a runtime + element, the plcontainer utility adds a + command element based on the + language (the -l option). + command element for the Python 2 + language.<command>/clientdir/pyclient.sh</command> + command element for the Python 3 + language.<command>/clientdir/pyclient3.sh</command> + command element for the R + language.<command>/clientdir/rclient.sh</command> + You should modify the value only if you build a custom + container and want to implement some additional + initialization logic before the container starts. + This element cannot be set with the + plcontainer utility. You can + update the configuration file with the + plcontainer runtime-edit + command. + + + shared_directory + Optional. This element specifies a shared Docker shared + volume for a container with access information. Multiple + shared_directory elements are + allowed. Each shared_directory element + specifies a single shared volume. XML attributes for the + shared_directory element:
    +
  • host - a directory location on + the host system.
  • +
  • container - a directory + location inside of container.
  • +
  • access - access level to the + host directory, which can be either + ro (read-only) or + rw (read-write).
  • +
+ When creating a runtime element, the + plcontainer utility adds a + shared_directory + element.<shared_directory access="ro" container="/clientdir" host="/usr/local/greenplum-db/bin/plcontainer_clients"/> + For each runtime element, the + container attribute of the + shared_directory elements must be + unique. For example, a runtime element + cannot have two shared_directory + elements with attribute + container="/clientdir". Allowing read-write access to a host + directory requires special consideration.
    +
  • When specifying read-write access to host + directory, ensure that the specified host + directory has the correct permissions.
  • +
  • When running PL/Container user-defined + functions, multiple concurrent Docker containers + that are running on a host could change data in + the host directory. Ensure that the functions + support multiple concurrent access to the data in + the host directory.
  • +
+
+ + settings + Optional. This element specifies Docker container + configuration information. Each setting + element contains one attribute. The element attribute + specifies logging, memory, or networking information. + For example, this element enables + logging.<setting use_container_logging="yes"/> + These are the valid attributes. + + cpu_share + Optional. Specify the CPU usage for each + PL/Container container in the runtime. The value + of the element is a positive integer. The default + value is 1024. The value is a relative weighting + of CPU usage compared to other containers. + For example, a container with a + cpu_share of 2048 is allocated + double the CPU slice time compared with container + with the default value of 1024. + + + memory_mb="size" + Optional. The value specifies the amount of + memory, in MB, that each container is allowed to + use. Each container starts with this amount of RAM + and twice the amount of swap space. The container + memory consumption is limited by the host system + cgroups configuration, which + means in case of memory overcommit, the container + is terminated by the system. + + + resource_group_id="rg_groupid" + Optional. The value specifies the + groupid of the resource group to + assign to the PL/Container runtime. The resource + group limits the total CPU and memory resource usage + for all running containers that share this runtime + configuration. You must specify the + groupid of the resource group. If + you do not assign a resource group to a PL/Container + runtime configuration, its container instances are + limited only by system resources. For information + about managing PL/Container resources, see About PL/Container Resource + Management. + + + roles="list_of_roles" + Optional. The value is a Greenplum Database + role name or a comma-separated list of roles. + PL/Container runs a container that uses the + PL/Container runtime configuration only for the + listed roles. If the attribute is not specified, + any Greenplum Database role can run an instance of + this container runtime configuration. For example, + you create a UDF that specifies the + plcontainer language and + identifies a # container: runtime + configuration that has the roles + attribute set. When a role (user) runs the UDF, + PL/Container checks the list of roles and runs the + container only if the role is on the list. + + + use_container_logging="{yes | no}" + Optional. Enables or disables Docker logging + for the container. The attribute value + yes enables logging. The + attribute value no disables + logging (the default). + The Greenplum Database server configuration + parameter log_min_messages + controls the PL/Container log level. The default log + level is warning. For information + about PL/Container log information, see Notes. + +

By default, the PL/Container log information is + sent to a system service. On Red Hat 7 or CentOS 7 + systems, the log information is sent to the + journald service. On Red Hat 6 or + CentOS 6 systems, the log is sent to the + syslogd service.

+
+
+
+
+
+
+
+
+
+
+ Update the PL/Container Configuration +

You can add a runtime element to the PL/Container + configuration file with the plcontainer runtime-add + command. The command options specify information such as the runtime ID, + Docker image, and language. You can use the plcontainer + runtime-replace command to update an existing + runtime element. The utility updates the configuration + file on the master and all segment instances.

+

The PL/Container configuration file can contain multiple + runtime elements that reference the same Docker image + specified by the XML element image. In the example + configuration file, the runtime elements contain + id elements named plc_python_128 and + plc_python_256, both referencing the Docker container + pivotaldata/plcontainer_python:1.0.0. The first + runtime element is defined with a 128MB RAM limit and + the second one with a 256MB RAM limit.

+ <configuration> + <runtime> + <id>plc_python_128</id> + <image>pivotaldata/plcontainer_python:1.0.0</image> + <command>./client</command> + <shared_directory access="ro" container="/clientdir" host="/usr/local/gpdb/bin/plcontainer_clients"/> + <setting memory_mb="128"/> + </runtime> + <runtime> + <id>plc_python_256</id> + <image>pivotaldata/plcontainer_python:1.0.0</image> + <command>./client</command> + <shared_directory access="ro" container="/clientdir" host="/usr/local/gpdb/bin/plcontainer_clients"/> + <setting memory_mb="256"/> + <setting resource_group_id="16391"/> + </runtime> +<configuration> +

Configuration changes that are made with the utility are applied to the XML + files on all Greenplum Database segments. However, PL/Container + configurations of currently running sessions use the configuration that + existed during session start up. To update the PL/Container configuration in + a running session, execute this command in the session.

+ SELECT * FROM plcontainer_refresh_config; +

Running the command executes a PL/Container function that updates the session + configuration on the master and segment instances.

+
+ + + +
diff --git a/gpdb-doc/dita/analytics/plcontainer_ref.xml b/gpdb-doc/dita/analytics/plcontainer_ref.xml new file mode 100644 index 0000000000..1dd82aa42c --- /dev/null +++ b/gpdb-doc/dita/analytics/plcontainer_ref.xml @@ -0,0 +1,316 @@ + + + + plcontainer + +

The plcontainer utility installs Docker images and manages the + PL/Container configuration. The utility consists of two sets of commands.

+
    +
  • image-* commands manage Docker images on the Greenplum Database + system hosts.
  • +
  • runtime-* commands manage the PL/Container configuration file on the + Greenplum Database instances. You can add Docker image information to the PL/Container + configuration file including the image name, location, and shared folder information. + You can also edit the configuration file.
  • +
+

To configure PL/Container to use a Docker image, you install the Docker image on all the + Greenplum Database hosts and then add configuration information to the PL/Container + configuration.

+

PL/Container configuration values, such as image names, runtime IDs, and parameter values + and names are case sensitive.

+
+ plcontainer Syntax + plcontainer [command] [-h | --help] [--verbose] +

Where command is one of the following.

+ image-add {{-f | --file} image_file} | {{-u | --URL} image_URL} + image-delete {-i | --image} image_name + image-list + + runtime-add {-r | --runtime} runtime_id + {-i | --image} image_name {-l | --language} {python | python3 | r} + [{-v | --volume} shared_volume [{-v| --volume} shared_volume...]] + [{-s | --setting} param=value [{-s | --setting} param=value ...]] + runtime-replace {-r | --runtime} runtime_id + {-i | --image} image_name -l {r | python} + [{-v | --volume} shared_volume [{-v | --volume} shared_volume...]] + [{-s | --setting} param=value [{-s | --setting} param=value ...]] + runtime-show {-r | --runtime} runtime_id + runtime-delete {-r | --runtime} runtime_id + runtime-edit [{-e | --editor} editor] + runtime-backup {-f | --file} config_file + runtime-restore {-f | --file} config_file + runtime-verify +
+
+ plcontainer Commands and Options +
+ + + image-add location + Install a Docker image on the Greenplum Database hosts. Specify either the location + of the Docker image file on the host or the URL to the Docker image. These are the + supported location options.
    +
  • {-f | --file} image_file Specify the tar + archive file on the host that contains the Docker image. This example points to an + image file in the gpadmin home directory + /home/gpadmin/test_image.tar.gz
  • +
  • {-u | --URL} image_URL Specify the URL of the + Docker repository and image. This example URL points to a local Docker repository + 192.168.0.1:5000/images/mytest_plc_r:devel
  • +
+ After installing the Docker image, use the runtime-add + command to configure PL/Container to use the Docker image. +
+ + image-delete {-i | --image} image_name + Remove an installed Docker image from all Greenplum Database hosts. Specify the full + Docker image name including the tag for example + pivotaldata/plcontainer_python_shared:1.0.0 + + + image-list + List the Docker images installed on the host. The command list only the images on + the local host, not remote hosts. The command lists all installed Docker images, + including images installed with Docker commands. + + + runtime-add options + Add configuration information to the PL/Container configuration file on all + Greenplum Database hosts. If the specified runtime_id exists, the + utility returns an error and the configuration information is not added. + These are the supported options: + + + + {-i | --image} docker-image + Required. Specify the full Docker image name, including the tag, that is + installed on the Greenplum Database hosts. For example + pivotaldata/plcontainer_python:1.0.0. + The utility returns a warning if the specified Docker image is not + installed. + The plcontainer image-list command displays installed image + information including the name and tag (the Repository and Tag columns). + + + {-l | --language} python | python3 | r + Required. Specify the PL/Container language type, supported values are + python (PL/Python using Python 2), python3 + (PL/Python using Python 3) and r (PL/R). When adding + configuration information for a new runtime, the utility adds a startup command + to the configuration based on the language you specify. + Startup command for the Python 2 + language./clientdir/pyclient.sh + Startup command for the Python 3 + language./clientdir/pyclient3.sh + Startup command for the R + language./clientdir/rclient.sh + + + {-r | --runtime} runtime_id + + Required. Add the runtime ID. When adding a runtime element + in the PL/Container configuration file, this is the value of the + id element in the PL/Container configuration file. Maximum + length is 63 Bytes. + You specify the name in the Greenplum Database UDF on the # + container line. + + + {-s | --setting} + param=value + Optional. Specify a setting to add to the runtime configuration information. + You can specify this option multiple times. The setting applies to the runtime + configuration specified by the runtime_id. The parameter is + the XML attribute of the settings element in the PL/Container + configuration file. These are valid parameters.
    +
  • cpu_share - Set the CPU limit for each container in the + runtime configuration. The default value is 1024. The value is a relative + weighting of CPU usage compared to other containers.
  • +
  • memory_mb - Set the memory limit for each container in + the runtime configuration. The default value is 1024. The value is an + integer that specifies the amount of memory in MB.
  • +
  • resource_group_id - Assign the specified resource group + to the runtime configuration. The resource group limits the total CPU and + memory resource usage for all containers that share this runtime + configuration. You must specify the groupid of the resource + group. For information about managing PL/Container resources, see About PL/Container Resource + Management.
  • +
  • roles - Specify the Greenplum Database roles that are + allowed to run a container for the runtime configuration. You can specify a + single role name or comma separated lists of role names. The default is no + restriction.
  • +
  • use_container_logging - Enable or disable Docker logging + for the container. The value is either yes (enable logging) + or no (disable logging, the default).

    The Greenplum + Database server configuration parameter log_min_messages controls the log level. + The default log level is warning. For information about + PL/Container log information, see Notes.

  • +
+
+ + {-v | --volume} shared-volume + Optional. Specify a Docker volume to bind mount. You can specify this option + multiple times to define multiple volumes. + The format for a shared volume: + host-dir:container-dir:[rw|ro]. + The information is stored as attributes in the shared_directory + element of the runtime element in the PL/Container + configuration file.
    +
  • host-dir - absolute path to a directory on the host + system. The Greenplum Database administrator user (gpadmin) must have + appropriate access to the directory.
  • +
  • container-dir - absolute path to a directory in the + Docker container.
  • +
  • [rw|ro] - read-write or read-only access to the host + directory from the container.
  • +
+ When adding configuration information for a new runtime, the utility adds this + read-only shared volume information. + + greenplum-home/bin/plcontainer_clients:/clientdir:ro + + If needed, you can specify other shared directories. The utility returns an + error if the specified container-dir is the same as the one + that is added by the utility, or if you specify multiple shared volumes with the + same container-dir. + Allowing read-write access to a host directory requires + special considerations.
    +
  • When specifying read-write access to host directory, ensure that the + specified host directory has the correct permissions.
  • +
  • When running PL/Container user-defined functions, multiple concurrent + Docker containers that are running on a host could change data in the host + directory. Ensure that the functions support multiple concurrent access to + the data in the host directory.
  • +
+
+
+
+
+ + runtime-backup {-f | --file} config_file + +

Copies the PL/Container configuration file to the specified file on the + local host.

+
+
+ + runtime-delete {-r | --runtime} runtime_id + +

Removes runtime configuration information in the PL/Container + configuration file on all Greenplum Database instances. The utility returns a + message if the specified runtime_id does not exist in the + file.

+
+
+ + runtime-edit [{-e | --editor} editor] + Edit the XML file plcontainer_configuration.xml with the specified + editor. The default editor is vi.

Saving the file updates the + configuration file on all Greenplum Database hosts. If errors exist in the updated + file, the utility returns an error and does not update the file.

+
+ + runtime-replace options + +

Replaces runtime configuration information in the PL/Container + configuration file on all Greenplum Database instances. If the + runtime_id does not exist, the information is added to the + configuration file. The utility adds a startup command and shared directory to the + configuration.

+

See runtime-add for command options and information added to the + configuration.

+
+
+ + runtime-restore {-f | --file} config_file + +

Replaces information in the PL/Container configuration file + plcontainer_configuration.xml on all Greenplum Database instances + with the information from the specified file on the local host.

+
+
+ + runtime-show [{-r | --runtime} runtime_id] + +

Displays formatted PL/Container runtime configuration information. If a + runtime_id is not specified, the configuration for all runtime + IDs are displayed.

+
+
+ + runtime-verify + +

Checks the PL/Container configuration information on the Greenplum + Database instances with the configuration information on the master. If the utility + finds inconsistencies, you are prompted to replace the remote copy with the local + copy. The utility also performs XML validation.

+
+
+ + -h | --help + Display help text. If specified without a command, displays help for all + plcontainer commands. If specified with a command, displays help + for the command. + + + --verbose + Enable verbose logging for the command. + +
+
+ Examples +

These are examples of common commands to manage PL/Container:

+
    +
  • Install a Docker image on all Greenplum Database hosts. This example loads a Docker + image from a file. The utility displays progress information on the command line as + the utility installs the Docker image on all the + hosts.plcontainer image-add -f plc_newr.tar.gz

    After + installing the Docker image, you add or update a runtime entry in the PL/Container + configuration file to give PL/Container access to the Docker image to start Docker + containers.

  • +
  • Add a container entry to the PL/Container configuration file. This example adds + configuration information for a PL/R runtime, and specifies a shared volume and + settings for memory and logging. + plcontainer runtime-add -r runtime2 -i test_image2:0.1 -l r \ + -v /host_dir2/shared2:/container_dir2/shared2:ro \ + -s memory_mb=512 -s use_container_logging=yes

    The + utility displays progress information on the command line as it adds the runtime + configuration to the configuration file and distributes the updated configuration to + all instances.

  • +
  • Show specific runtime with given runtime id in configuration + fileplcontainer runtime-show -r plc_python_shared

    The + utility displays the configuration information similar to this + output.PL/Container Runtime Configuration: +--------------------------------------------------------- + Runtime ID: plc_python_shared + Linked Docker Image: test1:latest + Runtime Setting(s): + Shared Directory: + ---- Shared Directory From HOST '/usr/local/greenplum-db/bin/plcontainer_clients' to Container '/clientdir', access mode is 'ro' + ---- Shared Directory From HOST '/home/gpadmin/share/' to Container '/opt/share', access mode is 'rw' +---------------------------------------------------------

  • +
  • Edit the configuration in an interactive editor of your choice. This example edits + the configuration file with the vim + editor.plcontainer runtime-edit -e vim

    When you save the + file, the utility displays progress information on the command line as it + distributes the file to the Greenplum Database hosts.

  • +
  • Save the current PL/Container configuration to a file. This example saves the file + to the local file + /home/gpadmin/saved_plc_config.xmlplcontainer runtime-backup -f /home/gpadmin/saved_plc_config.xml
  • +
  • Overwrite PL/Container configuration file with an XML file. This example replaces + the information in the configuration file with the information from the file in the + /home/gpadmin + directory.plcontainer runtime-restore -f /home/gpadmin/new_plcontainer_configuration.xmlThe + utility displays progress information on the command line as it distributes the + updated file to the Greenplum Database instances.
  • +
+
+ +
\ No newline at end of file diff --git a/gpdb-doc/dita/utility_guide/contrib-programs.xml b/gpdb-doc/dita/utility_guide/contrib-programs.xml index bd1ec36e5c..6922f29e48 100644 --- a/gpdb-doc/dita/utility_guide/contrib-programs.xml +++ b/gpdb-doc/dita/utility_guide/contrib-programs.xml @@ -9,7 +9,7 @@ installed:

  • pg_upgrade - Server program to upgrade a Greenplum + format="html">pg_upgrade - Server program to upgrade a Postgres Database server instance.pg_upgrade is not intended for direct use with Greenplum 6, but will be used by Greenplum upgrade utilities in a future release.
  • -- GitLab