반응형

Programming/Java 24

Java (JVM) 사용 시 Container awareness

출처: Container Awareness Learn the intricate details of how JVM applications see container resources and how it impacts heap, CPU, and threads. spring-gcp.saturnism.me JDK 8u192 (릴리즈 노트 확인 시 2018년 10월 16일 릴리즈) 이전 버전이 설치된 이미지에서는 container에서 cgroup으로 제한된 자원을 정상적으로 인식하지 못하고 host의 전체 자원을 바라보게 된다. 따라서 이후 버전을 사용해야만 kubernetes 등에서 자원에 제한을 주었을 때 jvm이 정상적으로 해당 cgroup 제약을 인식할 수 있고 제한된 자원만을 사용하도록 실행된다.

Programming/Java 2021.04.26

maven-shade-plugin

예전에는 maven-assembly-plugin을 사용해서 uber jar를 만들었는데 최근에 필요해서 다시 검색해 보니 maven-shade-plugin이 더 많이 나오는 것으로 보인다. 기본설정으로 만들어진 uber jar의 경우 spark 에서 사용하려고 할 시 manifest 충돌 관련 보안 에러가 발생해서, 홈페이지에서 제공하는 manifest 제외하는 기본 설정 코드를 기록삼아 올려본다. (링크) org.apache.maven.plugins maven-shade-plugin 3.2.4 package shade junit:junit junit/framework/** org/junit/** org/junit/experimental/** org/junit/runners/** *:* META-INF/..

Programming/Java 2020.11.06

How do I list the files inside a JAR file?

http://stackoverflow.com/a/28057735/6599494 spring-boot의 단일 jar 파일에서 의존성 파일을 추출해야할 일이 생겼다. 위의 글의 방법 중 CodeSource 의 경우에는 /BOOT-INF/lib 밑의 파일의 리스트를 얻어오는데 실패했지만, Java 8의 Files.walk 기능을 사용해서는 올바르게 리스트를 얻어왔고 덕분에 다이나믹하게 파일을 추출하는데 성공했다. Java 7 이라면 Files.walkFileTree를 쓰면 되지 않을까 한다.

Programming/Java 2016.08.31

Remote hbase에 접근이 불가능할때

1번 서버에 hbase master 및 datanode, region server가 존재하고 2번 서버는 오로지 client만으로 사용하려고 했는데 2->1번 접속 시 connection refused가 떴다. 여러가지를 해보다가, http://stackoverflow.com/questions/7791788/hbase-client-do-not-able-to-connect-with-remote-hbase-server 링크를 따라서 해보고 해결. /etc/hosts의 내용을 아마 위에서 아래로만 읽는 걸로 알고있는데, 127.0.01 localhost를 /etc/hosts의 제일 아래로 내려놔 hbase master가 켜져있는 hostname을 다른 서버들도 붙을 수 있는 ip로 보도록 하니 해결이 됐다. ..

Programming/Java 2016.04.05

초간단 Maven local repository 만들기

준비물 : maven 3.x, nodejs (0.10.36 버전 사용) 1. 의존성으로 추가하고자 하는 jar 파일을 자신의 maven local repository(~/.m2/repository) 에 등록한다. from http://www.mkyong.com/maven/how-to-include-library-manully-into-maven-local-repository/ $ mvn install:install-file -Dfile={file-path} -DgroupId={group id}-DartifactId={artifactId} -Dversion={version} -Dpackaing=jar 가령 작성자의 경우는 원하는 파일을 다음과 같이 추가하였다: $ mvn install:install-fil..

Programming/Java 2016.01.07

HBase Coprocessor의 예제를 응용한 Distributed Count와 Apache Phoenix의 Count문 비교

HBase의 공식 레퍼런스에 있는 Coprocessor 예제 를 더 단순화 시켜서 Count를 만들어 봤다. Github 주소 테스트로, 약 2GB, Row 당 크기는 약 20byte, 총 1억개를 가지고 있는 테이블을 각각 Apache Phoenix를 통해서, 혹은 내 스스로 나누어서 넣고 count를 실행해봤다. 실험에 사용한 노드가 10대라서 phoenix 테이블이나 hbase에 바로 넣은것이나 둘 다 region 구간은 동일하고 나누고 하나의 region당 1천개 씩 넣었다. hbase heap에 cache 되는것도 고려하여 총 10번씩 실행시켜 평균을 냈는데 phoenix는 약 6.51초, coprocessor는 11.43초가 나왔다. 아무래도 Apache phoenix에서는 단순히 endpoi..

Programming/Java 2015.12.21

Spark CSV 의 의존성

Spark-csv 모듈은 Spark에서 CSV를 RDD화 시키는데 사용되는 모듈로, SparkSQL에서는 sql을 통해 csv를 바로 dataframe화 시키는것도 가능하다. Spark-CSV를 이용할때, 모든 의존성 파일들을 spark 코드에 넣어준게 아니라면 spark-csv의 jar파일 뿐만 아니라 반드시 spark-submit에 의존성 jar파일로 commons-csv-1.1.jar 파일을 포함시켜줘야 한다. sbt나 maven과 같은 빌드 도구들의 사용이 보편화됨에 따라 개별 의존성에 대한 정보의 공시는 더더욱 없어지는것 같다...

Programming/Java 2015.12.16

Spark on HBase 관련 코드들

https://github.com/tkyoo/SparkOnHBase Apache Spark를 통해서 HBase에 접근했던 코드들 * Spark에서 Apache Phoenix를 통해 HBase에 접근하는 코드 (Pheonix 폴더) * Spark에서 자체 Hadoop API만을 이용하여 HBase에 접근하는 코드 (Spark 폴더) * Cloudera의 SparkOnHBase 가 정식으로 추가돼 HBase 2.0 때 코드에 들어가 있는 hbase-spark 모듈의 HBaseContext 객체를 이용하여 HBase 접근. (Spark/HBaseContext 폴더). Spark / SparkSQL 사용

Programming/Java 2015.12.10

SparkSQL on HBase - hbase.column.mapping에 사용가능한 타입

HBase 공식 문서의 SparkSQL 부분을 확인해보면 다음과 같이 Dataframe을 만드는 부분이 있다: val sqlContext = new SQLContext(sc) df = sqlContext.load("org.apache.hadoop.hbase.spark", Map("hbase.columns.mapping" -> "KEY_FIELD STRING :key, A_FIELD STRING c:a, B_FIELD STRING c:b", "hbase.table" -> "t1")) df.registerTempTable("hbaseTmp") *) 우선 최신버전에 비해 바뀐점은 SparkSQL의 SqlContext에서 load를 바로 사용하는것은 deprecated 됐다. 현재 버전 기준 올바른 사용법은 s..

Programming/Java 2015.11.25
반응형