[HADOOP] HBase를 연결하는 자바 API를 사용할 때 박히
HADOOPHBase를 연결하는 자바 API를 사용할 때 박히
내 지역 환경 :
OS X 10.9.2, HBase를-0.94.17, 자바 1.6
내 HBase를 모드 : 독립
나는 쉘에서 작업을 할 수 있었다,하지만 난 자바 API를 사용하는 경우, 그것은 작동하지 않았다.
내 자바 코드 :
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
public class MyLittleHBaseClient {
public static void main(String[] args) throws IOException {
Configuration config = HBaseConfiguration.create();
config.addResource("/Users/apple/Documents/tools/hbase-0.94.17/conf/hbase-site.xml");
HTable table = new HTable(config, "myLittleHBaseTable");
Put p = new Put(Bytes.toBytes("myLittleRow"));
p.add(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"),
Bytes.toBytes("Some Value"));
table.put(p);
Get g = new Get(Bytes.toBytes("myLittleRow"));
Result r = table.get(g);
byte [] value = r.getValue(Bytes.toBytes("myLittleFamily"),
Bytes.toBytes("someQualifier"));
String valueStr = Bytes.toString(value);
System.out.println("GET: " + valueStr);
Scan s = new Scan();
s.addColumn(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"));
ResultScanner scanner = table.getScanner(s);
try {
for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
// print out the row we found and the columns we were looking for
System.out.println("Found row: " + rr);
}
} finally {
scanner.close();
}
}
}
여기 내 conf의 문서 중 일부입니다 :
export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///Users/apple/Documents/tools/hbase-0.94.17/hbase-rootdir/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/Users/apple/Documents/tools/hbase-0.94.17/hbase-zookeeper/zookeeper</value>
</property>
</configuration>
나는 위의 자바 코드를 실행하면, 다음과 같은 정보를 가지고 :
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2014-03-31 13:20:15.037 java[873:1003] Unable to load realm info from SCDynamicStore
다음 콘솔은 여기에 멈추지 않았다 그리고 아무것도주지 않았다. (더 이상 응답)
또한 여기 내 /Users/apple/Documents/tools/hbase-0.94.17/logs/hbase-apple...local.log를 첨부 :
https://docs.google.com/file/d/0BxtBre5A8J61Y2k3SXNtNGs1WXM/edit
당신의 환자 주셔서 감사합니다, 당신의 대답은 나에게 큰 도움이 될 것입니다 :)
해결법
-
==============================
1.당신의 conf 파일에서 "hbase-env.sh" 대신 당신이 가지고있는 라인 : 수출 HBASE_OPTS = "- XX : + UseConcMarkSweepGC" 추가 : -Djava.security.krb5.realm = -Djava.security.krb5.kdc = 라인이 될 것입니다 그래서 수출 HBASE_OPTS = "- XX : + UseConcMarkSweepGC -Djava.security.krb5.realm = -Djava.security.krb5.kdc =" "SCDynamicStore에서 영역 정보를로드 할 수 없습니다"OSX에 하둡 : 컨텍스트 여기를 봐
당신의 conf 파일에서 "hbase-env.sh" 대신 당신이 가지고있는 라인 : 수출 HBASE_OPTS = "- XX : + UseConcMarkSweepGC" 추가 : -Djava.security.krb5.realm = -Djava.security.krb5.kdc = 라인이 될 것입니다 그래서 수출 HBASE_OPTS = "- XX : + UseConcMarkSweepGC -Djava.security.krb5.realm = -Djava.security.krb5.kdc =" "SCDynamicStore에서 영역 정보를로드 할 수 없습니다"OSX에 하둡 : 컨텍스트 여기를 봐
-
==============================
2.당신은 필요가 없습니다
당신은 필요가 없습니다
Configuration config = HBaseConfiguration.create(); config.addResource("/Users/apple/Documents/tools/hbase-0.94.17/conf/hbase-site.xml");
당신은 HBase를-site.xml 파일이 추가합니다.
당신의 HBase를-site.xml 파일이 추가 :
<특성> <이름> hbase.zookeeper.property.clientPort 이름> <값> 2181 값> 속성>
-
==============================
3.나는이 문제를 만났다. 나는, HBase를-site.xml 파일이 아닌 IP에서 설정 서버 이름을했다 내 자바 클라이언트는이 상황에 갇혀.
나는이 문제를 만났다. 나는, HBase를-site.xml 파일이 아닌 IP에서 설정 서버 이름을했다 내 자바 클라이언트는이 상황에 갇혀.
그래서 서버 이름 내 클라이언트 시스템의 호스트를 설정하고, 나는이 사건을 해결했다.
-
==============================
4.처음에는, 당신은 HBase를-site.xml 파일에 clientPort와를 확인 :
처음에는, 당신은 HBase를-site.xml 파일에 clientPort와를 확인 :
<property> <name>hbase.zookeeper.property.clientPort</name> <value>2222</value> </property>
그리고 자바 프로그램 : 당신은 HBase를-site.xml 파일에로 clientPort와에게 동일하게 설정해야합니다 :
Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.property.clientPort", "2222");
from https://stackoverflow.com/questions/22755912/get-stuck-when-using-java-api-to-connect-hbase by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 작업 시도의 호스트 이름을 찾을 수 하둡 (0) | 2019.09.23 |
---|---|
[HADOOP] 극적 장면 : 클라우 데라 하둡에 연결 임팔라를 사용하는 동안 오류 (0) | 2019.09.23 |
[HADOOP] GZIP 데이터의 압축 / 압축 해제 하둡 / PIG 투명인가? (0) | 2019.09.23 |
[HADOOP] HBase를 설정 구성 : HMaster가 실행되고 있지 (0) | 2019.09.23 |
[HADOOP] 응용 프로그램으로 인해 오전 컨테이너에 2 번 실패가 ExitCode로 종료 : 1 (0) | 2019.09.23 |