YARN-7537 [Atsv2] load hbase configuration from filesystem rather than URL. Contributed by Rohith Sharma
This commit is contained in:
parent
a286acd7be
commit
41e10161b6
|
@ -2426,7 +2426,7 @@
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
<property>
|
<property>
|
||||||
<description> Optional URL to an hbase-site.xml configuration file to be
|
<description> Optional FS path to an hbase-site.xml configuration file to be
|
||||||
used to connect to the timeline-service hbase cluster. If empty or not
|
used to connect to the timeline-service hbase cluster. If empty or not
|
||||||
specified, then the HBase configuration will be loaded from the classpath.
|
specified, then the HBase configuration will be loaded from the classpath.
|
||||||
When specified the values in the specified configuration file will override
|
When specified the values in the specified configuration file will override
|
||||||
|
|
|
@ -18,13 +18,14 @@
|
||||||
package org.apache.hadoop.yarn.server.timelineservice.storage.common;
|
package org.apache.hadoop.yarn.server.timelineservice.storage.common;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.FSDataInputStream;
|
||||||
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
|
import org.apache.hadoop.fs.Path;
|
||||||
import org.apache.hadoop.hbase.Cell;
|
import org.apache.hadoop.hbase.Cell;
|
||||||
import org.apache.hadoop.hbase.CellUtil;
|
import org.apache.hadoop.hbase.CellUtil;
|
||||||
import org.apache.hadoop.hbase.HBaseConfiguration;
|
import org.apache.hadoop.hbase.HBaseConfiguration;
|
||||||
|
@ -269,28 +270,43 @@ public final class HBaseTimelineStorageUtils {
|
||||||
* @return a configuration with the HBase configuration from the classpath,
|
* @return a configuration with the HBase configuration from the classpath,
|
||||||
* optionally overwritten by the timeline service configuration URL if
|
* optionally overwritten by the timeline service configuration URL if
|
||||||
* specified.
|
* specified.
|
||||||
* @throws MalformedURLException if a timeline service HBase configuration URL
|
* @throws IOException if a timeline service HBase configuration path
|
||||||
* is specified but is a malformed URL.
|
* is specified but unable to read it.
|
||||||
*/
|
*/
|
||||||
public static Configuration getTimelineServiceHBaseConf(Configuration conf)
|
public static Configuration getTimelineServiceHBaseConf(Configuration conf)
|
||||||
throws MalformedURLException {
|
throws IOException {
|
||||||
if (conf == null) {
|
if (conf == null) {
|
||||||
throw new NullPointerException();
|
throw new NullPointerException();
|
||||||
}
|
}
|
||||||
|
|
||||||
Configuration hbaseConf;
|
Configuration hbaseConf;
|
||||||
String timelineServiceHBaseConfFileURL =
|
String timelineServiceHBaseConfFilePath =
|
||||||
conf.get(YarnConfiguration.TIMELINE_SERVICE_HBASE_CONFIGURATION_FILE);
|
conf.get(YarnConfiguration.TIMELINE_SERVICE_HBASE_CONFIGURATION_FILE);
|
||||||
if (timelineServiceHBaseConfFileURL != null
|
if (timelineServiceHBaseConfFilePath != null
|
||||||
&& timelineServiceHBaseConfFileURL.length() > 0) {
|
&& timelineServiceHBaseConfFilePath.length() > 0) {
|
||||||
LOG.info("Using hbase configuration at " +
|
LOG.info("Using hbase configuration at " +
|
||||||
timelineServiceHBaseConfFileURL);
|
timelineServiceHBaseConfFilePath);
|
||||||
// create a clone so that we don't mess with out input one
|
// create a clone so that we don't mess with out input one
|
||||||
hbaseConf = new Configuration(conf);
|
hbaseConf = new Configuration(conf);
|
||||||
Configuration plainHBaseConf = new Configuration(false);
|
Configuration plainHBaseConf = new Configuration(false);
|
||||||
URL hbaseSiteXML = new URL(timelineServiceHBaseConfFileURL);
|
FileSystem fs = null;
|
||||||
plainHBaseConf.addResource(hbaseSiteXML);
|
FSDataInputStream in = null;
|
||||||
HBaseConfiguration.merge(hbaseConf, plainHBaseConf);
|
try {
|
||||||
|
Path hbaseConfigPath = new Path(timelineServiceHBaseConfFilePath);
|
||||||
|
fs = FileSystem.newInstance(conf);
|
||||||
|
in = fs.open(hbaseConfigPath);
|
||||||
|
plainHBaseConf.addResource(in);
|
||||||
|
HBaseConfiguration.merge(hbaseConf, plainHBaseConf);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
} finally {
|
||||||
|
if (in != null) {
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
if (fs != null) {
|
||||||
|
fs.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// default to what is on the classpath
|
// default to what is on the classpath
|
||||||
hbaseConf = HBaseConfiguration.create(conf);
|
hbaseConf = HBaseConfiguration.create(conf);
|
||||||
|
|
Loading…
Reference in New Issue