Amazon EMR release 5.30.0 - Amazon EMR

Amazon EMR release 5.30.0

Application versions

The following applications are supported in this release: Flink, Ganglia, HBase, HCatalog, Hadoop, Hive, Hudi, Hue, JupyterHub, Livy, MXNet, Mahout, Oozie, Phoenix, Pig, Presto, Spark, Sqoop, TensorFlow, Tez, Zeppelin, and ZooKeeper.

The table below lists the application versions available in this release of Amazon EMR and the application versions in the preceding three Amazon EMR releases (when applicable).

For a comprehensive history of application versions for each release of Amazon EMR, see the following topics:

Application version information
emr-5.30.0 emr-5.29.0 emr-5.28.1 emr-5.28.0
AWS SDK for Java 1.11.7591.11.6821.11.6591.11.659
Delta - - - -
Iceberg - - - -
JupyterEnterpriseGateway - - - -
Trino (PrestoSQL) - - - -

Release notes

The following release notes include information for Amazon EMR release 5.30.0. Changes are relative to 5.29.0.

Initial release date: May 13, 2020

Last updated date: June 25, 2020


  • Upgraded AWS SDK for Java to version 1.11.759

  • Upgraded Amazon SageMaker Spark SDK to version 1.3.0

  • Upgraded EMR Record Server to version 1.6.0

  • Upgraded Flink to version 1.10.0

  • Upgraded Ganglia to version 3.7.2

  • Upgraded HBase to version 1.4.13

  • Upgraded Hudi to version 0.5.2-incubating

  • Upgraded Hue to version 4.6.0

  • Upgraded JupyterHub to version 1.1.0

  • Upgraded Livy to version 0.7.0-incubating

  • Upgraded Oozie to version 5.2.0

  • Upgraded Presto to version 0.232

  • Upgraded Spark to version 2.4.5

  • Upgraded Connectors and drivers: Amazon Glue Connector 1.12.0; Amazon Kinesis Connector 3.5.0; EMR DynamoDB Connector 4.14.0

New features

  • EMR Notebooks – When used with EMR clusters created using 5.30.0, EMR notebook kernels run on cluster. This improves notebook performance and allows you to install and customize kernels. You can also install Python libraries on the cluster master node. For more information, see Installing and Using Kernels and Libraries in the EMR Management Guide.

  • Managed Scaling – With Amazon EMR version 5.30.0 and later, you can enable EMR managed scaling to automatically increase or decrease the number of instances or units in your cluster based on workload. EMR continuously evaluates cluster metrics to make scaling decisions that optimize your clusters for cost and speed. For more information, see Scaling Cluster Resources in the Amazon EMR Management Guide.

  • Encrypt log files stored in Amazon S3 – With Amazon EMR version 5.30.0 and later, you can encrypt log files stored in Amazon S3 with an AWS KMS customer managed key. For more information, see Encrypt log files stored in Amazon S3 in the Amazon EMR Management Guide.

  • Amazon Linux 2 support – In EMR version 5.30.0 and later, EMR usesAmazon Linux 2 OS. New custom AMIs (Amazon Machine Image) must be based on theAmazon Linux 2 AMI. For more information, see Using a Custom AMI.

  • Presto Graceful Auto Scale – EMR clusters using 5.30.0 can be set with an auto scaling timeout period that gives Presto tasks time to finish running before their node is decommissioned. For more information, see Using Presto automatic scaling with Graceful Decommission.

  • Fleet Instance creation with new allocation strategy option – A new allocation strategy option is available in EMR version 5.12.1 and later. It offers faster cluster provisioning, more accurate spot allocation, and less spot instance interruption. Updates to non-default EMR service roles are required. See Configure Instance Fleets.

  • sudo systemctl stop and sudo systemctl start commands – In EMR version 5.30.0 and later, which useAmazon Linux 2 OS, EMR uses sudo systemctl stop and sudo systemctl start commands to restart services. For more information, see How do I restart a service in Amazon EMR?.

Changes, enhancements, and resolved issues

  • EMR version 5.30.0 doesn't install Ganglia by default. You can explicitly select Ganglia to install when you create a cluster.

  • Spark performance optimizations.

  • Presto performance optimizations.

  • Python 3 is the default for Amazon EMR version 5.30.0 and later.

  • The default managed security group for service access in private subnets has been updated with new rules. If you use a custom security group for service access, you must include the same rules as the default managed security group. For more information, see Amazon EMR-Managed Security Group for Service Access (Private Subnets). If you use a custom service role for Amazon EMR, you must grant permission to ec2:describeSecurityGroups so that EMR can validate if the security groups are correctly created. If you use the EMR_DefaultRole, this permission is already included in the default managed policy.

Known issues

  • Lower "Max open files" limit on older AL2 [fixed in newer releases]. Amazon EMR releases: emr-5.30.x, emr-5.31.0, emr-5.32.0, emr-6.0.0, emr-6.1.0, and emr-6.2.0 are based on older versions ofAmazon Linux 2 (AL2), which have a lower ulimit setting for "Max open files" when Amazon EMR clusters are created with the default AMI. Amazon EMR releases 5.30.1, 5.30.2, 5.31.1, 5.32.1, 6.0.1, 6.1.1, 6.2.1, 5.33.0, 6.3.0 and later include a permanent fix with a higher "Max open files" setting. Releases with the lower open file limit causes a "Too many open files" error when submitting Spark job. In the impacted releases, the Amazon EMR default AMI has a default ulimit setting of 4096 for "Max open files," which is lower than the 65536 file limit in the latestAmazon Linux 2 AMI. The lower ulimit setting for "Max open files" causes Spark job failure when the Spark driver and executor try to open more than 4096 files. To fix the issue, Amazon EMR has a bootstrap action (BA) script that adjusts the ulimit setting at cluster creation.

    If you are using an older Amazon EMR version that doesn't have the permanent fix for this issue, the following workaround lets you to explicitly set the instance-controller ulimit to a maximum of 65536 files.

    Explicitly set a ulimit from the command line

    1. Edit /etc/systemd/system/instance-controller.service to add the following parameters to Service section.



    2. Restart InstanceController

      $ sudo systemctl daemon-reload

      $ sudo systemctl restart instance-controller

    Set a ulimit using bootstrap action (BA)

    You can also use a bootstrap action (BA) script to configure the instance-controller ulimit to 65536 files at cluster creation.

    #!/bin/bash for user in hadoop spark hive; do sudo tee /etc/security/limits.d/$user.conf << EOF $user - nofile 65536 $user - nproc 65536 EOF done for proc in instancecontroller logpusher; do sudo mkdir -p /etc/systemd/system/$proc.service.d/ sudo tee /etc/systemd/system/$proc.service.d/override.conf << EOF [Service] LimitNOFILE=65536 LimitNPROC=65536 EOF pid=$(pgrep -f aws157.$proc.Main) sudo prlimit --pid $pid --nofile=65535:65535 --nproc=65535:65535 done sudo systemctl daemon-reload
  • Managed scaling

    Managed scaling operations on 5.30.0 and 5.30.1 clusters without Presto installed may cause application failures or cause a uniform instance group or instance fleet to stay in the ARRESTED state, particularly when a scale down operation is followed quickly by a scale up operation.

    As a workaround, choose Presto as an application to install when you create a cluster with Amazon EMR releases 5.30.0 and 5.30.1, even if your job does not require Presto.

  • Known issue in clusters with multiple master nodes and Kerberos authentication

    If you run clusters with multiple master nodes and Kerberos authentication in EMR releases 5.20.0 and later, you may encounter problems with cluster operations such as scale down or step submission, after the cluster has been running for some time. The time period depends on the Kerberos ticket validity period that you defined. The scale-down problem impacts both automatic scale-down and explicit scale down requests that you submitted. Additional cluster operations can also be impacted.


    • SSH as hadoop user to the lead master node of the EMR cluster with multiple primary nodes.

    • Run the following command to renew Kerberos ticket for hadoop user.

      kinit -kt <keytab_file> <principal>

      Typically, the keytab file is located at /etc/hadoop.keytab and the principal is in the form of hadoop/<hostname>@<REALM>.


    This workaround will be effective for the time period the Kerberos ticket is valid. This duration is 10 hours by default, but can configured by your Kerberos settings. You must re-run the above command once the Kerberos ticket expires.

  • The default database engine for Hue 4.6.0 is SQLite, which causes issues when you try to use Hue with an external database. To fix this, set engine in your hue-ini configuration classification to mysql. This issue has been fixed in Amazon EMR version 5.30.1.

Component versions

The components that Amazon EMR installs with this release are listed below. Some are installed as part of big-data application packages. Others are unique to Amazon EMR and installed for system processes and features. These typically start with emr or aws. Big-data application packages in the most recent Amazon EMR release are usually the latest version found in the community. We make community releases available in Amazon EMR as quickly as possible.

Some components in Amazon EMR differ from community versions. These components have a version label in the form CommunityVersion-amzn-EmrVersion. The EmrVersion starts at 0. For example, if open source community component named myapp-component with version 2.2 has been modified three times for inclusion in different Amazon EMR releases, its release version is listed as 2.2-amzn-2.

Component Version Description
aws-sagemaker-spark-sdk1.3.0Amazon SageMaker Spark SDK
emr-ddb4.14.0Amazon DynamoDB connector for Hadoop ecosystem applications.
emr-goodies2.13.0Extra convenience libraries for the Hadoop ecosystem.
emr-kinesis3.5.0Amazon Kinesis connector for Hadoop ecosystem applications.
emr-notebook-env1.0.0Conda env for emr notebook
emr-s3-dist-cp2.14.0Distributed copy application optimized for Amazon S3.
emr-s3-select1.5.0EMR S3Select Connector
emrfs2.40.0Amazon S3 connector for Hadoop ecosystem applications.
flink-client1.10.0Apache Flink command line client scripts and applications.
ganglia-monitor3.7.2Embedded Ganglia agent for Hadoop ecosystem applications along with the Ganglia monitoring agent.
ganglia-metadata-collector3.7.2Ganglia metadata collector for aggregating metrics from Ganglia monitoring agents.
ganglia-web3.7.1Web application for viewing metrics collected by the Ganglia metadata collector.
hadoop-client2.8.5-amzn-6Hadoop command-line clients such as 'hdfs', 'hadoop', or 'yarn'.
hadoop-hdfs-datanode2.8.5-amzn-6HDFS node-level service for storing blocks.
hadoop-hdfs-library2.8.5-amzn-6HDFS command-line client and library
hadoop-hdfs-namenode2.8.5-amzn-6HDFS service for tracking file names and block locations.
hadoop-hdfs-journalnode2.8.5-amzn-6HDFS service for managing the Hadoop filesystem journal on HA clusters.
hadoop-httpfs-server2.8.5-amzn-6HTTP endpoint for HDFS operations.
hadoop-kms-server2.8.5-amzn-6Cryptographic key management server based on Hadoop's KeyProvider API.
hadoop-mapred2.8.5-amzn-6MapReduce execution engine libraries for running a MapReduce application.
hadoop-yarn-nodemanager2.8.5-amzn-6YARN service for managing containers on an individual node.
hadoop-yarn-resourcemanager2.8.5-amzn-6YARN service for allocating and managing cluster resources and distributed applications.
hadoop-yarn-timeline-server2.8.5-amzn-6Service for retrieving current and historical information for YARN applications.
hbase-hmaster1.4.13Service for an HBase cluster responsible for coordination of Regions and execution of administrative commands.
hbase-region-server1.4.13Service for serving one or more HBase regions.
hbase-client1.4.13HBase command-line client.
hbase-rest-server1.4.13Service providing a RESTful HTTP endpoint for HBase.
hbase-thrift-server1.4.13Service providing a Thrift endpoint to HBase.
hcatalog-client2.3.6-amzn-2The 'hcat' command line client for manipulating hcatalog-server.
hcatalog-server2.3.6-amzn-2Service providing HCatalog, a table and storage management layer for distributed applications.
hcatalog-webhcat-server2.3.6-amzn-2HTTP endpoint providing a REST interface to HCatalog.
hive-client2.3.6-amzn-2Hive command line client.
hive-hbase2.3.6-amzn-2Hive-hbase client.
hive-metastore-server2.3.6-amzn-2Service for accessing the Hive metastore, a semantic repository storing metadata for SQL on Hadoop operations.
hive-server22.3.6-amzn-2Service for accepting Hive queries as web requests.
hudi0.5.2-incubatingIncremental processing framework to power data pipline at low latency and high efficiency.
hudi-presto0.5.2-incubatingBundle library for running Presto with Hudi.
hue-server4.6.0Web application for analyzing data using Hadoop ecosystem applications
jupyterhub1.1.0Multi-user server for Jupyter notebooks
livy-server0.7.0-incubatingREST interface for interacting with Apache Spark
nginx1.12.1nginx [engine x] is an HTTP and reverse proxy server
mahout-client0.13.0Library for machine learning.
mxnet1.5.1A flexible, scalable, and efficient library for deep learning.
mariadb-server5.5.64MySQL database server.
nvidia-cuda9.2.88Nvidia drivers and Cuda toolkit
oozie-client5.2.0Oozie command-line client.
oozie-server5.2.0Service for accepting Oozie workflow requests.
opencv3.4.0Open Source Computer Vision Library.
phoenix-library4.14.3-HBase-1.4The phoenix libraries for server and client
phoenix-query-server4.14.3-HBase-1.4A light weight server providing JDBC access as well as Protocol Buffers and JSON format access to the Avatica API
presto-coordinator0.232Service for accepting queries and managing query execution among presto-workers.
presto-worker0.232Service for executing pieces of a query.
presto-client0.232Presto command-line client which is installed on an HA cluster's stand-by masters where Presto server is not started.
pig-client0.17.0Pig command-line client.
r3.4.3The R Project for Statistical Computing
ranger-kms-server1.2.0Apache Ranger Key Management System
spark-client2.4.5-amzn-0Spark command-line clients.
spark-history-server2.4.5-amzn-0Web UI for viewing logged events for the lifetime of a completed Spark application.
spark-on-yarn2.4.5-amzn-0In-memory execution engine for YARN.
spark-yarn-slave2.4.5-amzn-0Apache Spark libraries needed by YARN slaves.
sqoop-client1.4.7Apache Sqoop command-line client.
tensorflow1.14.0TensorFlow open source software library for high performance numerical computation.
tez-on-yarn0.9.2The tez YARN application and libraries.
webserver2.4.25+Apache HTTP server.
zeppelin-server0.8.2Web-based notebook that enables interactive data analytics.
zookeeper-server3.4.14Centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
zookeeper-client3.4.14ZooKeeper command line client.

Configuration classifications

Configuration classifications allow you to customize applications. These often correspond to a configuration XML file for the application, such as hive-site.xml. For more information, see Configure applications.

emr-5.30.0 classifications
Classifications Description


Change values in Hadoop's capacity-scheduler.xml file.


Change values in Hadoop YARN's file.


Change values in Hadoop's core-site.xml file.


Change EMRFS settings.


Change flink-conf.yaml settings.


Change Flink settings.


Change Flink settings.


Change Flink settings.


Change values in the Hadoop environment for all Hadoop components.


Change values in Hadoop's file.


Change hadoop ssl server configuration


Change hadoop ssl client configuration


Amazon EMR-curated settings for Apache HBase.


Change values in HBase's environment.


Change values in HBase's file.


Change values in HBase's file.


Change values in HBase's hbase-policy.xml file.


Change values in HBase's hbase-site.xml file.


Configure HDFS encryption zones.


Change values in HDFS's hdfs-site.xml.


Change values in HCatalog's environment.


Change values in HCatalog's


Change values in HCatalog's proto-hive-site.xml.


Change values in HCatalog WebHCat's environment.


Change values in HCatalog WebHCat's


Change values in HCatalog WebHCat's webhcat-site.xml file.


Change values in Hive's file.


Change values in Hive's file.


Change values in the Hive environment.


Change values in Hive's file.


Change values in Hive's file.


Change values in Hive's file.


Change values in Hive's hive-site.xml file


Change values in Hive Server2's hiveserver2-site.xml file


Change values in Hue's ini file


Change values in the HTTPFS environment.


Change values in Hadoop's httpfs-site.xml file.


Change values in Hadoop's kms-acls.xml file.


Change values in the Hadoop KMS environment.


Change values in Hadoop's file.


Change values in Hadoop's kms-site.xml file.


Change values in the Hudi environment.


Change values in Jupyter Notebook's file.


Change values in JupyterHubs's file.


Configure Jupyter Notebook S3 persistence.


Change values in Sparkmagic's config.json file.


Change values in Livy's livy.conf file.


Change values in the Livy environment.


Change Livy settings.


Change values in the MapReduce application's environment.


Change values in the MapReduce application's mapred-site.xml file.


Change values in Oozie's environment.


Change values in Oozie's file.


Change values in Oozie's oozie-site.xml file.


Change values in Phoenix's file.


Change values in Phoenix's hbase-site.xml file.


Change values in Phoenix's file.


Change values in Phoenix's file.


Change values in the Pig environment.


Change values in Pig's file.


Change values in Pig's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in Presto's file.


Change values in dbks-site.xml file of Ranger KMS.


Change values in ranger-kms-site.xml file of Ranger KMS.


Change values in the Ranger KMS environment.


Change values in file of Ranger KMS.


Change values for CA file on S3 for MySQL SSL connection with Ranger KMS.


Change values in the EMR RecordServer environment.


Change values in EMR RecordServer's file.


Change values in EMR RecordServer's file.


Amazon EMR-curated settings for Apache Spark.


Change values in Spark's spark-defaults.conf file.


Change values in the Spark environment.


Change values in Spark's hive-site.xml file


Change values in Spark's file.


Change values in Spark's file.


Change values in Sqoop's environment.


Change values in Sqoop OraOop's oraoop-site.xml file.


Change values in Sqoop's sqoop-site.xml file.


Change values in Tez's tez-site.xml file.


Change values in the YARN environment.


Change values in YARN's yarn-site.xml file.


Change values in the Zeppelin environment.


Change values in ZooKeeper's zoo.cfg file.


Change values in ZooKeeper's file.