SlideShare a Scribd company logo
1 of 20
Download to read offline
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
EC2へのSpark導入と
iPythonNotebookの連携
株式会社サイバード
府川 翔大
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
自己紹介
• 府川 翔大
• 2013年入社(3年目)
• データ分析エンジニア
• データ分析基盤の構築
• 機械学習を用いて予測モデルの構築
• HiveのバッチをSparkに一部移行中
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
概要
EMRでSparkを動かす場合、Terminateをするとデータが削除されるため、
環境を維持するにはサーバを起動したままにする必要があり、コストがかか
る。
そこでEC2上でSparkを動かすようにすると、サーバを停止しても環境は保
持されるので、必要なときに起動し使わない時は停止することで低コストで
Sparkの検証・運用を行なうことが出来る。
更にiPythonNotebookを使うことで、Web上からPySparkを使えるため、
データ量の多い分析も手軽に行なうことが出来る。
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
アジェンダ
• Spark編
• Sparkのダウンロード
• AWSの設定
• Sparkの環境構築
• 起動、ログイン、停止について
• セキュリティグループの設定
• サーバ監視について
• iPythonNotebook編
• プロファイルの作成と設定ファイルの編集
• 起動とアクセス
• ファイル読み込み(S3、HDFS、ローカル)
• まとめ
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
Spark編
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
Sparkのダウンロード
GitHubのファイルを使用するため必要に応じてgitコマンドのインストールをす
る。
sudo yum install -y git
リポジトリをcloneする。今回はSpark1.2系を使用。
git clone git://github.com/apache/spark.git -b branch-1.2
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
AWSの設定
アクセスキーとシークレットキーの設定をする。
【botoを使用する場合】
vi ~/.boto
[Credentials]
aws_access_key_id=<AWS_ACCESS_KEY_ID>
aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
【環境変数を使う場合】
export AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID>
export
AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
Sparkの環境構築
以下のコマンドを打つと、Sparkの環境が構築される。
~/spark/ec2/spark-ec2 -k <KEYPAIR> -i <KEY_FILE> --region=ap-
northeast-1 --copy-aws-credentials launch <CLUSTER_NAME>
デフォルトではmaster(m1.large)1台、slave(m1.large)1台の計2台で構成さ
れる。また「--copy-aws-credentials」をつけることで、先ほど設定したアクセ
スキーやシークレットキーの情報が引き継がれる。
その他オプションに関しては以下を参考。
http://spark.apache.org/docs/1.3.0/ec2-scripts.html
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
起動、ログイン、停止コマンド
【起動】
~/spark/ec2/spark-ec2 -k <KEYPAIR> -i <KEY_FILE> --region=ap-
northeast-1 start <CLUSTER_NAME>
【ログイン】
~/spark/ec2/spark-ec2 -k <KEYPAIR> -i <KEY_FILE> --region=ap-
northeast-1 login <CLUSTER_NAME>
【停止】
~/spark/ec2/spark-ec2 --region=ap-northeast-1 stop
<CLUSTER_NAME>
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
サーバ監視について
Web UIとGangliaはデフォルトでインストールされているため、以下へアクセ
スすることで見ることが出来る。
Web UI
http://<MASTER_PUBLIC_DNS>:8080
Ganglia
http://<MASTER_PUBLIC_DNS>:5080/ganglia
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
セキュリティグループの設定
デフォルトのセキュリティグループのままでは、iPythonNotebookへのアクセ
スとローカルファイルの参照が行えないので
8888(iPythonNotebookへのアクセス用)と
9000(ローカルファイルの読み込み用)
の2つのポートを開けておく。
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
iPythonNotebook編
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
設定ファイルの編集(1)
プロファイルの作成
ipython notebook --pylab inline --profile=myserver
iPythonNotebookの設定ファイルを編集
vi ~/.ipython/profile_myserver/ipython_notebook_config.py
c = get_config()
c.NotebookApp.ip = '*' # もしくはマスターのローカルIP
c.NotebooksApp.open_browser = False
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
設定ファイルの編集(2)
vi ~/.ipython/profile_myserver/startup/00-myserver-setup.py
import os
import sys
os.environ['SPARK_HOME'] = '/root/spark/'
CLUSTER_URL = open('/root/spark-ec2/cluster-url').read().strip()
spark_home = os.environ.get('SPARK_HOME', None)
if not spark_home:
raise ValueError('SPARK_HOME environment variable is not set')
sys.path.insert(0, os.path.join(spark_home, 'python'))
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-
src.zip'))
execfile(os.path.join(spark_home, 'python/pyspark/shell.py'))
execfile(os.path.join(spark_home, 'conf/spark-env.sh'))
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
起動とアクセス
起動
ipython notebook --pylab inline --profile=myserver
iPythonNotebookへのアクセス
http://<MASTER_PUBLIC_DNS>:8888
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
ファイル読み込みについて(S3)
ファイル単体はもちろんのこと、フォルダを丸ごと読み込むことも出来る。
s3_file = sc.textFile("s3n://<BUCKET>/<DIR>”)
s3_file = sc.textFile("s3n://<BUCKET>/<DIR>/<FILE>")
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
ファイル読み込みについて(HDFS)
ファイルパスだけを書いた場合はHDFSからの読み込みになる。
hdfs_file = sc.textFile("<FILE>")
複数のファイルシステムからファイルを読み込む場合は、明記しておいたほう
がわかりやすい。
hdfs_file = sc.textFile("hdfs://<FILE>")
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
ファイル読み込みについて(ローカル)
ローカルのファイルを読み込むときは「file://」をつける。
local_file = sc.textFile(“file://<FILE>")
また9000番ポートを使用するため、ポートが開いていないとエラーになる。
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
まとめ
EC2上にSpark環境を構築することで、サーバを停止しても環境が保持され
るので、必要なときに起動し使わない時に停止をすれば低コストでSparkを
検証・運用を行なうことが出来る。
更にiPythonNotebookを使うことで、Web上からPySparkを使えるため、大
量のデータでもSparkを利用し手軽に分析をすることが出来る。
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
http://www.cybird.co.jp/recruit/
エントリーしてね!
エンジニア募集中!

More Related Content

What's hot

20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編Kotaro Tsukui
 
Aws st 20130617-auto_scaling
Aws st 20130617-auto_scalingAws st 20130617-auto_scaling
Aws st 20130617-auto_scalingMakoto Uehara
 
JAWS-UG さいたま #11 参加報告
JAWS-UG さいたま #11 参加報告JAWS-UG さいたま #11 参加報告
JAWS-UG さいたま #11 参加報告Hiroyuki Numao
 
20160404 jaws ugアーキテクチャ専門支部ハイブリッドクラウド分科会#4
20160404 jaws ugアーキテクチャ専門支部ハイブリッドクラウド分科会#420160404 jaws ugアーキテクチャ専門支部ハイブリッドクラウド分科会#4
20160404 jaws ugアーキテクチャ専門支部ハイブリッドクラウド分科会#4Naomi Yamasaki
 
AWSエンジニアが、 経理部門と仲良くなれるTips
AWSエンジニアが、 経理部門と仲良くなれるTipsAWSエンジニアが、 経理部門と仲良くなれるTips
AWSエンジニアが、 経理部門と仲良くなれるTipsTetsuya Ishibashi
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかShun Fukazawa
 
CloudWatch Eventを使ったamiの削除
CloudWatch Eventを使ったamiの削除CloudWatch Eventを使ったamiの削除
CloudWatch Eventを使ったamiの削除淳 千葉
 
cloudpack(AWS運用事業)一周年でわかってきたこと
cloudpack(AWS運用事業)一周年でわかってきたことcloudpack(AWS運用事業)一周年でわかってきたこと
cloudpack(AWS運用事業)一周年でわかってきたことHiroyasu Suzuki
 
MySQL→Aurora移行セミナー
MySQL→Aurora移行セミナーMySQL→Aurora移行セミナー
MySQL→Aurora移行セミナー真吾 吉田
 
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsAmazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsyuichi_komatsu
 
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~Serverworks Co.,Ltd.
 
S3 整合性モデルと Hadoop/Spark の話
S3 整合性モデルと Hadoop/Spark の話S3 整合性モデルと Hadoop/Spark の話
S3 整合性モデルと Hadoop/Spark の話Noritaka Sekiyama
 
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDS
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDSIbis: すごい pandas ⼤規模データ分析もらっくらく #summerDS
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDSCloudera Japan
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏鉄平 土佐
 
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakaltクラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakaltCloudera Japan
 
re:Growth athena
re:Growth athenare:Growth athena
re:Growth athena淳 千葉
 
[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008Toru Kimura
 

What's hot (20)

20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
20120303 _JAWS-UG_SUMMIT2012_エキスパートセッションEMR編
 
Aws st 20130617-auto_scaling
Aws st 20130617-auto_scalingAws st 20130617-auto_scaling
Aws st 20130617-auto_scaling
 
JAWS-UG さいたま #11 参加報告
JAWS-UG さいたま #11 参加報告JAWS-UG さいたま #11 参加報告
JAWS-UG さいたま #11 参加報告
 
20160404 jaws ugアーキテクチャ専門支部ハイブリッドクラウド分科会#4
20160404 jaws ugアーキテクチャ専門支部ハイブリッドクラウド分科会#420160404 jaws ugアーキテクチャ専門支部ハイブリッドクラウド分科会#4
20160404 jaws ugアーキテクチャ専門支部ハイブリッドクラウド分科会#4
 
20141126 jaws-antipattern
20141126 jaws-antipattern20141126 jaws-antipattern
20141126 jaws-antipattern
 
AWSエンジニアが、 経理部門と仲良くなれるTips
AWSエンジニアが、 経理部門と仲良くなれるTipsAWSエンジニアが、 経理部門と仲良くなれるTips
AWSエンジニアが、 経理部門と仲良くなれるTips
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
 
CloudWatch Eventを使ったamiの削除
CloudWatch Eventを使ったamiの削除CloudWatch Eventを使ったamiの削除
CloudWatch Eventを使ったamiの削除
 
cloudpack(AWS運用事業)一周年でわかってきたこと
cloudpack(AWS運用事業)一周年でわかってきたことcloudpack(AWS運用事業)一周年でわかってきたこと
cloudpack(AWS運用事業)一周年でわかってきたこと
 
MySQL→Aurora移行セミナー
MySQL→Aurora移行セミナーMySQL→Aurora移行セミナー
MySQL→Aurora移行セミナー
 
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsAmazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
 
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
 
S3 整合性モデルと Hadoop/Spark の話
S3 整合性モデルと Hadoop/Spark の話S3 整合性モデルと Hadoop/Spark の話
S3 整合性モデルと Hadoop/Spark の話
 
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDS
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDSIbis: すごい pandas ⼤規模データ分析もらっくらく #summerDS
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDS
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakaltクラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
 
re:Growth athena
re:Growth athenare:Growth athena
re:Growth athena
 
[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008
 
Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)
 

Similar to Ec2へのspark導入とi pythonnotebookの連携

Aws auto scalingによるwebapサーバbatchサーバの構成例
Aws auto scalingによるwebapサーバbatchサーバの構成例Aws auto scalingによるwebapサーバbatchサーバの構成例
Aws auto scalingによるwebapサーバbatchサーバの構成例Takeshi Mikami
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingchibochibo
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのsparkRyuji Tamagawa
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築Tomo-o Kubo
 
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターンKuniteru Asami
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQLRyusuke Kajiyama
 
AWS Startup Use Cases 2015
AWS Startup Use Cases 2015AWS Startup Use Cases 2015
AWS Startup Use Cases 2015Eiji Shinohara
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-LINE Corp.
 
Splunkと各種ツールによるAWSの管理
Splunkと各種ツールによるAWSの管理Splunkと各種ツールによるAWSの管理
Splunkと各種ツールによるAWSの管理kinunori
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006Cloudera Japan
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysKenta Suzuki
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysVOYAGE GROUP
 
CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?Kumano Ryo
 
20190620 multicloud share
20190620 multicloud share20190620 multicloud share
20190620 multicloud shareMai Nagahisa
 
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueModernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueNoritaka Sekiyama
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...NTT DATA Technology & Innovation
 

Similar to Ec2へのspark導入とi pythonnotebookの連携 (20)

Aws auto scalingによるwebapサーバbatchサーバの構成例
Aws auto scalingによるwebapサーバbatchサーバの構成例Aws auto scalingによるwebapサーバbatchサーバの構成例
Aws auto scalingによるwebapサーバbatchサーバの構成例
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
 
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL
 
AWS Startup Use Cases 2015
AWS Startup Use Cases 2015AWS Startup Use Cases 2015
AWS Startup Use Cases 2015
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
 
cross2012a fujya
cross2012a fujyacross2012a fujya
cross2012a fujya
 
Splunkと各種ツールによるAWSの管理
Splunkと各種ツールによるAWSの管理Splunkと各種ツールによるAWSの管理
Splunkと各種ツールによるAWSの管理
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
 
CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?
 
20190620 multicloud share
20190620 multicloud share20190620 multicloud share
20190620 multicloud share
 
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueModernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
 

Ec2へのspark導入とi pythonnotebookの連携

  • 1. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. EC2へのSpark導入と iPythonNotebookの連携 株式会社サイバード 府川 翔大
  • 2. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 自己紹介 • 府川 翔大 • 2013年入社(3年目) • データ分析エンジニア • データ分析基盤の構築 • 機械学習を用いて予測モデルの構築 • HiveのバッチをSparkに一部移行中
  • 3. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 概要 EMRでSparkを動かす場合、Terminateをするとデータが削除されるため、 環境を維持するにはサーバを起動したままにする必要があり、コストがかか る。 そこでEC2上でSparkを動かすようにすると、サーバを停止しても環境は保 持されるので、必要なときに起動し使わない時は停止することで低コストで Sparkの検証・運用を行なうことが出来る。 更にiPythonNotebookを使うことで、Web上からPySparkを使えるため、 データ量の多い分析も手軽に行なうことが出来る。
  • 4. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. アジェンダ • Spark編 • Sparkのダウンロード • AWSの設定 • Sparkの環境構築 • 起動、ログイン、停止について • セキュリティグループの設定 • サーバ監視について • iPythonNotebook編 • プロファイルの作成と設定ファイルの編集 • 起動とアクセス • ファイル読み込み(S3、HDFS、ローカル) • まとめ
  • 5. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. Spark編
  • 6. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. Sparkのダウンロード GitHubのファイルを使用するため必要に応じてgitコマンドのインストールをす る。 sudo yum install -y git リポジトリをcloneする。今回はSpark1.2系を使用。 git clone git://github.com/apache/spark.git -b branch-1.2
  • 7. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. AWSの設定 アクセスキーとシークレットキーの設定をする。 【botoを使用する場合】 vi ~/.boto [Credentials] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> 【環境変数を使う場合】 export AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID> export AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
  • 8. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. Sparkの環境構築 以下のコマンドを打つと、Sparkの環境が構築される。 ~/spark/ec2/spark-ec2 -k <KEYPAIR> -i <KEY_FILE> --region=ap- northeast-1 --copy-aws-credentials launch <CLUSTER_NAME> デフォルトではmaster(m1.large)1台、slave(m1.large)1台の計2台で構成さ れる。また「--copy-aws-credentials」をつけることで、先ほど設定したアクセ スキーやシークレットキーの情報が引き継がれる。 その他オプションに関しては以下を参考。 http://spark.apache.org/docs/1.3.0/ec2-scripts.html
  • 9. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 起動、ログイン、停止コマンド 【起動】 ~/spark/ec2/spark-ec2 -k <KEYPAIR> -i <KEY_FILE> --region=ap- northeast-1 start <CLUSTER_NAME> 【ログイン】 ~/spark/ec2/spark-ec2 -k <KEYPAIR> -i <KEY_FILE> --region=ap- northeast-1 login <CLUSTER_NAME> 【停止】 ~/spark/ec2/spark-ec2 --region=ap-northeast-1 stop <CLUSTER_NAME>
  • 10. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. サーバ監視について Web UIとGangliaはデフォルトでインストールされているため、以下へアクセ スすることで見ることが出来る。 Web UI http://<MASTER_PUBLIC_DNS>:8080 Ganglia http://<MASTER_PUBLIC_DNS>:5080/ganglia
  • 11. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. セキュリティグループの設定 デフォルトのセキュリティグループのままでは、iPythonNotebookへのアクセ スとローカルファイルの参照が行えないので 8888(iPythonNotebookへのアクセス用)と 9000(ローカルファイルの読み込み用) の2つのポートを開けておく。
  • 12. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. iPythonNotebook編
  • 13. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 設定ファイルの編集(1) プロファイルの作成 ipython notebook --pylab inline --profile=myserver iPythonNotebookの設定ファイルを編集 vi ~/.ipython/profile_myserver/ipython_notebook_config.py c = get_config() c.NotebookApp.ip = '*' # もしくはマスターのローカルIP c.NotebooksApp.open_browser = False
  • 14. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 設定ファイルの編集(2) vi ~/.ipython/profile_myserver/startup/00-myserver-setup.py import os import sys os.environ['SPARK_HOME'] = '/root/spark/' CLUSTER_URL = open('/root/spark-ec2/cluster-url').read().strip() spark_home = os.environ.get('SPARK_HOME', None) if not spark_home: raise ValueError('SPARK_HOME environment variable is not set') sys.path.insert(0, os.path.join(spark_home, 'python')) sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1- src.zip')) execfile(os.path.join(spark_home, 'python/pyspark/shell.py')) execfile(os.path.join(spark_home, 'conf/spark-env.sh'))
  • 15. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 起動とアクセス 起動 ipython notebook --pylab inline --profile=myserver iPythonNotebookへのアクセス http://<MASTER_PUBLIC_DNS>:8888
  • 16. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. ファイル読み込みについて(S3) ファイル単体はもちろんのこと、フォルダを丸ごと読み込むことも出来る。 s3_file = sc.textFile("s3n://<BUCKET>/<DIR>”) s3_file = sc.textFile("s3n://<BUCKET>/<DIR>/<FILE>")
  • 17. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. ファイル読み込みについて(HDFS) ファイルパスだけを書いた場合はHDFSからの読み込みになる。 hdfs_file = sc.textFile("<FILE>") 複数のファイルシステムからファイルを読み込む場合は、明記しておいたほう がわかりやすい。 hdfs_file = sc.textFile("hdfs://<FILE>")
  • 18. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. ファイル読み込みについて(ローカル) ローカルのファイルを読み込むときは「file://」をつける。 local_file = sc.textFile(“file://<FILE>") また9000番ポートを使用するため、ポートが開いていないとエラーになる。
  • 19. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. まとめ EC2上にSpark環境を構築することで、サーバを停止しても環境が保持され るので、必要なときに起動し使わない時に停止をすれば低コストでSparkを 検証・運用を行なうことが出来る。 更にiPythonNotebookを使うことで、Web上からPySparkを使えるため、大 量のデータでもSparkを利用し手軽に分析をすることが出来る。
  • 20. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. http://www.cybird.co.jp/recruit/ エントリーしてね! エンジニア募集中!