메뉴 건너뛰기

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


번호 제목 날짜 조회 수
741 [Ranger]RangerAdminRESTClient Error gertting pplicies; Received NULL response!!, secureMode=true, user=rangerkms/node01.gooper.com@ GOOPER.COM (auth:KERBEROS), serviceName=cm_kms 2023.06.27 73
740 [vue storefrontui]외부 API통합하기 참고 문서 2022.02.09 80
739 [Encryption Zone]Encryption Zone에 생성된 table을 select할때 HDFS /tmp/zone1에 대한 권한이 없는 경우 2023.06.29 83
738 ./gradlew :composeDown 및 ./gradlew :composeUp 를 성공했을때의 메세지 2023.02.20 84
737 [EncryptionZone]User:testuser not allowed to do "DECRYPT_EEK" on 'testkey' 2023.06.29 89
736 [vi] test.nq파일에서 특정문자열(예, <>)을 찾아서 포함되는 라인을 삭제한 동일한 이름의 파일을 만드는 방법 2017.01.25 98
735 [Impala] alter table구문수행시 "WARNINGS: Impala does not have READ_WRITE access to path 'hdfs://nameservice1/DATA/Temp/DB/source/table01_ccd'" 발생시 조치 2024.04.26 98
734 CM의 Impala->Query tab에서 FINISHED query가 보이지 않는 현상 2021.08.31 99
733 restaurant-controller,에서 등록 예시 2022.04.30 99
732 주문히스토리 조회 2022.04.30 99
731 [Hue metadata]Oracle에 있는 Hue 메타정보 테이블을 이용하여 coordinator와 workflow관계 목록을 추출하는 방법 2023.08.22 99
730 [Cloudera Agent] Metadata-Plugin throttling_logger INFO (713 skipped) Unable to send data to nav server. Will try again. 2022.05.16 103
729 oozie의 sqoop action수행시 ooize:launcher의 applicationId를 이용하여 oozie:action의 applicationId및 관련 로그를 찾는 방법 2023.07.26 104
728 [CDP7.1.6,HDFS]HDFS파일을 삭제하고 Trash비움이 완료된후에도 HDFS 공간을 차지하고 있는 경우 확인/조치 방법 2023.07.17 108
727 [CDP7.1.7, Replication]Encryption Zone내 HDFS파일을 비Encryption Zone으로 HDFS Replication시 User hdfs가 아닌 hadoop으로 수행하는 방법 2024.01.15 110
726 주문 생성 데이터 예시 2022.04.30 112
725 호출 url현황 2023.02.21 112
724 [CDP7.1.7, Hive Replication]Hive Replication진행중 "The following columns have types incompatible with the existing columns in their respective positions " 오류 2023.12.27 116
723 eclipse 3.1 단축키 정리파일 2017.01.02 118
722 [CDP7.1.7]Oozie job에서 ERROR: Kudu error(s) reported, first error: Timed out: Failed to write batch of 774 ops to tablet 8003f9a064bf4be5890a178439b2ba91가 발생하면서 쿼리가 실패하는 경우 2024.01.05 118
위로