AWSのEMRを利用して、Apach Spark環境を作成してみます。EMRのバージョンは、5.14.0です。
EC2キーペアの用意
EMRで作成されたEC2で利用する、EC2キーペアを用意しておきます。
EMRでクラスタ作成
advanced optionsを選択
AWSコンソールのEMRコンソールに移動して、 Create cluster をクリック。 クラスタ作成画面にて、 Go to advanced options をクリック。
EMRで作成するソフトウェア環境の定義
Software Configuration で、HadoopとSparkを選択。

今回はPython3系にてPySparkを起動させたいため、software settingsにて、以下のjsonを入力しています。
[
{
"Classification": "spark-env",
"Configurations": [
{
"Classification": "export",
"Configurations": [],
"Properties": {
"PYSPARK_PYTHON": "/usr/bin/python3"
}
}
],
"Properties": {}
}
]
初期構築時にSparkの設定を入れるには、このプロセス時に設定ファイルであるjsonを定義しておく必要があります。
jsonのテンプレートはこちらを参考。
PySparkの場合、与えられるパラメータは下記マニュアルに記載されています。これをjson定義ファイルの Configurations の Properties の中に記載してあげます。今回は、Pythonバイナリファイルのパス定義として、Python3系のパスに指定しています。
Configuration - Spark 2.3.1 Documentation
Add steps の項目では、クラスターが起動時に自動実行する(spark-submitで動かしたい)Sparkプログラムを定義できます。
EMRクラスターの設定
EMRクラスターを構成する、EC2のリソース設定をします。Spark環境の場合、Yarnクラスターマネージャとなるマスターノードと、Executor実行環境であるコアノードを作成します。作成方法は、以下2つの方法から選択できます。
以下の画面は、インスタンス・フリートにて作成している画面です。

クラスターの設定オプション
設定オプションを定義する部分です。
EMRFS consistent view とは、EMRFSを利用する場合にs3の結果整合性の問題を回避してくれるビューらしいです。Hadoop側の更新処理とs3側のファイル更新処理の整合性を担保してくれるとのこと。Spark環境では不要ですね。
Bootstrap Action では、クラスタ初期起動時に実行してくれるスクリプト定義できます。EC2のユーザーデータみたいなもの。

クラスターのセキュリティ設定
必要なセキュリティ設定を実施します。EMR用に作成されたEC2には、デフォルトでは以下定義のセキュリティグループが付与されます。
Amazon EMR マネージドセキュリティグループを使用する - Amazon EMR

で、処理を進めていけば、設定されたEMRクラスターであるEC2が起動してきます。
接続方法
クラスターのマスターノードに接続
実際にマスターノードに接続して、PySparkを起動してみます。マスターノードへSSH接続を行います。セキュリティグループにて、必要なポートが開放されていない場合、ちゃんと設定をしてあげます。
接続してみると、こんな感じ。ちゃんとPython3系でPySparkが起動しています。
Last login: Sat Jun 30 15:18:23 2018
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
9 package(s) needed for security, out of 14 available
Run "sudo yum update" to apply all updates.
EEEEEEEEEEEEEEEEEEEE MMMMMMMM MMMMMMMM RRRRRRRRRRRRRRR
E::::::::::::::::::E M:::::::M M:::::::M R::::::::::::::R
EE:::::EEEEEEEEE:::E M::::::::M M::::::::M R:::::RRRRRR:::::R
E::::E EEEEE M:::::::::M M:::::::::M RR::::R R::::R
E::::E M::::::M:::M M:::M::::::M R:::R R::::R
E:::::EEEEEEEEEE M:::::M M:::M M:::M M:::::M R:::RRRRRR:::::R
E::::::::::::::E M:::::M M:::M:::M M:::::M R:::::::::::RR
E:::::EEEEEEEEEE M:::::M M:::::M M:::::M R:::RRRRRR::::R
E::::E M:::::M M:::M M:::::M R:::R R::::R
E::::E EEEEE M:::::M MMM M:::::M R:::R R::::R
EE:::::EEEEEEEE::::E M:::::M M:::::M R:::R R::::R
E::::::::::::::::::E M:::::M M:::::M RR::::R R::::R
EEEEEEEEEEEEEEEEEEEE MMMMMMM MMMMMMM RRRRRRR RRRRRR
[hadoop@ip-172-31-53-151 ~]$ pyspark
Python 3.4.8 (default, Apr 25 2018, 23:50:36)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/06/30 15:19:50 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 2.3.0
/_/
Using Python version 3.4.8 (default, Apr 25 2018 23:50:36)
SparkSession available as 'spark'.
WEB管理コンソールへの接続
Hadoop側で提供している各種webコンソールも利用できます。アクセスする方法は、AWSコンソールのEMR画面より、作成したクラスター環境をたどると、リンクが表示されています。

Sparkのwebコンソールはこちら。マスターノードの18080ポートになります。必要である場合、セキュリティグループの設定変更を。

Yarnのwebコンソールはこちら。マスターノードの8088ポートになります。こちらも必要である場合、セキュリティグループの設定変更を。

各webコンソールで利用されるポート情報は下記です。
Amazon EMR クラスターでホストされているウェブサイトの表示 - Amazon EMR
お手軽ですね。