복붙노트

[HADOOP] 때문에 HBase를 클라이언트 항아리 = TRUE 관리 하드에 HTable 데이터를 스캔 Bigtable을 연결할 수 없습니다

HADOOP

때문에 HBase를 클라이언트 항아리 = TRUE 관리 하드에 HTable 데이터를 스캔 Bigtable을 연결할 수 없습니다

나는 통해 Dataproc에 돼지를 사용하여 Bigtable을에서 데이터를로드하는 사용자 정의로드 기능에 일하고 있어요. 내가 통해 Dataproc에서 잡고 jar 파일의 다음 목록을 사용하여 내 자바 코드를 컴파일합니다. 나는 다음과 돼지 스크립트를 실행하면이 Bigtable을에 연결을 시도 할 때 실패합니다.

오류 메시지는 다음과 같습니다

Bigtable does not support managed connections.

질문 :

세부:

Jar 파일 :

hadoop-common-2.7.3.jar 
hbase-client-1.2.2.jar
hbase-common-1.2.2.jar
hbase-protocol-1.2.2.jar
hbase-server-1.2.2.jar
pig-0.16.0-core-h2.jar

여기 내 사용자 지정로드 기능을 사용하여 간단한 돼지 스크립트는 다음과 같습니다

%default gte         '2017-03-23T18:00Z'
%default lt          '2017-03-23T18:05Z'
%default SHARD_FIRST '00'
%default SHARD_LAST  '25'
%default GTE_SHARD   '$gte\_$SHARD_FIRST'
%default LT_SHARD    '$lt\_$SHARD_LAST'
raw = LOAD 'hbase://events_sessions'
      USING com.eduboom.pig.load.HBaseMultiScanLoader('$GTE_SHARD', '$LT_SHARD', 'event:*')
      AS (es_key:chararray, event_array);
DUMP raw;

내 사용자로드 기능 HBaseMultiScanLoader는 SHARD_LAST 통해 SHARD_FIRST 의해 GTE 및 LT 및 분산됩니다 사이의 시간 범위에 의해 결정 테이블 events_sessions 데이터의 범위에서 여러 가지 검사를 수행하는 검사 개체의 목록을 생성한다.

이 부하 기능과 돼지 스크립트에서 사용할 수 있도록 HBaseMultiScanLoader는 org.apache.pig.LoadFunc를 확장합니다. 돼지 내 스크립트를 실행하면 () LoadFunc.getInputFormat를 호출합니다. getInputFormat ()의 내 구현 org.apache.hadoop.mapreduce.InputFormat를 확장 내 사용자 정의 클래스 MultiScanTableInputFormat의 인스턴스를 반환합니다. MultiScanTableInputFormat 테이블에 대한 연결을 초기화하는 org.apache.hadoop.hbase.client.HTable 객체를 초기화합니다.

HBase와 클라이언트 소스 코드에 파고, 나는 org.apache.hadoop.hbase.client.ConnectionManager.getConnectionInternal ()가 하드 "관리"속성과 org.apache.hadoop.hbase.client.ConnectionManager.createConnection ()를 호출하는 것을 볼 수 "true"로한다. 내 코드 (MultiScanTableInputFormat)이 false로 관리 설정할 수있는 옵션을 제공하지 않습니다 getConnectionInternal를 (호출하는 HTable 객체)를 초기화하려고 아래에서 당신은 스택 추적에서 볼 수 있습니다. 스택 추적을 추락, 당신은 실패 할 Bigtable을 연결을 = true를 관리하고, 따라서 원인이 수락되지 않습니다 AbstractBigtableConnection에 도착합니다.

다음은 오류를 보여주는 스택 추적입니다 :

2017-03-24 23:06:44,890 [JobControl] ERROR com.turner.hbase.mapreduce.MultiScanTableInputFormat - java.io.IOException: java.lang.reflect.InvocationTargetException
    at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:240)
    at org.apache.hadoop.hbase.client.ConnectionManager.createConnection(ConnectionManager.java:431)
    at org.apache.hadoop.hbase.client.ConnectionManager.createConnection(ConnectionManager.java:424)
    at org.apache.hadoop.hbase.client.ConnectionManager.getConnectionInternal(ConnectionManager.java:302)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:185)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:151)
    at com.eduboom.hbase.mapreduce.MultiScanTableInputFormat.setConf(Unknown Source)
    at com.eduboom.pig.load.HBaseMultiScanLoader.getInputFormat(Unknown Source)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getSplits(PigInputFormat.java:264)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:301)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:318)
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:196)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)
    at org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob.submit(ControlledJob.java:335)
    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.pig.backend.hadoop23.PigJobControl.submit(PigJobControl.java:128)
    at org.apache.pig.backend.hadoop23.PigJobControl.run(PigJobControl.java:194)
    at java.lang.Thread.run(Thread.java:745)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher$1.run(MapReduceLauncher.java:276)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238)
    ... 26 more
Caused by: java.lang.IllegalArgumentException: Bigtable does not support managed connections.
    at org.apache.hadoop.hbase.client.AbstractBigtableConnection.<init>(AbstractBigtableConnection.java:123)
    at com.google.cloud.bigtable.hbase1_2.BigtableConnection.<init>(BigtableConnection.java:55)
    ... 31 more

해결법

  1. ==============================

    1.원래 문제는 오래된 사용되지 HBase와 클라이언트 항아리와 클래스의 사용에 의해 발생했다.

    원래 문제는 오래된 사용되지 HBase와 클라이언트 항아리와 클래스의 사용에 의해 발생했다.

    나는 Google에서 제공하는 최신 HBase를 클라이언트 항아리를 사용하려면 코드를 업데이트하고 원래 문제가 수정되었습니다.

    나는 아직도 내가 아직 파악하지 않은 일부 ZK 문제와 함께 붙어 있지만 다른 질문에 대한 대화의 취득.

    이것은 하나의 대답입니다!

  2. ==============================

    2.저도 같은 오류 메시지가 직면 한 :

    저도 같은 오류 메시지가 직면 한 :

    하지만, 내 조사에 따르면, 근본 원인은 클래스 HTable 명시 적으로 구축 할 수 없다는 것입니다. 후 connection.getTable에 의해 HTable를 구성하는 방법을 변경했습니다. 문제가 해결.

  3. from https://stackoverflow.com/questions/43011467/cant-connect-to-bigtable-to-scan-htable-data-due-to-hardcoded-managed-true-in-h by cc-by-sa and MIT license