IPython(노트북)과 R Studio의 큰 장점을 알기 때문에 Spark과 zeppelin을 연동했다
* Hive 연동 완료
http://knight76.tistory.com/entry/apache-zepplin-062-%EC%84%A4%EC%B9%98-hive-R-%EC%97%B0%EB%8F%99
Legacy Spark 연동할 수 있도록 수정한다. 제플린의 용도는 이문수님이 Spark 써밋에서 발표한 내용을 참고한다.
데몬을 실행하면, 2개의 데몬이 실행됨을 볼 수 있다. 하나는 zeppelin 이고, 하나는 spark 이다. 따라서 간단한 spark 코드를 실행할 수 있다. 기본 내장이다.
$ ./bin/zeppelin-daemon.sh start
/usr/java/default/bin/java..... org.apache.zeppelin.server.ZeppelinServer
/usr/java/default/bin/java -cp ... /usr/local/zeppelin/interpreter/spark/zeppelin-spark_2.11-0.6.2.jar
Legacy Hadoop과 연동할 수 있도록 Spark 를 구성한다.
현재 zepplelin은 cpu 코어를 min, max 이렇게 사용하는 구조가 아니기 때문에(dedicate), 따로 zeppelin용 spark을 구성했다. (1대의 Driver와 4대의 executor를 설치) spark에서 hadoop에 접근할 수 있도록 hadoop 설정 정보를 포함시킨다.
dirver의 8080 페이지로 접속해서 정상적으로 동작하는지 확인한다.
1.6.2 Spark Master at spark://master:7077
이제 zeppelin만 잘 설정하면 된다. 참고로 zeppelin의 conf/zeppelin-site.xml에 보면, spark 인터프리터가 존재한다.
<property>
<name>zeppelin.interpreters</name>
<value>org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.rinterpreter.RRepl,org.apache.zeppelin.rinterpreter.KnitR,org.apache.zeppelin.spark.SparkRInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.angular.AngularInterpreter,org.apache.zeppelin.shell.ShellInterpreter,org.apache.zeppelin.file.HDFSFileInterpreter,org.apache.zeppelin.flink.FlinkInterpreter,,org.apache.zeppelin.python.PythonInterpreter,org.apache.zeppelin.lens.LensInterpreter,org.apache.zeppelin.ignite.IgniteInterpreter,org.apache.zeppelin.ignite.IgniteSqlInterpreter,org.apache.zeppelin.cassandra.CassandraInterpreter,org.apache.zeppelin.geode.GeodeOqlInterpreter,org.apache.zeppelin.postgresql.PostgreSqlInterpreter,org.apache.zeppelin.jdbc.JDBCInterpreter,org.apache.zeppelin.kylin.KylinInterpreter,org.apache.zeppelin.elasticsearch.ElasticsearchInterpreter,org.apache.zeppelin.scalding.ScaldingInterpreter,org.apache.zeppelin.alluxio.AlluxioInterpreter,org.apache.zeppelin.hbase.HbaseInterpreter,org.apache.zeppelin.livy.LivySparkInterpreter,org.apache.zeppelin.livy.LivyPySparkInterpreter,org.apache.zeppelin.livy.LivySparkRInterpreter,org.apache.zeppelin.livy.LivySparkSQLInterpreter,org.apache.zeppelin.bigquery.BigQueryInterpreter</value>
<description>Comma separated interpreter configurations. First interpreter become a default</description>
</property>
..
conf/interpeter.json에서 spark.cores.max와 spark.executor.memory 잘 설정한다. 그냥 두면 기본 값을 사용하니. 병목이 발생할 수 있다. 관련 내용은 https://zeppelin.apache.org/docs/latest/interpreter/spark.html에 있으니 참조한다.
"id": "2C1FUYTWJ",
"name": "spark",
"group": "spark",
"properties": {
"spark.executor.memory": "",
"args": "",
"zeppelin.spark.printREPLOutput": "true",
"spark.cores.max": "32",
bin/common.sh에서 일부 수정해서 메모리 이슈가 없도록 수정한다.
if [[ -z "${ZEPPELIN_MEM}" ]]; then
export ZEPPELIN_MEM="-Xms3024m -Xmx5024m -XX:MaxPermSize=512m"
fi
if [[ -z "${ZEPPELIN_INTP_MEM}" ]]; then
export ZEPPELIN_INTP_MEM="-Xms3024m -Xmx5024m -XX:MaxPermSize=512m"
fi
배시 환경에 따라 .bashrc에 다음을 추가한다.
export http_proxy=
export SPARK_HOME=
마지막으로 재시작한다.
$ ./bin/zeppelin-daemon.sh restart
노트 하나를 만들어 spark 코드가 잘 동작되는지 확인한다.
노트북 관련 좋은 데모를 소개한다.
'scala' 카테고리의 다른 글
[scala] Array, WrappedArray (0) | 2016.10.29 |
---|---|
[scala] Vector (0) | 2016.10.28 |
[scala] Option 에러 처리 - 펌질.. (0) | 2016.10.26 |
List에 적용하는 for yield 예시 2 (0) | 2016.10.24 |
[scala] 정수의 산술 연산시 IllegalFormatConversionException 발생 (0) | 2016.10.19 |