[ 
https://issues.apache.org/jira/browse/HIVE-24187?focusedWorklogId=487928&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-487928
 ]

ASF GitHub Bot logged work on HIVE-24187:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 22/Sep/20 04:00
            Start Date: 22/Sep/20 04:00
    Worklog Time Spent: 10m 
      Work Description: aasha commented on a change in pull request #1515:
URL: https://github.com/apache/hive/pull/1515#discussion_r492461348



##########
File path: 
standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/ReplChangeManager.java
##########
@@ -424,6 +424,20 @@ public String encodeFileUri(String fileUriStr, String 
fileChecksum, String encod
     return encodedUri;
   }
 
+  public static String encodeFileUri(String fileUriStr, String fileChecksum, 
String cmroot, String encodedSubDir) {
+    String encodedUri = fileUriStr;
+    if ((fileChecksum != null) && (cmroot != null)) {
+      encodedUri = encodedUri + URI_FRAGMENT_SEPARATOR + fileChecksum + 
URI_FRAGMENT_SEPARATOR + cmroot;
+    } else {
+      encodedUri = encodedUri + URI_FRAGMENT_SEPARATOR + 
URI_FRAGMENT_SEPARATOR;

Review comment:
       why do we have 2 URI_FRAGMENT_SEPARATOR

##########
File path: 
standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/ReplChangeManager.java
##########
@@ -424,6 +424,20 @@ public String encodeFileUri(String fileUriStr, String 
fileChecksum, String encod
     return encodedUri;
   }
 
+  public static String encodeFileUri(String fileUriStr, String fileChecksum, 
String cmroot, String encodedSubDir) {
+    String encodedUri = fileUriStr;
+    if ((fileChecksum != null) && (cmroot != null)) {
+      encodedUri = encodedUri + URI_FRAGMENT_SEPARATOR + fileChecksum + 
URI_FRAGMENT_SEPARATOR + cmroot;
+    } else {
+      encodedUri = encodedUri + URI_FRAGMENT_SEPARATOR + 
URI_FRAGMENT_SEPARATOR;
+    }
+    encodedUri = encodedUri + URI_FRAGMENT_SEPARATOR + ((encodedSubDir != 
null) ? encodedSubDir : "");
+    if (LOG.isDebugEnabled()) {

Review comment:
       Do we need this check?

##########
File path: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
##########
@@ -522,6 +522,14 @@ private static void populateLlapDaemonVarsSet(Set<String> 
llapDaemonVarsSetLocal
     REPLCMINTERVAL("hive.repl.cm.interval","3600s",
         new TimeValidator(TimeUnit.SECONDS),
         "Inteval for cmroot cleanup thread."),
+    
REPL_HA_DATAPATH_REPLACE_REMOTE_NAMESERVICE("hive.repl.ha.datapath.replace.remote.nameservice",
 false,
+            "When HDFS is HA enabled and both source and target clusters are 
configured with same nameservice names," +
+                    "enable this flag and provide a "),

Review comment:
       sentence is incomplete

##########
File path: 
standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/ReplChangeManager.java
##########
@@ -424,6 +424,20 @@ public String encodeFileUri(String fileUriStr, String 
fileChecksum, String encod
     return encodedUri;
   }
 
+  public static String encodeFileUri(String fileUriStr, String fileChecksum, 
String cmroot, String encodedSubDir) {
+    String encodedUri = fileUriStr;
+    if ((fileChecksum != null) && (cmroot != null)) {

Review comment:
       empty check not needed?

##########
File path: ql/src/java/org/apache/hadoop/hive/ql/parse/repl/dump/Utils.java
##########
@@ -72,6 +76,40 @@ public static void writeOutput(List<List<String>> 
listValues, Path outputFile, H
     writeOutput(listValues, outputFile, hiveConf, false);
   }
 
+  /**
+   * Given a ReplChangeManger's encoded uri, replaces the namespace and 
returns the modified encoded uri.
+   */
+  public static String replaceNameSpaceInEncodedURI(String cmEncodedURI, 
HiveConf hiveConf) throws SemanticException {

Review comment:
       replace name service?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 487928)
    Time Spent: 0.5h  (was: 20m)

> Handle _files creation for HA config with same nameservice name on source and 
> destination
> -----------------------------------------------------------------------------------------
>
>                 Key: HIVE-24187
>                 URL: https://issues.apache.org/jira/browse/HIVE-24187
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Pravin Sinha
>            Assignee: Pravin Sinha
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: HIVE-24187.01.patch
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Current HA is supported only for different nameservices on Source and 
> Destination. We need to add support of same nameservice on Source and 
> Destination.
> Local nameservice will be passed correctly to the repl command.
> Remote nameservice will be a random name and corresponding configs for the 
> same.
> Example:
> Clusters originally configured with ns for hdfs:
> src: ns1
> target : ns1
> We can denote remote name with some random name, say for example: nsRemote. 
> This is how the command will see the ns w.r.t source and target:
> Repl Dump : src: ns1, target: nsRemote
> Repl Load: src: nsRemote, target: ns1
> Entries in the _files(for managed table data loc) will be made with nsRemote 
> in stead of ns1(for src).
> Example: 
> hdfs://nsRemote/whLoc/dbName.db/table1:checksum:subDir:hdfs://nsRemote/cmroot
> Same way list of external table data locations will also be modified using 
> nsRemote in stead of ns1(for src).
> New configs can control the behavior:
> *hive.repl.ha.datapath.replace.remote.nameservice = <boolean>*
> *hive.repl.ha.datapath.replace.remote.nameservice.name = <string>*
> Based on the above configs replacement of nameservice can be done.
> This will also require that 'hive.repl.rootdir' is passed accordingly during 
> dump and load:
> Repl dump:
> ||Repl Operation||Repl Command||
> |*Staging on source cluster*|
> |Repl Dump|repl dump dbName with('hive.repl.rootdir'='hdfs://ns1/stagingLoc')|
> |Repl Load|repl load dbName into dbName 
> with('hive.repl.rootdir'='hdfs://nsRemote/stagingLoc')|
> |*Staging on target cluster*|
> |Repl Dump|repl dump dbName 
> with('hive.repl.rootdir'='hdfs://nsRemote/stagingLoc')|
> |Repl Load|repl load dbName into dbName 
> with('hive.repl.rootdir'='hdfs://ns1/stagingLoc')|



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to