메뉴 건너뛰기

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


번호 제목 날짜 조회 수
250 hadoop클러스터를 구성하던 서버중 HA를 담당하는 서버의 hostname등이 변경되어 문제가 발생했을때 조치사항 2016.07.29 1514
249 Journal Storage Directory /data/hadoop/journal/data/mycluster not formatted 오류시 조치사항 2016.07.29 2716
248 슬라이딩 윈도우 예제 2016.07.28 1207
247 거침없이 배우는 Drools 책의 샘플소스 file 2016.07.22 2421
246 drools를 이용한 로그,rule matching등의 테스트 java프로그램 file 2016.07.21 1186
245 ServerInfo객체파일 2016.07.21 2591
244 drools에서 drl관련 로그를 기록하기 위한 클래스 파일 2016.07.21 2674
243 워킹 메모리에 대한 정보를 처리하는 클래스 파일 2016.07.21 2227
242 커리 변경 이벤트를 처리하기 위한 구현클래스 2016.07.21 2848
241 룰에 매칭되면 발생되는 엑티베이션 객체에 대한 작업(이전값 혹은 현재값)을 처리하는 클래스 파일 2016.07.21 1276
240 실시간 쿼리 변환 모니터링(팩트내 필드값의 변경사항을 실시간으로 추적함)하는 테스트 java 프로그램 file 2016.07.21 1001
239 Drools 6.0 - 비즈니스 룰 기반으로 간단한 룰 애플리케이션 만들기 file 2016.07.18 2530
238 Apache Spark와 Drools를 이용한 CEP구현 테스트 2016.07.15 2785
237 org.apache.hadoop.hbase.ClockOutOfSyncException: org.apache.hadoop.hbase.ClockOutOfSyncException 오류시 조치사항 2016.07.14 1271
236 kafka로 부터 메세지를 stream으로 받아 처리하는 spark샘플소스(spark의 producer와 consumer를 sbt로 컴파일 하고 서버에서 spark-submit하는 방법) 2016.07.13 1929
235 [sbt] sbt-assembly를 이용하여 실행에 필요한 모든 j라이브러리를 포함한 fat jar파일 만들기 2016.07.11 3180
234 [sbt] sbt 0.13.11 를 windows에 설치하고 scala프로그램을 compile해서 jar파일 만들기 2016.07.11 2333
233 avro 사용하기(avsc 스키마 파일 컴파일 방법, consumer, producer샘플소스) 2016.07.08 2755
232 DataSetCreator실행시 "Illegal character in fragment at index"오류가 나는 경우 조치방안 2016.06.17 1366
231 5건의 triple data를 이용하여 특정 작업 폴더에서 작업하는 방법/절차 2016.06.16 964
위로