[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-03-02 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16383348#comment-16383348
 ] 

Hudson commented on HBASE-19769:


Results for branch branch-1, done in 47 min and counting
[build #236 on 
builds.a.o|https://builds.apache.org/job/HBase%20Nightly/job/branch-1/236/]:

details (if available):

(x) *{color:red}-1 overall{color}*
Committer, please check your recent inclusion of a patch for this issue.









(x) {color:red}-1 source release artifact{color}
-- See build output for details.


> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 1.5.0, 2.0.0-beta-2, 1.4.3
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.Compat

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-03-01 Thread Andrew Purtell (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16382487#comment-16382487
 ] 

Andrew Purtell commented on HBASE-19769:


Ok. Let me revert the commit of  HBASE-17448  on branch-1 and branch-1.4, 
referencing this JIRA, and state that the plan is to eventually reimplement 
with hbase-metrics-api or after HBASE-18409 gets in 

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by: java.lang.IllegalAccessError: tried to access class 
> org.apache.hadoop.me

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-03-01 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16382360#comment-16382360
 ] 

stack commented on HBASE-19769:
---

bq. For branch-2, use the hbase-metrics API and avoid metrics2 completely (I 
think helping HBASE-18409 get in would be helpful, maybe necessary)

Arg... Should have kept an eye on HBASE-18409  Thats a shame. Its too 
late now... but hadoop metrics are only ever going to be pain producing.

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by:

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-03-01 Thread Josh Elser (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16382283#comment-16382283
 ] 

Josh Elser commented on HBASE-19769:


{quote}Would have been useful to get the reports about issues regarding 
HBASE-17448 expressed over there during review, or at least expressed over 
there when this got pulled from 2.0. I see the following:
{quote}
Sorry, am watching it now.
{quote}I feel this should come out in 1.5 since it is already out in 2.0, at 
least.
{quote}
Yeah, I'd agree with you.
{quote}Do you know if this an issue in 1.4x [~elserj] also sir?
{quote}
I haven't explicitly tested it, but I would assume the issue also exists there. 
Looking at DynamicMetricsRegistry, I see we're referencing MetricsInfoImpl 
which was the problematic class being accessed across these ClassLoader 
boundaries.
{quote}Although this shipped in 1.4.0, 1.4.1, and 1.4.2, I have no problem 
pulling it from 1.5 if problematic, or even from 1.4.3 if more than problematic 
approaching broken. Please advise.
{quote}
Yeah, pulling from 1.4 would probably be best also (I'm not sure why I didn't 
ask the question then, apologies). I think there are two potential fixes:
 # For branch-1, lift anything package-private from metrics2 we have to rely on 
into hbase itself
 # For branch-2, use the hbase-metrics API and avoid metrics2 completely (I 
think helping HBASE-18409 get in would be helpful, maybe necessary)

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessor

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-02-28 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16381524#comment-16381524
 ] 

stack commented on HBASE-19769:
---

bq. Would have been useful to get the reports about issues regarding 
HBASE-17448 expressed over there during review, or at least expressed over 
there when this got pulled from 2.0.

Yes. Should have updated the original issue [~apurtell].

Do you know if this an issue in 1.4x [~elserj] also sir?

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by:

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-02-28 Thread Andrew Purtell (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16381180#comment-16381180
 ] 

Andrew Purtell commented on HBASE-19769:


I feel this should come out in 1.5 since it is already out in 2.0, at least.

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by: java.lang.IllegalAccessError: tried to access class 
> org.apache.hadoop.metrics2.lib.MetricsInfoImpl from class 
> org.apache.hadoop.metrics2.lib.DynamicMetricsRegistry
> at 
> org.apache.hadoop

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-02-28 Thread Andrew Purtell (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16381173#comment-16381173
 ] 

Andrew Purtell commented on HBASE-19769:


Would have been useful to get the reports about issues regarding HBASE-17448 
expressed over there during review, or at least expressed over there when this 
got pulled from 2.0. I see the following:
- Issues with service loading in YARN
- Too verbose (? - they are metrics)
- Dont' want stuff based on hadoop-metrics 

All valid. 

Although this shipped in 1.4.0, 1.4.1, and 1.4.2, I have no problem pulling it 
from 1.5 if problematic, or even from 1.4.3 if more than problematic 
approaching broken. Please advise. 
[~stack] [~elserj]

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIter

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-02-28 Thread Andrew Purtell (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16381169#comment-16381169
 ] 

Andrew Purtell commented on HBASE-19769:


So the decision was to (permanently?) revert HBASE-17448 here.

I don't see a notice on HBASE-17448 informing folks there this was going to 
happen.

Since it is out from 2.0, should we revert it from 1.5 too?

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by: java.lang.IllegalAccessError: tried to access class 
> org.apache.hado

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-12 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16324902#comment-16324902
 ] 

stack commented on HBASE-19769:
---

[~elserj] RN? And this incompat change given it shipped in 1.4? Might want to 
note it. Good on you Josh.

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by: java.lang.IllegalAccessError: tried to access class 
> org.apache.hadoop.metrics2.lib.MetricsInfoImpl from class 
> org.apache.hadoop.metrics2.lib.DynamicMetricsRegistry
> at 
> org.ap

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-12 Thread Hudson (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16324808#comment-16324808
 ] 

Hudson commented on HBASE-19769:


FAILURE: Integrated in Jenkins build HBase-Trunk_matrix #4390 (See 
[https://builds.apache.org/job/HBase-Trunk_matrix/4390/])
HBASE-19769 Remove ZK metrics because of classloader issues (elserj: rev 
057e80c1639412b25c2b3462851729a33cac39c7)
* (delete) 
hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKMetrics.java
* (delete) 
hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKMetricsListener.java
* (edit) 
hbase-zookeeper/src/main/java/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.java
* (delete) 
hbase-zookeeper/src/test/java/org/apache/hadoop/hbase/zookeeper/TestZKMetrics.java


> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextSer

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-11 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323416#comment-16323416
 ] 

stack commented on HBASE-19769:
---

+1 then for master and branch-2.

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by: java.lang.IllegalAccessError: tried to access class 
> org.apache.hadoop.metrics2.lib.MetricsInfoImpl from class 
> org.apache.hadoop.metrics2.lib.DynamicMetricsRegistry
> at 
> org.apache.hadoop.metrics2.lib.DynamicMetricsRegistry.newGauge(DynamicMetri

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-11 Thread Josh Elser (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323246#comment-16323246
 ] 

Josh Elser commented on HBASE-19769:


bq. Will put this on my test cluster to verify it works.

Rebuilt Phoenix against a version of HBase with this patch and the job went 
through swimmingly.

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19769.001.branch-2.patch
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by: java.lang.IllegalAccessError: tried to access class 
> org.apache.hadoop.metrics2.lib.MetricsInfoImpl from class 
> org.apache.hadoop

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-11 Thread Hadoop QA (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323241#comment-16323241
 ] 

Hadoop QA commented on HBASE-19769:
---

| (/) *{color:green}+1 overall{color}* |
\\
\\
|| Vote || Subsystem || Runtime || Comment ||
| {color:blue}0{color} | {color:blue} reexec {color} | {color:blue}  2m 
33s{color} | {color:blue} Docker mode activated. {color} |
|| || || || {color:brown} Prechecks {color} ||
| {color:blue}0{color} | {color:blue} findbugs {color} | {color:blue}  0m  
0s{color} | {color:blue} Findbugs executables are not available. {color} |
| {color:green}+1{color} | {color:green} hbaseanti {color} | {color:green}  0m  
0s{color} | {color:green} Patch does not have any anti-patterns. {color} |
| {color:green}+1{color} | {color:green} @author {color} | {color:green}  0m  
0s{color} | {color:green} The patch does not contain any @author tags. {color} |
| {color:green}+1{color} | {color:green} test4tests {color} | {color:green}  0m 
 0s{color} | {color:green} The patch appears to include 1 new or modified test 
files. {color} |
|| || || || {color:brown} branch-2 Compile Tests {color} ||
| {color:green}+1{color} | {color:green} mvninstall {color} | {color:green}  3m 
27s{color} | {color:green} branch-2 passed {color} |
| {color:green}+1{color} | {color:green} compile {color} | {color:green}  0m 
12s{color} | {color:green} branch-2 passed {color} |
| {color:green}+1{color} | {color:green} checkstyle {color} | {color:green}  0m 
11s{color} | {color:green} branch-2 passed {color} |
| {color:green}+1{color} | {color:green} shadedjars {color} | {color:green}  3m 
44s{color} | {color:green} branch has no errors when building our shaded 
downstream artifacts. {color} |
| {color:green}+1{color} | {color:green} javadoc {color} | {color:green}  0m 
11s{color} | {color:green} branch-2 passed {color} |
|| || || || {color:brown} Patch Compile Tests {color} ||
| {color:green}+1{color} | {color:green} mvninstall {color} | {color:green}  3m 
22s{color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} compile {color} | {color:green}  0m 
13s{color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} javac {color} | {color:green}  0m 
13s{color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} checkstyle {color} | {color:green}  0m 
12s{color} | {color:green} the patch passed {color} |
| {color:green}+1{color} | {color:green} whitespace {color} | {color:green}  0m 
 0s{color} | {color:green} The patch has no whitespace issues. {color} |
| {color:green}+1{color} | {color:green} shadedjars {color} | {color:green}  3m 
28s{color} | {color:green} patch has no errors when building our shaded 
downstream artifacts. {color} |
| {color:green}+1{color} | {color:green} hadoopcheck {color} | {color:green} 
14m  3s{color} | {color:green} Patch does not cause any errors with Hadoop 
2.6.5 2.7.4 or 3.0.0. {color} |
| {color:green}+1{color} | {color:green} javadoc {color} | {color:green}  0m 
11s{color} | {color:green} the patch passed {color} |
|| || || || {color:brown} Other Tests {color} ||
| {color:green}+1{color} | {color:green} unit {color} | {color:green}  0m 
32s{color} | {color:green} hbase-zookeeper in the patch passed. {color} |
| {color:green}+1{color} | {color:green} asflicense {color} | {color:green}  0m 
 9s{color} | {color:green} The patch does not generate ASF License warnings. 
{color} |
| {color:black}{color} | {color:black} {color} | {color:black} 29m  0s{color} | 
{color:black} {color} |
\\
\\
|| Subsystem || Report/Notes ||
| Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hbase:9f2f2db |
| JIRA Issue | HBASE-19769 |
| JIRA Patch URL | 
https://issues.apache.org/jira/secure/attachment/12905768/HBASE-19769.001.branch-2.patch
 |
| Optional Tests |  asflicense  javac  javadoc  unit  findbugs  shadedjars  
hadoopcheck  hbaseanti  checkstyle  compile  |
| uname | Linux 272abd659189 4.4.0-43-generic #63-Ubuntu SMP Wed Oct 12 
13:48:03 UTC 2016 x86_64 GNU/Linux |
| Build tool | maven |
| Personality | 
/home/jenkins/jenkins-slave/workspace/PreCommit-HBASE-Build/component/dev-support/hbase-personality.sh
 |
| git revision | branch-2 / 3e6f80dcd5 |
| maven | version: Apache Maven 3.5.2 
(138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T07:58:13Z) |
| Default Java | 1.8.0_151 |
|  Test Results | 
https://builds.apache.org/job/PreCommit-HBASE-Build/11031/testReport/ |
| modules | C: hbase-zookeeper U: hbase-zookeeper |
| Console output | 
https://builds.apache.org/job/PreCommit-HBASE-Build/11031/console |
| Powered by | Apache Yetus 0.6.0   http://yetus.apache.org |


This message was automatically generated.



> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> 

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-11 Thread Josh Elser (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323152#comment-16323152
 ] 

Josh Elser commented on HBASE-19769:


bq. Gotcha! I was still stuck on leaving them server-side. Removing them 
outright is fine.

Let me make a patch for this. I had essentially done this already to verify 
that this was the problem. After nulling out the ZKMetrics class, I was able to 
run through Phoenix's CSVBulkLoad tool.

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by: java.lang.IllegalAccessError: tried to access class 

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-11 Thread Josh Elser (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323137#comment-16323137
 ] 

Josh Elser commented on HBASE-19769:


bq. Not sure I follow. To be clear, strip all zk metrics. The thing is too 
verbose anyways and can look at ensemble and hbase logs to figure whats going 
on?

Gotcha! I was still stuck on leaving them server-side. Removing them outright 
is fine.

I think for client-metrics, we should use the work Ron has put up in 
HBASE-18409 as the path forward. That will help avoid this hitting us yet again 
(I think).

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(Compati

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-11 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323128#comment-16323128
 ] 

stack commented on HBASE-19769:
---

bq. The problem with #1 is that I'm not sure how we determine when we're in the 
context of a user and when we're in the context of a service.

Not sure I follow. To be clear, strip all zk metrics. The thing is too verbose 
anyways and can look at ensemble and hbase logs to figure whats going on?

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:59)
> ... 21 more
> Caused by: java.lang.IllegalAccessError: tried to access class 
> o

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-11 Thread Josh Elser (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323120#comment-16323120
 ] 

Josh Elser commented on HBASE-19769:


bq. #1 sounds easy-to-do? Nice to have but an aspect of general client metrics 
and user is not completely lost in that they can look at zk ensemble metrics. 
#1 has never shipped in any hbase?

Sadly, it shipped in 1.4.0 -- makes me surprised how we didn't surface this in 
1.4.0 testing. I guess we launch our Tools directly, and don't exec out to 
yarn-jar or anything which would explain it. I haven't tested there yet.

The problem with #1 is that I'm not sure how we determine when we're in the 
context of a user and when we're in the context of a service.

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
>   

[jira] [Commented] (HBASE-19769) IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce jobs

2018-01-11 Thread stack (JIRA)

[ 
https://issues.apache.org/jira/browse/HBASE-19769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323051#comment-16323051
 ] 

stack commented on HBASE-19769:
---

We don't want to use hadoops metrics long-term if thats of any use to. Its only 
been a pain. Modules for hadoop1 vs hadoop2. We have hacks in place to kill it 
and restart it because no other way of onlining new metrics -- e.g. region 
added/removed. We spend most of our CPU counting so we should probably own the 
metrics system rather than defer to another.

#1 sounds easy-to-do? Nice to have but an aspect of general client metrics and 
user is not completely lost in that they can look at zk ensemble metrics. #1 
has never shipped in any hbase?

> IllegalAccessError on package-private Hadoop metrics2 classes in MapReduce 
> jobs
> ---
>
> Key: HBASE-19769
> URL: https://issues.apache.org/jira/browse/HBASE-19769
> Project: HBase
>  Issue Type: Bug
>  Components: mapreduce, metrics
>Affects Versions: 2.0.0-beta-1
>Reporter: Josh Elser
>Assignee: Josh Elser
>Priority: Critical
> Fix For: 2.0.0-beta-2
>
>
> issues for context: HBASE-17170, HBASE-17448, TEZ-3299, HADOOP-10893
> Since Hadoop 2.6.0, the {{yarn jar}} entry point to submit a YARN job has 
> been using a custom classloader to separate Hadoop dependencies from the 
> user's JAR being run. A separate classloader is created for the user-provided 
> jar, and then this classloader is set as the contextClassLoader before the 
> Tool is executed by Hadoop's RunJar class. This has been (mostly?) fine for 
> us to date because we don't try to access any Hadoop internal classes 
> client-side.
> However, with the ZK metrics, clients are pushing ZK metrics to metrics2. The 
> problem is that Hadoop metrics2 implementations which we reference from the 
> same package are loaded by a different classloader than our HBase code is 
> loaded from. This makes the expected package-private access of these Metrics2 
> classes (e.g. MetricsInfoImpl) fail with an IllegalAccessError.
> {noformat}
> java.lang.RuntimeException: Could not create  interface 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is the hadoop 
> compatibility jar on the classpath?
> at 
> org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance(CompatibilitySingletonFactory.java:75)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKMetrics.(ZKMetrics.java:36)
> at 
> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.(RecoverableZooKeeper.java:115)
> at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:139)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:128)
> at 
> org.apache.hadoop.hbase.zookeeper.ZKWatcher.(ZKWatcher.java:102)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.getAuthToken(TokenUtil.java:293)
> at 
> org.apache.hadoop.hbase.security.token.TokenUtil.addTokenForJob(TokenUtil.java:259)
> at 
> org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initCredentials(TableMapReduceUtil.java:535)
> at 
> org.apache.phoenix.mapreduce.MultiHfileOutputFormat.configureIncrementalLoad(MultiHfileOutputFormat.java:712)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.submitJob(AbstractBulkLoadTool.java:300)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.loadData(AbstractBulkLoadTool.java:267)
> at 
> org.apache.phoenix.mapreduce.AbstractBulkLoadTool.run(AbstractBulkLoadTool.java:180)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
> at 
> org.apache.phoenix.mapreduce.CsvBulkLoadTool.main(CsvBulkLoadTool.java:109)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
> Caused by: java.util.ServiceConfigurationError: 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource: Provider 
> org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl could not be 
> instantiated
> at java.util.ServiceLoader.fail(ServiceLoader.java:232)
> at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
> at 
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.Se