일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Python
- 인공지능
- Graph Ecosystem
- spark
- Cypher
- 분산 병렬 처리
- graph
- BigData
- 그래프 데이터베이스
- GDB
- graph database
- 빅데이터
- 그래프 에코시스템
- 그래프
- RDD
- 딥러닝
- Graph Tech
- Neo4j
- Federated Learning
- r
- SQL
- GraphX
- GSQL
- DeepLearning
- SparkML
- TensorFlow
- 연합학습
- RStudio
- TigerGraph
- 그래프 질의언어
- Today
- Total
Hee'World
Spark + H2O(Pysparkling) 본문
Spark에서 H2O를 사용하는 방법
Spark는 Regression, Clustering, Classification 등 ML관련 라이브러리를 제공하지만 Deeplearning 등의 라이브러리는 제공되고 있지 않아 TensorflowOnSpark, BigDL, H2O, SparkDL과 같은 타 패키지와 함께 사용하여야 합니다.
본 포스팅에서는 H2O를 사용하는 방법을 설명합니다.
H2O란?
오픈소스 머신러닝 플랫폼으로 다양한 머신러닝 모델과 딥러닝 등을 포함해 AutoML과 같은 최신 알고리즘도 제공하고 있다. 기존의 대형 분석 인프라와 Hadoop, Spark와 같은 분산 클러스터 환경과 S3, Azure 같은 클라우드 환경에서도 동작한다. 그리고 가장 대중적으로 사용되는 통계 프로그램인 R과 연결하여 사용 할 수도 있다.
최근 GPU 환경도 지원하여 딥러닝 모델 개발에 더욱 많은 지원을 하게 되었다.
Home - Open Source Leader in AI and ML
H2O.ai is the creator of H2O the leading open source machine learning and artificial intelligence platform trusted by data scientists across 14K enterprises globally. Our vision is to democratize intelligence for everyone with our award winning “AI to do
www.h2o.ai
Apache Spark를 지원하는 H2O 패키지는 Sparkling Water라는 이름으로 지원하고 있다.
https://www.h2o.ai/products/h2o-sparkling-water/
H2O Sparkling Water - Open Source Leader in AI and ML
Open Source Leader in AI and ML - H2O Sparkling Water - Sparkling Water allows users to combine the fast, scalable machine learning algorithms of H2O with the capabilities of Spark.
www.h2o.ai
Sparkling Water는 Spark 클러스터의 Worker Node executer상에 올라와 함께 동작하게 된다. Driver Node에서는 H2O Context를 제공하여 분산 환경에서 다양한 머신러닝 알고리즘과 딥러닝, AutoML을 사용 할 수 있게 된다.
Spakrling Water를 사용하기 위해서는 먼저 Spark가 설치되어 있어야 하며, 본 포스팅에서는 H2O 설치와 사용방법만 설명한다.
H2O 설치 및 실행
1. 기존 Spark가 설치되어 있으며, SPARK_HOME이 설정되어 있다는 전제하에 설치를 수행한다.
2. 아래의 Sparkling Water 다운로드 페이지에서 파일은 다운로드 하거나 wget으로 다운로드 합니다.
- [root@spark tmp]# wget www.s3.amazonaws.com/h2o-release/sparkling-water/spark-2.4/3.30.0.2-1-2.4/sparkling-water-3.30.0.2-1-2.4.zip
[root@spark ~]# cd /tmp
[root@spark tmp]# unzip sparkling-water-3.28.0.1-1-2.4.zip
[root@spark tmp]# mkdir -p /opt/sparkling/3.28
[root@spark tmp]# mv sparkling-water-3.28.0.1-1-2.4 /opt/sparkling/3.28
[root@spark tmp]# ln -s /opt/sparkling/3.28 /opt/sparkling/current
[root@spark tmp]# chown -R carbig:carbig /opt/sparkling/
[root@spark tmp]# su - carbig
(base) [carbig@spark ~]$ vim .bash_profile
# Jupyter Notebook에서 Pysparkling 실행
# export PYSPARK_DRIVER_PYTHON_OPTS="notebook --ip=192.168.56.101 --port=8888" pyspark
export PYSPARK_DRIVER_PYTHON_OPTS="notebook --ip=192.168.56.101 --port=8888" pysparkling
### H2O 3.28 #############################
export H2O_HOME=/opt/sparkling/current
export PATH=$PATH:$H2O_HOME/bin
#########################################
(base) [carbig@spark ~]$ source .bash_profile
(base) [carbig@spark ~]$ pip install tabulate
(base) [carbig@spark ~]$ pysparkling
PySparkling 사용
from pysparkling import *
import h2o
hc = H2OContext.getOrCreate(spark)
housingDF = spark.read.csv("data/housing.data", inferSchema=True, header=True)
housingDF.printSchema()
housingDF.show(5)
from pyspark.sql import Row
from pyspark.sql.types import StructField, StructType, DoubleType
housingSchema = StructType([
StructField("crim", DoubleType(), True),
StructField("zn", DoubleType(), True),
StructField("indus", DoubleType(), True),
StructField("chas", DoubleType(), True),
StructField("nox", DoubleType(), True),
StructField("rm", DoubleType(), True),
StructField("age", DoubleType(), True),
StructField("dis", DoubleType(), True),
StructField("rad", DoubleType(), True),
StructField("tax", DoubleType(), True),
StructField("ptratio", DoubleType(), True),
StructField("b", DoubleType(), True),
StructField("lstat", DoubleType(), True),
StructField("medv", DoubleType(), True),
])
housingDF = spark.read.csv("data/housing.data", inferSchema=True, schema=housingSchema)
housingDF.show(5)
housingDFh2o = hc.as_h2o_frame(housingDF, "housing")
splitDF = housingDFh2o.split_frame([0.75, 0.24])
train = splitDF[0]
train.frame_id = "housing_train"
test = splitDF[1]
test.frame_id = "housing_test"
from h2o.estimators.deeplearning import H2ODeepLearningEstimator
m = H2ODeepLearningEstimator(hidden=[500, 500, 500, 200, 500, 100], epochs=200, \
activation='rectifierwithdropout', \
hidden_dropout_ratios=[0.2, 0.2, 0.3, 0.3, 0.2, 0.1])
m.train(x=train.names[:-1], y=train.names[13], training_frame=train, \
validation_frame=test)
m.show()
'BigData > Spark' 카테고리의 다른 글
Spark + Deeplearning (SparkDL) (0) | 2020.05.23 |
---|---|
Spark ML 05(Pyspark) (0) | 2020.05.04 |
Spark ML 04(Pyspark) (0) | 2020.05.03 |
Spark ML 03 (Pyspark) (0) | 2020.05.01 |
Spark ML 02 (Pyspark) (0) | 2020.04.26 |