| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| |
| [[release_notes]] |
| = Apache Kudu 1.16.0 Release Notes |
| |
| :author: Kudu Team |
| :imagesdir: ./images |
| :icons: font |
| :toc: left |
| :toclevels: 3 |
| :doctype: book |
| :backend: html5 |
| :sectlinks: |
| :experimental: |
| |
| [[rn_1.16.0_upgrade_notes]] |
| == Upgrade Notes |
| |
| [[rn_1.16.0_deprecations]] |
| == Deprecations |
| * Support for Python 2.x and Python 3.4 and earlier is deprecated and may be |
| removed in the next minor release. |
| |
| [[rn_1.16.0_new_features]] |
| == New features |
| |
| * Clients can now require authentication and encryption instead of depending on |
| server-side settings |
| (link:https://issues.apache.org/jira/browse/KUDU-1921[KUDU-1921]). |
| |
| * Kudu Masters now automatically attempt to add themselves to an existing |
| cluster if there is a healthy Raft quorum among Kudu Masters. |
| |
| * A new tool `kudu master unsafe_rebuild` is added to reconstruct the master |
| catalog from tablet metadata collected from tablet servers. This can be used |
| in emergencies to restore access to tables when all masters are unavailable. |
| |
| * A new tool `kudu table set_replication_factor` is added to alter the |
| replication factor of a table. The tool immediately updates table metadata in |
| the master, and the master will asynchronously effect the new replication |
| factor. Progress can be monitored by running `ksck`. |
| |
| * It’s now possible to require a minimum replication factor for a Kudu table. |
| This can be achieved by customizing the setting for the newly introduced |
| `--min_num_replicas` kudu-master’s flag. For example, setting |
| `--min_num_replicas=3` enforces every newly created table to have at least 3 |
| replicas for each of its tablets, so there cannot be a data loss when just a |
| single tablet server in the cluster fails irrecoverably. For the sake of |
| backward compatibility, `--min_num_replicas` is set to 1 by default. |
| |
| * It’s now possible to track startup progress on the `/startup` page on the web |
| UI. There are also metrics added to track the overall server startup progress |
| as well as the processing of the log block containers and starting of the |
| tablets (link:https://issues.apache.org/jira/browse/KUDU-1959[KUDU-1959]). |
| |
| * A new tool `kudu table add_column` is added to add columns to existing tables |
| using the CLI |
| (link:https://issues.apache.org/jira/browse/KUDU-3339[KUDU-3339]). |
| |
| * A new tool `kudu tserver unregister` is added to remove a dead tablet server |
| from the cluster without restarting the masters |
| (link:https://issues.apache.org/jira/browse/KUDU-2915[KUDU-2915]). |
| |
| |
| [[rn_1.16.0_improvements]] |
| == Optimizations and improvements |
| |
| * Kudu will now more aggressively fsync consensus-related metadata when metadata |
| is configured to be on an XFS mount. This may lead to increased contention on |
| the device that backs metadata, but will prevent corruption in the event of an |
| outage (link:https://issues.apache.org/jira/browse/KUDU-2195[KUDU-2195]). |
| |
| * A clearer message is logged when the Ranger subprocess crashes, to specify a |
| problem with the Ranger client. |
| |
| * Two new flags have been introduced for the `kudu table scan` and `kudu perf |
| table_scan` CLI tools: `--row_count_only` and `--report_scanner_stats`. With |
| these new flags, the above mentioned CLI tools allow to issue scan requests |
| equivalent to running “SELECT COUNT(1) FROM <table_name>” from impala-shell. |
| These new provisions are useful in detecting and troubleshooting scan |
| performance issues. |
| |
| * Added replica selection configuration knob for the `kudu table scan` and `kudu |
| perf table_scan` CLI tools: it’s controlled by the `--replica_selection` flag. |
| |
| * To improve security, the following flags are now marked as sensitive and will |
| be redacted in the logs and WebUI when the redaction is enabled: |
| ** `--webserver_private_key_file` |
| ** `--webserver_private_key_password_cmd` |
| ** `--webserver_password_file` |
| |
| * The logic to select the effective time source when running with |
| `--time_source=auto` has been updated. The `builtin` time source would be |
| auto-selected if a Kudu server runs with `--time_source=auto` in an |
| environment where the instance detector isn't aware of dedicated NTP servers |
| AND the `--builtin_ntp_servers` flag is set to a valid value. Otherwise, if |
| `--builtin_ntp_servers` flag is set to an empty or invalid value, the |
| effective time source becomes `system` for platforms supporting the |
| `get_ntptime()` API, otherwise the catch-all case selects the `system_unsync` |
| as the time effective source. |
| |
| * It is now possible to print or edit PBC files in batch using the `kudu pbc` |
| CLI tool, and also to format its JSON input/output as “pretty”. |
| |
| * Client connection timeout is now configurable in the Java client |
| (link:https://issues.apache.org/jira/browse/KUDU-3240[KUDU-3240]). |
| |
| * A new `/healthz` endpoint is now available on the kudu-master and tablet-server |
| embedded web servers for liveness checks |
| (link:https://issues.apache.org/jira/browse/KUDU-3308[KUDU-3308]). |
| |
| * Hive Metastore URI is now logged to the console when connecting via `kudu hms` |
| CLI tool (link:https://issues.apache.org/jira/browse/KUDU-3189[KUDU-3189]). |
| |
| * It is now possible to start up a master when there is an additional master |
| address present in the master addresses flag |
| (link:https://issues.apache.org/jira/browse/KUDU-3311[KUDU-3311]). |
| |
| * Table entity is now accessible in `KuduWriteOperation` in the C++ client, |
| making understanding errors on the client side easier |
| (link:https://issues.apache.org/jira/browse/KUDU-2623[KUDU-2623]). |
| |
| * The rebalancer tool now doesn’t move replicas to tablet servers in maintenance |
| mode (link:https://issues.apache.org/jira/browse/KUDU-3328[KUDU-3328]). |
| |
| * Improved the performance of the run length encoding (RLE). |
| |
| [[rn_1.16.0_fixed_issues]] |
| == Fixed Issues |
| * Log4J used in Ranger subprocess was upgraded to 2.17.1 which contains patches |
| go several security vulnerabilities |
| (link:https://nvd.nist.gov/vuln/detail/CVE-2021-44832[CVE-2021-44832], |
| link:https://nvd.nist.gov/vuln/detail/CVE-2021-45105[CVE-2021-45105], |
| link:https://nvd.nist.gov/vuln/detail/CVE-2021-45046[CVE-2021-45046], and |
| link:https://nvd.nist.gov/vuln/detail/CVE-2021-44228[CVE-2021-44228]). |
| |
| * Kudu servers previously crashed if hostnames became unresolvable via DNS (e.g. |
| if the container hosting a server were destroyed). Such errors are now treated |
| as transient and the lookups are retried periodically. See |
| link:https://issues.apache.org/jira/browse/KUDU-75[KUDU-75], |
| link:https://issues.apache.org/jira/browse/KUDU-1620[KUDU-1620], |
| and link:https://issues.apache.org/jira/browse/KUDU-1885[KUDU-1885] for more details. |
| |
| * Fixed an issue in Kudu Java client where concurrent flushing of data buffers |
| could lead to errors reported as 'java.lang.AssertionError: This Deferred was |
| already called' |
| (link:https://issues.apache.org/jira/browse/KUDU-3277[KUDU-3277]). |
| |
| * Fixed Kudu RPC negotiation issue when running with cyrus-sasl-gssapi-2.1.27-5 |
| and newer versions of the RPM package. A failed RPC connection negotiation |
| attempt would result in an error logged along with the full connection |
| negotiation trace: `Runtime error: SASL(-15): mechanism too weak for this |
| user: Unable to find a callback: 32775` |
| (link:https://issues.apache.org/jira/browse/KUDU-3297[KUDU-3297]). |
| |
| * Fixed crash in kudu-master and kudu-tserver when running with kernel where the |
| `getrandom(2)` API is not available (versions of Linux kernel prior to 3.17). |
| |
| * Fixed bug which could lead to exhaustion of the address space for the outgoing |
| connections on a busy Kudu cluster |
| (link:https://issues.apache.org/jira/browse/KUDU-3352[KUDU-3352]). |
| |
| * Fixed a bug in the Java client where a malformed tablet server ID in the scan |
| token causes connection failures and timeouts in some cases |
| (link:https://issues.apache.org/jira/browse/KUDU-3349[KUDU-3349]). |
| |
| * Fixed a bug where the rebalancer failed with `-ignored_tservers` flag |
| (link:https://issues.apache.org/jira/browse/KUDU-3346[KUDU-3346]). |
| |
| [[rn_1.16.0_wire_compatibility]] |
| == Wire Protocol compatibility |
| |
| Kudu 1.16.0 is wire-compatible with previous versions of Kudu: |
| |
| * Kudu 1.16 clients may connect to servers running Kudu 1.0 or later. If the client uses |
| features that are not available on the target server, an error will be returned. |
| * Rolling upgrade between Kudu 1.15 and Kudu 1.16 servers is believed to be possible |
| though has not been sufficiently tested. Users are encouraged to shut down all nodes |
| in the cluster, upgrade the software, and then restart the daemons on the new version. |
| * Kudu 1.0 clients may connect to servers running Kudu 1.16 with the exception of the |
| below-mentioned restrictions regarding secure clusters. |
| |
| The authentication features introduced in Kudu 1.3 place the following limitations |
| on wire compatibility between Kudu 1.16 and versions earlier than 1.3: |
| |
| * If a Kudu 1.16 cluster is configured with authentication or encryption set to "required", |
| clients older than Kudu 1.3 will be unable to connect. |
| * If a Kudu 1.16 cluster is configured with authentication and encryption set to "optional" |
| or "disabled", older clients will still be able to connect. |
| |
| [[rn_1.16.0_incompatible_changes]] |
| == Incompatible Changes in Kudu 1.16.0 |
| |
| [[rn_1.16.0_client_compatibility]] |
| === Client Library Compatibility |
| |
| * The Kudu 1.16 Java client library is API- and ABI-compatible with Kudu 1.15. Applications |
| written against Kudu 1.15 will compile and run against the Kudu 1.16 client library and |
| vice-versa. |
| |
| * The Kudu 1.16 {cpp} client is API- and ABI-forward-compatible with Kudu 1.15. |
| Applications written and compiled against the Kudu 1.15 client library will run without |
| modification against the Kudu 1.16 client library. Applications written and compiled |
| against the Kudu 1.16 client library will run without modification against the Kudu 1.15 |
| client library. |
| |
| * The Kudu 1.16 Python client is API-compatible with Kudu 1.15. Applications |
| written against Kudu 1.15 will continue to run against the Kudu 1.16 client |
| and vice-versa. |
| |
| [[rn_1.16.0_known_issues]] |
| == Known Issues and Limitations |
| |
| Please refer to the link:known_issues.html[Known Issues and Limitations] section of the |
| documentation. |
| |
| [[rn_1.16.0_contributors]] |
| == Contributors |
| |
| Kudu 1.16.0 includes contributions from 17 people, including 5 first-time contributors: |
| |
| * Riza Suminto |
| * Zoltan Chovan |
| * kedeng |
| * khazarmammadli |
| * yejiabao |
| |
| Thank you for your contributions! |
| |
| [[resources_and_next_steps]] |
| == Resources |
| |
| - link:http://kudu.apache.org[Kudu Website] |
| - link:http://github.com/apache/kudu[Kudu GitHub Repository] |
| - link:index.html[Kudu Documentation] |
| - link:prior_release_notes.html[Release notes for older releases] |
| |
| == Installation Options |
| |
| For full installation details, see link:installation.html[Kudu Installation]. |
| |
| == Next Steps |
| - link:quickstart.html[Kudu Quickstart] |
| - link:installation.html[Installing Kudu] |
| - link:configuration.html[Configuring Kudu] |