메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다. 문의사항은 gooper@gooper.com로 메일을 보내주세요.


0. S2RDF를 주요 실행부분만 추출하여 1건의 triple data를 HDFS에 등록하고 sparql을 sql로 변환하여 sql실행하는 방법과 
  S2RDF소스를 컴파일 방법을 설명한다.

1. download및 압축풀기
  가. 다운로드 : http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2RDF.html
  나. 파일 : S2RDF_v1.1.tar파일을 다운로드 함 

2. upload(/home/hadoop밑에 아래 폴더를 업로드함)
 가. DataSetCreator폴더
-rw-rw-r--. 1 hadoop hadoop     0 2016-06-14 16:48 DataBaseCreator.err (DataSetCreator.py실행시 생섣됨)
-rw-rw-r--. 1 hadoop hadoop  1288 2016-06-14 16:49 DataBaseCreator.log (DataSetCreator.py실행시 생섣됨)
-rw-rw-r--. 1 hadoop hadoop  4442 2016-06-02 16:49 DataSetCreator.py
-rw-rw-r--. 1 hadoop hadoop    23 2015-08-17 17:08 README.md
-rw-rw-r--. 1 hadoop hadoop 30785 2016-06-09 15:51 datasetcreator_2.10-1.1.jar (DataSetCreator.py를 실행하기 위해서 dtarget폴더밑에 생성되는 atasetcreator_2.10-1.1.jar파일을 이곳에 복사함)
drwxrwxr-x. 5 hadoop hadoop  4096 2016-06-15 18:35 S2RDF_DataSetCreator (소스파일 폴더)

* DataSetCreator/S2RDF_DataSetCreator의 하위폴더
drwxrwxr-x. 3 hadoop hadoop  4096 2016-05-31 18:34 project
-rw-rw-r--. 1 hadoop hadoop   400 2016-06-01 22:27 project.sbt (sbt용 빌드정보파일)
drwxrwxr-x. 3 hadoop hadoop  4096 2016-05-30 15:55 src (DatasetCreator의 scala소스파일)
drwxrwxr-x. 7 hadoop hadoop  4096 2016-05-31 11:20 target (sbt package명령 실행시 생섬됨)

 나. QueryTranslator폴더
-rw-rw-r--.  1 hadoop hadoop 1220 2016-05-26 18:22 README.txt
drwxrwxr-x.  5 hadoop hadoop 4096 2016-06-15 11:11 S2RDF_QueryTranslator
drwxrwxr-x.  7 hadoop hadoop 4096 2016-06-13 15:31 WatDivQuerySet  (WatDiv테스트 쿼리셑)
drwxrwxr-x. 11 hadoop hadoop 4096 2016-06-10 09:40 YagoQuerySet    (Yago테스트 쿼리셑)

* QueryTranslator/S2RDF_QueryTranslator의 하위폴더 
drwxrwxr-x. 3 hadoop hadoop     4096 2016-06-13 15:36 data (QueryTranslator테스트용 sparql등)
drwxrwxr-x. 2 hadoop hadoop     4096 2016-05-26 18:46 lib
-rw-rw-r--. 1 hadoop hadoop 20406370 2016-06-15 11:11 queryTranslator-1.1.0.jar(초기 제공 jar파일)
drwxrwxr-x. 3 hadoop hadoop     4096 2016-05-26 18:46 src (QueryTranslator의 java소스파일)

 다. QueryExecutor폴더
-rw-rw-r--. 1 hadoop hadoop     0 2016-06-13 16:04 QueryExecutor.err   (QueryExecutor.py실행시 생성됨)
-rw-rw-r--. 1 hadoop hadoop  7014 2016-06-13 10:26 QueryExecutor.log   (QueryExecutor.py실행시 생성됨)
-rw-rw-r--. 1 hadoop hadoop  3022 2016-06-13 10:25 QueryExecutor.py
drwxrwxr-x. 7 hadoop hadoop  4096 2016-06-10 15:30 S2RDF_QueryExecutor (소스파일 폴더)
-rw-rw-r--. 1 hadoop hadoop 44399 2016-06-15 16:35 queryexecutor_2.10-1.1.jar (QueryExecutor.py실행시 필요한 jar파일을 이곳에 복사, 이후 소스 변경시컴파일후 이곳으로 복사하여 사용함)
drwxrwxr-x. 3 hadoop hadoop  4096 2016-06-15 11:35 test2 (테스트 목적으로 임의로 만든 폴더임, 테스트용 triple파일(test2.sparql) 및 DatasetCreator실행 결과파일등이 위치 하는곳으로 DataBaseCreator, QueryTranslator및 QueryExecutor가 이곳을 기준으로 실행됨)

* QueryExecutor/S2RDF_QueryExecutor의 하위폴더
drwxrwxr-x. 4 hadoop hadoop  4096 2016-06-10 15:27 Project
drwxrwxr-x. 2 hadoop hadoop  4096 2016-06-10 15:26 bin
drwxrwxr-x. 3 hadoop hadoop  4096 2016-06-10 15:30 project
-rw-rw-r--. 1 hadoop hadoop   219 2016-04-04 22:44 project.sbt (QueryExecutor의 빌드 정보파일)
-rw-rw-r--. 1 hadoop hadoop 36046 2016-06-14 13:19 queryexecutor_2.10-1.1.jar (초기 제공되는 jar파일)
drwxrwxr-x. 4 hadoop hadoop  4096 2016-06-10 15:27 src (QueryExecutor의 scala소스파일)
drwxrwxr-x. 5 hadoop hadoop  4096 2016-06-10 15:31 target (sbt package실행시 생성되는 폴더)

* test2의 하위폴더(테스트 목적으로 임으로 생성함)
drwxrwxr-x. 2 hadoop hadoop 4096 2016-06-14 15:48 statistics
-rw-rw-r--. 1 hadoop hadoop   77 2016-06-14 15:50 test2.sparql (테스트용 triple data파일)
-rw-rw-r--. 1 hadoop hadoop  308 2016-06-15 11:11 test2.sparql.log (QueryTranslator실행시 생성됨)
-rw-rw-r--. 1 hadoop hadoop  346 2016-06-15 11:30 test2.sparql.sql (QueryTranslator실행 결과로 생성됨)

* test2/statistics폴더의 하위
-rw-rw-r--. 1 hadoop hadoop 200 2016-06-14 15:45 stat_os.txt (DatasetCreator실행의 결과로 생성됨)
-rw-rw-r--. 1 hadoop hadoop 200 2016-06-14 15:45 stat_so.txt (DatasetCreator실행의 결과로 생성됨)
-rw-rw-r--. 1 hadoop hadoop 317 2016-06-14 15:44 stat_ss.txt (DatasetCreator실행의 결과로 생성됨)
-rw-rw-r--. 1 hadoop hadoop 261 2016-06-14 15:44 stat_vp.txt (DatasetCreator실행의 결과로 생성됨)

3. triple data(test2.nq)를 이용하여 HDFS에 데이타 생성
(등록하려는 triple data(test2.nq)는 HDFS상의 s2rdf폴더 밑에 존재 해야하고 /home/hadoop/DataSetCreator폴더 밑에서 아래의 4가지 명령을 실행함)
가.. Generate Vertical Partitioning
$HOME/spark/bin/spark-submit --driver-memory 1g --class runDriver --master yarn  --executor-memory 1g --deploy-mode cluster ./datasetcreator_2.10-1.1.jar s2rdf/ test2.nq VP 0.2
==> 실행되는 서버에 /tmp/stat_vp.txt가 만들어짐, 이것을 /home/hadoop/QueryExecutor/test2/statistics에 복사함

나. Generate Exteded Vertical Partitioning subset SO
$HOME/spark/bin/spark-submit --driver-memory 1g --class runDriver --master yarn  --executor-memory 1g --deploy-mode cluster ./datasetcreator_2.10-1.1.jar s2rdf/ test2.nq SO 0.2 
==> 실행되는 서버에 /tmp/stat_so.txt가 만들어짐, 이것을 /home/hadoop/QueryExecutor/test2/statistics에 복사함

다. Generate Exteded Vertical Partitioning subset OS
$HOME/spark/bin/spark-submit --driver-memory 1g --class runDriver --master yarn  --executor-memory 1g --deploy-mode cluster ./datasetcreator_2.10-1.1.jar s2rdf/ test2.nq OS 0.2
==> 실행되는 서버에 /tmp/stat_os.txt가 만들어짐, 이것을 /home/hadoop/QueryExecutor/test2/statistics에 복사함

라. Generate Exteded Vertical Partitioning subset SS
$HOME/spark/bin/spark-submit --driver-memory 1g --class runDriver --master yarn  --executor-memory 1g --deploy-mode cluster ./datasetcreator_2.10-1.1.jar s2rdf/ test2.nq SS 0.2
==> 실행되는 서버에 /tmp/stat_ss.txt가 만들어짐, 이것을 /home/hadoop/QueryExecutor/test2/statistics에 복사함

4. sparql을 sql로 변환
(DataSetCreator과정을 통해서 만들어진 통계정보는 /home/hadoop/QueryExecutor/test2/statistics폴더 밑에 있어야 하며 이 통계정보를 이용하여 ./test2/test2.sparql파일을 sql파일로 변환하여 ./test2/test2.sparql.sql로 저장함.
/home/hadoop/QueryTranslator/S2RDF_QueryTranslator폴더 밑에서 아래의 명령을 실행함)

java -jar /home/hadoop/QueryTranslator/S2RDF_QueryTranslator/queryTranslator-1.1.jar -i ./test2/test2.sparql -o ./test2/test2.sparql -sd ./test2/statistics/ -sUB 0.2

====>실행결과
VP STAT Size = 86
OS STAT Size = 353
SO STAT Size = 353
SS STAT Size = 1702
THE NUMBER OF ALL SAVED (< ScaleUB) TRIPLES IS -> 1311014421
THE NUMBER OF ALL SAVED (< ScaleUB) TABLES IS -> 2127
TABLE-><gr__offers>
TABLE-><foaf__homepage>
TABLE-><sorg__author>
TABLE-><wsdbm__friendOf>
TABLE-><wsdbm__likes>
TABLE-><sorg__language>
TABLE-><rev__hasReview>
TABLE-><rev__reviewer>
TABLE-><wsdbm__follows>
TABLE-><gr__includes>

5. QueryExecutor로 변환된 sql파일 실행
(/home/hadoop/QueryExecutor폴더 밑에서 실행)

$HOME/spark/bin/spark-submit --driver-memory 2g --class runDriver --master yarn  --executor-memory 1g --deploy-mode cluster --files /home/hadoop/QueryExecutor/test2/test2.sparql.sql ./queryexecutor_2.10-1.1.jar s2rdf test2.sparql.sql

==>실행결과
/tmp/table명_resultFile.txt와 table명_resultFileTimes.txt파일이 생성됨(select 결과를 포함하지 않고 queryid및 실행시간만 포함하고 있음)


6. 소스 컴파일 하기
가. DataSetCreator소스 변경시 /home/hadoop/DataSetCreator/S2RDF_DataSetCreator폴더 밑에서 "sbt package"명령을 실행하면 새로 생성된 jar파일의 위치를 알려주는데 이 정보를 이용하여 /home/hadoop/DataSetCreator폴더 밑으로 복사하고 3번을 실행한다.

나. QueryTranslator소스 변경시 QueryTranslator/S2RDF_QueryTranslator밑의 java소스를 별도의 방법(예, eclipse의 java project로 import하여 컴파일)으로 컴파일하고 원래 제공되는 queryTranslator-1.1.jar파일을 압축해제하여 변경된 *.class 폴더등을 update한후 다시 jar파일로 압축하여 /home/hadoop/QueryTranslator/S2RDF_QueryTranslator폴더 두고 4번을 실행한다.

다. QueryExecutor소스 변경시 /home/hadoop/QueryExecutor/S2RDF_QueryExecutor폴더 밑에서 "sbt package"명령을 실행하면 생성된 jar파일의 위치를 알려주는데 이 정보를 이용하여 /home/hadoop/QueryExecutor폴더 밑에 복사하고 5번을 실행한다.

* sbt package실행결과
-bash-4.1$ sbt package
[info] Set current project to datasetcreator (in build file:/home/hadoop/DataSetCreator/)
[info] Updating {file:/home/hadoop/DataSetCreator/}datasetcreator...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Packaging /home/hadoop/DataSetCreator/target/scala-2.10/datasetcreator_2.10-0.1-SNAPSHOT.jar ...
[info] Done packaging.
[success] Total time: 1 s, completed 2016. 6. 17 오전 10:28:46

* test2.nq파일내용
<http://www.w3.org/2002/07/owl#Thing> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .

* test2.sparql파일내용
select ?s ?o where {?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?o}

* test2.sparql.sql파일내용(첫줄의 >>>>>>다음에 SO, --, __의 문자열은 반드시 있어야 됨, 원본소스는 개별실행시 해당되는 내용이 생성되지 않으니 직접 key in하던가 관련 소스를 수정해야함)
>>>>>>TEST-1-U-1--SO-OS-SS-VP__s2rdf
SELECT sub AS s , obj AS o 
         FROM `_L_http__//www.w3.org/1999/02/22-rdf-syntax-ns#type_B_$$1$$`


++++++Tables Statistic
_L_http__//www.w3.org/1999/02/22-rdf-syntax-ns#type_B_$$1$$     0       VP      _L_http__//www.w3.org/1999/02/22-rdf-syntax-ns#type_B_/
        VP      <http__//www.w3.org/1999/02/22-rdf-syntax-ns#type>      1
------

* DataSetCreator를 실행후 HDFS 상의 폴더및 파일 정보(delete->create로 작동함)
-bash-4.1$ hadoop fs -lsr s2rdf
lsr: DEPRECATED: Please use 'ls -R' instead.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/svc/apps/sda/bin/hadoop/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/svc/apps/sda/bin/hadoop/apache-hive-2.0.1-bin/lib/hive-jdbc-2.0.1-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/svc/apps/sda/bin/hadoop/apache-hive-2.0.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
16/06/15 11:21:38 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
drwxr-xr-x   - root   supergroup          0 2016-06-14 16:48 s2rdf/ExtVP
drwxr-xr-x   - root   supergroup          0 2016-06-14 16:42 s2rdf/ExtVP/OS
drwxr-xr-x   - root   supergroup          0 2016-06-14 16:36 s2rdf/ExtVP/SO
drwxr-xr-x   - root   supergroup          0 2016-06-14 16:48 s2rdf/ExtVP/SS
drwxr-xr-x   - root   supergroup          0 2016-06-14 16:29 s2rdf/VP
drwxr-xr-x   - hadoop supergroup          0 2016-06-14 16:29 s2rdf/VP/_L_http__
drwxr-xr-x   - hadoop supergroup          0 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org
drwxr-xr-x   - hadoop supergroup          0 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org/1999
drwxr-xr-x   - hadoop supergroup          0 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org/1999/02
drwxr-xr-x   - hadoop supergroup          0 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org/1999/02/22-rdf-syntax-ns#type_B_.parquet
-rw-r--r--   3 hadoop supergroup          0 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org/1999/02/22-rdf-syntax-ns#type_B_.parquet/_SUCCESS
-rw-r--r--   3 hadoop supergroup        282 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org/1999/02/22-rdf-syntax-ns#type_B_.parquet/_common_metadata
-rw-r--r--   3 hadoop supergroup        584 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org/1999/02/22-rdf-syntax-ns#type_B_.parquet/_metadata
-rw-r--r--   3 hadoop supergroup        906 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org/1999/02/22-rdf-syntax-ns#type_B_.parquet/part-r-00001.parquet
-rw-r--r--   3 hadoop supergroup        282 2016-06-14 16:29 s2rdf/VP/_L_http__/www.w3.org/1999/02/22-rdf-syntax-ns#type_B_.parquet/part-r-00002.parquet
drwxr-xr-x   - hadoop supergroup          0 2016-06-14 16:29 s2rdf/base.parquet
-rw-r--r--   3 hadoop supergroup          0 2016-06-14 16:29 s2rdf/base.parquet/_SUCCESS
-rw-r--r--   3 hadoop supergroup        357 2016-06-14 16:29 s2rdf/base.parquet/_common_metadata
-rw-r--r--   3 hadoop supergroup        820 2016-06-14 16:29 s2rdf/base.parquet/_metadata
-rw-r--r--   3 hadoop supergroup       1321 2016-06-14 16:29 s2rdf/base.parquet/part-r-00001.parquet
-rw-r--r--   3 hadoop supergroup        357 2016-06-14 16:29 s2rdf/base.parquet/part-r-00002.parquet
-rw-r--r--   3 hadoop supergroup        138 2016-06-08 18:28 s2rdf/test2.nq
번호 제목 글쓴이 날짜 조회 수
241 Toree 0.1.0-incubating이 Scala 2.10.4까지만 지원하게 되어서 발생하는 NoSuchMethod오류 문제 해결방법(scala 2.11.x을 지원하지만 오류가 발생할 수 있음) 총관리자 2018.04.20 110
240 딥러닝 수학/알고리즘 '한국어' 강의 총관리자 2016.04.10 110
239 kudu 테이블 metadata강제 삭제시 발생하는 오류 메세지 총관리자 2022.01.12 109
238 impala external 테이블 생성시 컬럼과 라인 구분자를 지정하여 테이블 생성하는 예시 총관리자 2020.02.20 109
237 https용 인증서 발급 명령문 예시및 오류 메세지 총관리자 2018.01.24 109
236 hue.axes_accessattempt테이블 데이터 샘플 총관리자 2020.02.10 108
235 elasticsearch 1.3.0에서 rdf및 hadoop plugin설치 총관리자 2016.04.06 108
234 collection생성혹은 collection조회시 Plugin init failure for [schema.xml] fieldType "pdate": Error loading class 'solr.IntField' 오류 조치사항 총관리자 2022.04.07 107
233 .gitignore파일에 지정되지 않은 파일이 ignore되는 경우 확인방법 총관리자 2016.11.22 107
232 [Impala TLS/SSL이슈]RangerAdminRESTClient.java:151] Failed to get response, Error is: TrustManager is not specified gooper 2023.02.02 106
231 컴퓨터 무한 재부팅 원인및 조치방법 file 총관리자 2017.12.05 106
230 spark 2.0.0를 windows에서 실행시 로컬 파일을 읽을때 발생하는 오류 해결 방법 총관리자 2017.01.12 106
229 [SparkR]SparkR 설치 사용기 1 - Installation Guide On Yarn Cluster & Mesos Cluster & Stand Alone Cluster file 총관리자 2016.11.04 106
228 [AD(LADP)] CDP1.7에서 AD및 Kerberos를 연동해도 각 노드에 os account, os group은 생성되어야 하지만 SSSD서비스를 이용하면 직접 생성될 필요가 없다. gooper 2022.06.10 105
227 Hue Load Balancer를 L4로 L/B하는 경우는 L4쪽 도멘인으로 발행된 인증서를 TLS/SSL항목에 설정해주어야 한다. 총관리자 2021.10.08 104
226 TopBraid Composer에서 SPIN 사용법 file 총관리자 2016.02.25 104
225 https://github.com/Merck/Halyard프로젝트 컴파일및 배포/테스트 총관리자 2017.01.24 103
224 fuseki의 endpoint를 이용한 insert, delete하는 sparql예시 총관리자 2018.02.14 102
223 RDF storage조합에대한 test결과(4store, Jena+HBase, Hive+HBase, CumulusRDF, Couchbase) 페이지 링크 총관리자 2016.05.26 102
222 Class.forName을 이용한 메서드 호출 샘플소스 총관리자 2016.12.21 100

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로