메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


1. 다운로드(S2RDF)및 /home/hadoop/s2rdf에 올리기

http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2RDF.html


2. triple data파일을 HDFS에 등록하기(s p o 각각은 t로 구분되어 있어야함)

hadoop fs -put /tmp/test.nq s2rdf


3. HDFS에 있는 RDF data파일을 이용하여 데이타 생성(./DataSetCreator/디렉토리에서 실행)

python3 ./DataSetCreator.py -i s2rdf/test.nq -s 0.25


* 초기에 제공되는 ./DataSetCreator/DataSetCreator.py파일이 Python 2.6.6에서 오류가 발생하여 python의 버젼을 3.5.1로 올림

DataSetCreator.py파일에 있는 print구문에 오류가 있어서 ()로 묶어주는 등의 python소스의 일부 수정이 필요함

DataSetCreator.py파일 상단에 있는 변수값 및 소스내의 spark-submit의 위치를 실제위치로 변경해줘야함

* Helper.scala파일에 hdfs를 호출하는 부분이 있는데 파일을 찾지 못하는 문제가 발생해서 hdfs의 위치를 절대경로 혹은 정확한 위치를 경로포함해서 수정해주고 sbt로 재 컴파일하여 datasetcreator_2.10-1.1.jar를 다시 만들어서 이후의 과정을 진행해야함.


4. 실행순서(확인결과 spark 1.3.1+ hadoop 2.7.2에서 작동되나, 실행시 "Table Not Found"오류가 발생함->소스에서 테이블명칭 앞뒤로 ` `를 덧붙이도옥 소스수정필요함)

가. DataSetCreator: 주어진 RDF Dataset으로 HDFS에 ExtVP모델을 만들고 통계파일(stat_os.txt, stat_so.txt, stat_ss.txt, stat_vt.txt)도 만드는데, 이는 QueryTranslator가 SPARQL쿼리를 SQL로 변환할때 사용된다.

python DataSetCreator.py -i <inputRDFFile> [-s <ScaleUB> (def=1)]

(예, python3 ./DataSetCreator.py -i s2rdf/test1.nq -s 0.25)

=>python3 ./DataSetCreator.py -i s2rdf/test.nq -s 0.25


나. QueryTranslator : SPARQL쿼리를 SQL로 변환한다. 이때 table usage instructions (necessary for ExtVP model usage)도 만들어진다. QueryExecutor가 실행할 composite쿼리 파일(SQL쿼리의 목록을 갖고 있음)을 만드는 translateWatDivQueries.py가 이 라이브러리를 사용한다.(generateWatDivPathQueries.py와 generateWatDivBasicQueries.py는  WatDiv용 sparql을 만들기전에 텡플릿과 값을 이용하여 sparql을 조합/준비하는 과정이고 translateWatDivQueries.py를 이용하여 최종 sparql을 만들어낸다)


--Inc, Sel, Mix 생성(내부적으로 queryTranslator.jar사용함)

generateWatDivPathQueries.py -i <sourceDir> -o <targetDir> -s <WatDivScale>

(예, python3 ./generateWatDivPathQueries.py -i <sourceDir> -o <targetDir> -s <WatDivScale>)


--WatDiv SPARQL쿼리 생성(내부적으로 queryTranslator.jar사용함)

generateWatDivBasicQueries.py -i <sourceDir> -o <targetDir> -s <WatDivScale>


--위에서 생성한것을 SQL로 변환한다.(내부적으로 queryTranslator.jar)

translateWatDivQueries.py -s <sparqlDir (conatins sparqlFiles)> -t <sqlDir>



---------------------------------------실제 변환 과정-----

* /home/hadoop/QueryTranslator/WatDivQuerySet밑에서 sparql을 sql로 변환작업함

가. hadoop fs -mkdir s2rdf/sparql

나. hadoop fs -mkdir s2rdf/sql

다. hadoop fs -put in/test.sparql s2rdf/sparql

라. python3 ./translateYagoQueries.py -s in -t out


* generateWatDivPathQueries.py -i <sourceDir> -o <targetDir> -s <WatDivScale>

가.python3 ./generateWatDivPathQueries.py -i inputInc -o outputInc -s 1

나.python3 ./generateWatDivPathQueries.py -i inputMix -o outputMix -s 1

다.python3 ./generateWatDivPathQueries.py -i inputSel -o outputSel -s 1


* generateWatDivBasicQueries.py -i <sourceDir> -o <targetDir> -s <WatDivScale>

==>python3 /home/hadoop/QueryTranslator/WatDivQuerySet/SPARQL/WatDivBasic/generateWatDivBasicQueries.py -i input -o output -s 1


* translateWatDivQueries.py -s <sparqlDir (conatins sparqlFiles)> -t <sqlDir>



------------------------------------------------------------------------


다. QueryExecutor : translateWatDivQueries.py를 이용하여 만들어진 SQL Queries가 들어 있는 파일을 실행하는 프로그램

(예, python QueryExecutor.py -d <databaseDirectory> -q <querieListFile>)

==> QueryExecutor.py소스에서 spark-submit option으로 --files IL5-1-U-1--SO-OS-SS-VP__WatDiv1M.sql를 추가해야 함, 

 sql파일명은 위에 형식을 따르게 구성되어야 함 "__"다음에 나오는 "WatDiv1M"을 테이블 명으로 사용함 )

==> 


- python3 ./QueryExecutor.py -d WatDiv1M -q IL5-1-U-1--SO-OS-SS-VP__WatDiv1M.sql -> 성공.. 그러나 결과는 어디서 확인하나?

- python3 ./QueryExecutor.py -d s2rdf -q test1.sql -> 통계정보가 없어서 인지 오류가 발생함

- python3 ./QueryExecutor.py -d s2rdf -q a.sql -> 성공..그러나 결과는 어디서 확인하나??


* 이전에 여러번 실행하면서 오류가 발생했다면 hdfs://mycluster/user/hadoop/s2rdf/data/base.parquet폴더가 존재한다는 오류가 발생하는데 "hadoop fs -rmr hdfs://mycluster/user/hadoop/s2rdf/data/base.parquet"를 이용하여 삭제하고 3번을 다시 실행한다.




참고----------------------*.py파일들 ----

1. DataSetCreator

  ./DataSetCreator/DataSetCreator.py


2. QueryTranslator

 가. WatDivQuerySet

   ./QueryTranslator/WatDivQuerySet/SPARQL/WatDivBasic/generateWatDivBasicQueries.py

   ./QueryTranslator/WatDivQuerySet/SPARQL/selfGenerated/generateWatDivPathQueries.py

   ./QueryTranslator/WatDivQuerySet/translateWatDivQueries.py


 나.YagoQuerySet

   ./QueryTranslator/YagoQuerySet/src/extractYagoSPARQLQueries.py

   ./QueryTranslator/YagoQuerySet/translateYagoQueries.py


3. QueryExecutor

   ./QueryExecutor/QueryExecutor.py


참고----------------------*.jar파일들 -----------

./datasetcreator_2.10-1.1.jar

./DataSetCreator/datasetcreator_2.10-1.1.jar

./DataSetCreator/target/scala-2.10/datasetcreator_2.10-1.1.jar


--------------------


-----DataSetCreator.py가 정상적으로 실행되었을때의 DataSetCreator.log의 내용-------------------------

Generate Vertical Partitioning

Execute $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/ test3.nq VP 0.2 > ./DataBaseCreator.e

rr ...

Time--> 40 sec

Done!

Cluster recovering (time_out = 360sec)...

Done!

Generate Exteded Vertical Partitioning subset SO

Execute $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/ test3.nq SO 0.2 > ./DataBaseCreator.e

rr ...

Time--> 25 sec

Done!

Cluster recovering (time_out = 360sec)...

Done!

Generate Exteded Vertical Partitioning subset OS

Execute $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/ test3.nq OS 0.2 > ./DataBaseCreator.e

rr ...

Time--> 26 sec

Done!

Cluster recovering (time_out = 360sec)...

Done!

Generate Exteded Vertical Partitioning subset SS

Execute $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/ test3.nq SS 0.2 > ./DataBaseCreator.e

rr ...

Time--> 22 sec

Done!

Whole Run Time --> 113 sec


--------hadoop에서 보는 s2rdf-----------------------

-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/gooper/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/gooper/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/gooper/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/09 10:07:16 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-09 10:06 s2rdf/ExtVP

drwxr-xr-x   - root   supergroup          0 2016-06-09 10:00 s2rdf/ExtVP/OS

drwxr-xr-x   - root   supergroup          0 2016-06-09 09:54 s2rdf/ExtVP/SO

drwxr-xr-x   - root   supergroup          0 2016-06-09 10:06 s2rdf/ExtVP/SS

drwxr-xr-x   - root   supergroup          0 2016-06-09 09:47 s2rdf/VP

drwxr-xr-x   - hadoop supergroup          0 2016-06-09 09:47 s2rdf/VP/bb.parquet

-rw-r--r--   3 hadoop supergroup          0 2016-06-09 09:47 s2rdf/VP/bb.parquet/_SUCCESS

-rw-r--r--   3 hadoop supergroup        282 2016-06-09 09:47 s2rdf/VP/bb.parquet/_common_metadata

-rw-r--r--   3 hadoop supergroup        419 2016-06-09 09:47 s2rdf/VP/bb.parquet/_metadata

-rw-r--r--   3 hadoop supergroup        499 2016-06-09 09:47 s2rdf/VP/bb.parquet/part-r-00001.parquet

-rw-r--r--   3 hadoop supergroup        282 2016-06-09 09:47 s2rdf/VP/bb.parquet/part-r-00002.parquet

-rw-r--r--   3 hadoop supergroup        282 2016-06-09 09:47 s2rdf/VP/bb.parquet/part-r-00003.parquet

drwxr-xr-x   - hadoop supergroup          0 2016-06-09 09:47 s2rdf/base.parquet

-rw-r--r--   3 hadoop supergroup          0 2016-06-09 09:47 s2rdf/base.parquet/_SUCCESS

-rw-r--r--   3 hadoop supergroup        357 2016-06-09 09:47 s2rdf/base.parquet/_common_metadata

-rw-r--r--   3 hadoop supergroup        559 2016-06-09 09:47 s2rdf/base.parquet/_metadata

-rw-r--r--   3 hadoop supergroup        676 2016-06-09 09:47 s2rdf/base.parquet/part-r-00001.parquet

-rw-r--r--   3 hadoop supergroup        357 2016-06-09 09:47 s2rdf/base.parquet/part-r-00002.parquet

-rw-r--r--   3 hadoop supergroup        357 2016-06-09 09:47 s2rdf/base.parquet/part-r-00003.parquet

-rw-r--r--   3 hadoop supergroup        150 2016-06-02 15:04 s2rdf/test1.nq

-rw-r--r--   3 hadoop supergroup        398 2016-06-02 15:41 s2rdf/test1.sql

-rw-r--r--   3 hadoop supergroup        138 2016-06-08 18:28 s2rdf/test2.nq

-rw-r--r--   3 hadoop supergroup         11 2016-06-09 09:46 s2rdf/test3.nq


번호 제목 날짜 조회 수
78 5건의 triple data를 이용하여 특정 작업 폴더에서 작업하는 방법/절차 2016.06.16 123
» S2RDF 테스트(벤치마크 테스트를 기준으로 python, scala소스가 만들어져서 기능은 파악되지 못함) [2] file 2016.05.27 135
76 DataSetCreator.py 실행시 파일을 찾을 수 없는 오류 2016.05.27 141
75 9대가 hbase cluster로 구성된 서버에서 테스트 data를 halyard에 적재하고 테스트 하는 방법및 절차 2017.07.21 142
74 실시간 쿼리 변환 모니터링(팩트내 필드값의 변경사항을 실시간으로 추적함)하는 테스트 java 프로그램 file 2016.07.21 148
73 ServerInfo객체파일 2016.07.21 150
72 전체 컨택스트 내용 file 2017.12.19 158
71 시맨틱 관련 논문 모음 사이트 2017.06.13 161
70 jena의 data폴더를 hadoop nfs를 이용하여 HDFS상의 폴더에 마운트 시키고 fuseki를 통하여 inert를 시도했을때 transaction 오류 발생 2016.12.02 174
69 halyard 1.3의 rdf4j-server.war와 rdf4j-workbench.war를 tomcat deploy후 조회시 java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/Cell발생시 조치사항 2017.07.05 176
68 https://github.com/Merck/Halyard프로젝트 컴파일및 배포/테스트 2017.01.24 185
67 슬라이딩 윈도우 예제 2016.07.28 188
66 TopBraid Composer에서 SPIN 사용법 file 2016.02.25 191
65 [Elephas] Jena Elephas를 이용하여 Spark에서 rdfTriples의 RDD를 만들고 RDD관련 작업하는 샘플소스 2016.08.10 202
64 oneM2M Specification(Draft Release 3, 2, 1), Draft Technical Reports 2017.10.25 202
63 fuseki의 endpoint를 이용한 insert, delete하는 sparql예시 2018.02.14 207
62 select와 group by결과 값이 없는경우의 리턴 값이 다름 file 2016.02.05 209
61 S2RDF모듈의 실행부분만 추출하여 별도록 실행하는 방법(draft) 2016.06.14 211
60 LUBM 개수별 hadoop HDFS data사이즈 정리 2017.04.06 213
59 --master yarn 옵션으로 spark client프로그램 실행할때 메모리 부족 오류발생시 조치방법 2016.05.27 218
위로