AWS Glue環境をDockerで構築

スポンサーリンク
AWS Glue環境をDockerで構築 AWS
スポンサーリンク

https://aws.amazon.com/jp/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/で AWS Glue環境をDockerで構築する方法が掲載していたのでやってみました。AWS Glueの開発は画面からだとデバックが遅すぎるので、ローカルにAWS Glue環境を立てると、ローカルで開発することができます。

スポンサーリンク

Docker imageをpull

Dockerに公式のimageが上がっているのでpullします。

docker pull amazon/aws-glue-libs:glue_libs_1.0.0_image_01

コンテナの起動

imageからコンテナを起動させます。オプションの意味をすぐ忘れてしまうので、記載しておきます。

docker run -itd -p 8888:8888 -p 4040:4040 -v C:\Users\hatosuke\.aws:/root/.aws:rw --name glue_jupyter amazon/aws-glue-libs:glue_libs_1.0.0_image_01 /home/jupyter/jupyter_start.sh
  • -itd : i(interactive)は標準入力、t(tty)は擬似ターミナル、d(detach)はバックグラウンドで実行
  • -p 8888:8888 : 8888はJupyterのデフォルトポート、左の外部のポート8080と、右のコンテナ内部のポート8080を接続
  • -p 4040:4040 : 4040はSparkUIのデフォルトポート、左の外部のポート4040と、右のコンテナ内部のポート4040を接続
  • -v C:\Users\hatosuke\.aws:/root/.aws:rw : ホストのフォルダC:\Users\hatosuke\.awsを、コンテナの/root/.awsにマウント、rwなのでDocker側から読み書きができる
  • –name glue_jupyter : glue_jupyterというコンテナ名を付与
  • amazon/aws-glue-libs:glue_libs_1.0.0_image_01 : docker image
  • /home/jupyter/jupyter_start.sh : コンテナで Jupyter notebookを起動する

コンテナ内への入り方

コンテナへの入り方です。

docker exec -it glue_jupyter bash
root@20bd9d08e432:/#
  • exec : 実行中のコンテナ内で、新しいコマンドを実行
  • -it : i(interactive)は標準入力、t(tty)は擬似ターミナル
  • glue_jupyter : バックグラウンドで起動しているglue_jupyter
  • bash : bashセッションの開始

プロキシの設定

会社ではプロキシが通っているので、コンテナ内でプロキシ設定して、通信できるようにします。

root@20bd9d08e432:/# export HTTP_PROXY=http://hatosuke:passwd@jp.hato:1234
root@20bd9d08e432:/# export HTTPS_PROXY=http://hatosuke:passwd@jp.hato:1234

s3へのアクセス

プロキシ経由でネットに接続できるようにしたので、s3にアクセスが可能になります。

root@20bd9d08e432:/# aws s3 ls
2020-04-03 05:10:43 test

Jupyter、PySparkが実行できる

http://localhost:8888でJupyterを開けるようになり、また下記のようにPySparkをCLIで操作できるようになります。

root@20bd9d08e432:/# /home/spark-2.4.3-bin-spark-2.4.3-bin-hadoop2.8/bin/pyspark
Python 3.6.10 (default, Jun  9 2020, 18:36:16)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
21/02/22 11:33:30 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.3
      /_/

Using Python version 3.6.10 (default, Jun  9 2020 18:36:16)
SparkSession available as 'spark'.
>>>

一番ハマったのはプロキシ設定の部分です。プロキシ設定を見つける前は、なぜかs3がアクセスできない状態が続いていて、ふと気づいて解決できました。

コメント

タイトルとURLをコピーしました