Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
* sprue는 Apache Spark와 Drools를 이용한 CEP구현한 예제 소스이다.
(참고 : https://github.com/mganta/sprue)
<<준비/설정>>
1. hbase에 테이블 생성
create 'patientData', {NAME => 'cf1', VERSIONS => 3, REPLICATION_SCOPE => 1, COMPRESSION => 'SNAPPY'}
==> hbase 버전에 따라서 아래의 오류가 발생할 수 있는데 그때는 COMPRESSION => 'SNAPPY'부분을 빼고 실행한다.
* 다음의 사이트에서 로직을 테스트 할 수 있다.
: http://www.mdcalc.com/sirs-sepsis-and-septic-shock-criteria/
2. drools가 사용하는 의사결정테이블 파일은 src/main/resources/sepsis.xls를 사용한다.
3. driver program은 3개의 인자를 받는다.
a. zookeeper info
b. rules xls file
c. open tsdb url
- opentsdb이 설치되지 않았으면 SepsisStream.scala파일의 94(97 ?)라인을 주석처리한다.
- HBase가 설정되지 않았다면 69 & 80(73 & 84 ?) 라인을 주석처리한다.
- local mode로 실행할 경우는 SepsisStream.scala파일의 40 & 41의 주석을 바꾼다.
4. 이 프로그램은 queueRDD를 이용하여 sample data를 생성한다.
<<컴파일/실행하기>>
1. mvn clean package
//2. Create the hbase table. Sample script in src/main/resource/create_hbase_table.rb
//3. Install opentsdb (http://opentsdb.net/docs/build/html/installation.html)
4. Start spark streaming using
spark-submit --driver-java-options
'-Dspark.executor.extraClassPath=/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar'
--master yarn-client
--files sepsis.xls
--class com.cloudera.sprue.SepsisStream
/path_to/sprue-0.0.1-SNAPSHOT-jar-with-dependencies.jar
sepsis.xls zookeeper.host.domain:2181
http://opentsdb.host.domain:4242/api/put
* spark.executor.extraClassPath옵션은 spark에서 실행되는 hbase의 설치위치의 lib에 있는 htrace-core-3.1.0-incubating.jar를 지정한다.
* files옵션은 spark executor들이 사용하는 xls파일을 업로드 한다.
-------------------오류내용------------------------
ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: Compression algorithm 'snappy' previously failed test. Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
at org.apache.hadoop.hbase.master.HMaster.warnOrThrowExceptionForFailure(HMaster.java:1603)
at org.apache.hadoop.hbase.master.HMaster.sanityCheckTableDescriptor(HMaster.java:1542)
at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1452)
at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:429)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:52195)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2117)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:104)
at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.hadoop.hbase.DoNotRetryIOException: Compression algorithm 'snappy' previously failed test.
at org.apache.hadoop.hbase.util.CompressionTest.testCompression(CompressionTest.java:91)
at org.apache.hadoop.hbase.master.HMaster.checkCompression(HMaster.java:1686)
at org.apache.hadoop.hbase.master.HMaster.checkCompression(HMaster.java:1679)
at org.apache.hadoop.hbase.master.HMaster.sanityCheckTableDescriptor(HMaster.java:1540)
... 8 more