江苏建筑网站建设,筑成建设集团网站,wordpress产品幻灯片,惠州seo关键词排名为初学者提供清晰易懂的教程 为初学者提供清晰易懂的教程 Apache Spark 和 AWS EMR 上的 Spark 集群 添加图片注释#xff0c;不超过 140 字#xff08;可选#xff09;
欢迎来到雲闪世界。Spark 被认为是“大数据丛林之王”#xff0c;在数据分析、机器学习、流媒体和图形…为初学者提供清晰易懂的教程 为初学者提供清晰易懂的教程 Apache Spark 和 AWS EMR 上的 Spark 集群 添加图片注释不超过 140 字可选
欢迎来到雲闪世界。Spark 被认为是“大数据丛林之王”在数据分析、机器学习、流媒体和图形分析等领域有着广泛的应用。 Spark 有 4 种不同的模式1本地模式Spark 在单台机器例如笔记本电脑上用于学习语法和设计项目原型 其他 3 种模式是集群管理器模式2独立模式用于在私有集群上工作3YARN和4Mesos 模式用于与团队共享集群。 在独立模式下Spark 部署在私有集群上例如 Amazon Web Service AWS 上的 EC2。 Spark 集群包含多台机器。 要在每台机器上使用 Spark 代码需要手动下载并安装 Spark 及其依赖项。 借助AWS 的Elastic Map Reduce 服务 EMR一切都准备就绪无需任何手动安装。 因此我们使用 EMR 服务来设置 Spark 集群而不是使用 EC2。 本教程的动机
我确实花了很多时间努力使用AWS 命令行界面 (AWS CLI)在 EMR 上创建、设置和运行 Spark 集群。虽然我找到了一些关于此任务的教程或通过课程提供的教程但大多数教程都很难理解。有些教程不够清晰有些教程错过了一些关键步骤或者假设学习者已经了解一些关于 AWS、CLI 配置等的先验知识。在成功设置并运行集群后我意识到这个任务 实际上并不复杂我们应该轻松完成它。我不想再看到人们为此苦苦挣扎。因此我决定制作本教程。
本文假设您 已经具备一些 Spark、PySpark、命令行环境和 AWS 的工作知识。具体来说本文适合那些知道为什么需要创建 Spark 集群的读者 :)。有关 Spark 的更多信息请阅读此处的参考资料。
这是一个很长很详细的教程。简而言之所有步骤包括 创建 AWS 账户 创建 IAM 用户 在 EC2 中设置凭证 创建 S3 存储桶来存储集群生成的日志文件 安装 AWS CLI 包awscli 设置 AWS CLI 环境创建凭证和配置文件 创建 EMR 集群 允许 SSH 访问 与集群主节点建立 SSH 连接 开始使用 EMR 集群
请随意跳过您已经知道的任何步骤。
我很高兴你们中的许多人都觉得本教程很有用。我很荣幸与大家讨论您在 EMR 创建过程中遇到的任何问题。根据我们的一些讨论以下是本教程的一些更新。 一些注意事项 1. 对于本教程应使用AWS 常规账户而不是 AWS Educate 账户。AWS 常规账户为用户提供对 AWS 资源和 IAM 角色的完全访问权限而教育账户则具有一些有限的访问权限。 2. 您有责任监控您使用的 AWS 账户的使用费用。每次完成工作后请记住终止集群和其他相关资源。我已经多次实施了 EMR 集群本教程在 AWS 上应该不会产生任何费用或费用低于 0.5 美元。 3. AWS 控制台和 Udacity 内容会随时间而变化/升级因此我建议您搜索 AWS 网站和 Udacity 课程以获取任何更新的教程/指南。 4.本教程使用Chrome和Mac OS X制作在Windows平台上应该不会有太大差别。 在 AWS CLI 上创建、设置和运行 EMR 集群的具体步骤 步骤 1创建 AWS 账户 如果您还没有常规 AWS 账户请创建一个。AWS网站上的说明非常容易理解。 登录您的 AWS 账户。 可选为了提高您的 AWS 资源的安全性您可以按照此处的简单 AWS 指南配置并启用虚拟多重身份验证 (MFA)设备。 步骤 2创建 IAM 用户
在 AWS 控制台中单击Service输入“IAM”转到 IAM 控制台 添加图片注释不超过 140 字可选 选择User Add user 输入用户名例如“emr_user”选择Access type为程序访问然后Next: Permissions。 添加图片注释不超过 140 字可选
单击Attach existence policies directly页面输入并设置权限为Administrator Access然后选择Next: Tags。 添加图片注释不超过 140 字可选
跳过此标签页并选择Next: Review 选择Create user 保存用户名、访问密钥和秘密访问密钥。 添加图片注释不超过 140 字可选
我们将使用此 IAM 用户以及访问和密钥通过 AWS CLI 设置和访问 AWS。 步骤 3在 EC2 中设置凭证
在 AWS 控制台中单击“服务”输入“EC2”以转到 EC2 控制台 在左侧面板中Key Pairs选择“网络和安全” 选择Create key pair 添加图片注释不超过 140 字可选
输入密钥对的名称例如“emr-cluster”文件格式pem 选择Create key pair。完成此步骤后将自动下载一个 .pem 文件本例中文件名为emr_cluster.pem。我们将在步骤 6 中使用此文件。 添加图片注释不超过 140 字可选 步骤 4可选创建 S3 存储桶来存储集群生成的日志文件 这将是用于存储我们将要创建和设置的集群所生成的日志文件的 AWS 存储桶。如果我们不指定 S3 存储桶则在创建和运行 EMR 集群时将自动为我们创建一个 S3 存储桶。 在 AWS 控制台中单击Service键入“S3”并转到 S3 控制台 选择Create bucket 输入存储桶的名称例如“s3-for-emr-cluster”选择您喜欢的区域例如“美国西部俄勒冈州”。保留其他选项的默认设置以创建存储桶。 添加图片注释不超过 140 字可选 请注意为了获得最佳性能并避免任何错误请记住对所有工作使用相同的 AWS 区域/子区域在 S3、EC2、EMR 等上 步骤 5安装 awscli 包 在终端上awscli使用命令安装pip install awscli 输入以下命令aws help检查安装是否正确如果输出如下则表示安装成功 添加图片注释不超过 140 字可选 步骤 6设置 AWS CLI 环境创建凭证和配置文件
此步骤将帮助我们使用上面第 2 步中获得的用户凭证自动访问 awscli 环境上的 AWS。
此设置有两种方法手动创建凭据和配置文件方法 1或使用命令创建这些文件aws方法 2。您可以使用其中任何一种。
方法 1
credentials按照如下方式在终端上创建文件您可以使用nano或您选择的任何其他文本编辑器 在终端上导航到所需文件夹通常是根目录并创建一个隐藏目录例如aws
$mkdir .aws句点表示隐藏目录 更改至该目录$cd .aws credentials使用 nano创建文件$nano credentials输入文件内容credentials如下将密钥“EXAMPLE_ID”和密钥“EXAMPle_Key”替换为步骤 2 中为用户“emr-user”生成的密钥 添加图片注释不超过 140 字可选 使用Ctrl X然后Y保存文件并退出nano。
创建配置文件 $nano config 按如下方式输入文件内容config我们使用的区域与步骤 4 中创建 S3 存储桶所使用的区域相同
[默认] 区域 us-west-2 使用Ctrl X然后Y保存文件并退出nano。
方法 2
在终端上输入$aws configure所需的信息如下所示
AWS 访问密钥 ID [无]输入您在步骤 2 中创建的用户“emr-user”的访问密钥 AWS 秘密访问密钥 [无]输入您在步骤 2 中创建的用户“emr-user”的秘密密钥 默认区域名称 [无]us-west-2与步骤 4 中使用的区域相同 默认输出格式 [无]
这 2 个文件将自动创建在隐藏文件夹 .aws 中通常位于根目录下如下所示 $cd ~/.aws 键入$ls 以验证这两个文件是否存在。信息应与方法 1 中的信息相同我们可以通过键入以下内容来检查内容 $cat credentials $cat config
准备步骤3中生成的.pem文件
要连接到集群我们需要在步骤 3 中创建的 .pem 文件。将我们在步骤 3 中下载的 .pem 文件移动到项目所需的位置。对我来说我将其放在与位于根目录的隐藏文件夹 .aws 中的凭证和配置文件相同的位置~/.aws/emr-cluster.pem
$ mv ~/Downloads/emr-cluster.pem 。 当使用此 .pem 文件设置 ssh 时如果 .pem 文件过于开放则会出现错误。警告的示例如下“ Permissions 0644 for ~/.aws/emr-cluster.pem are too open. It is required that your private key files are NOT accessible by others. This private key will be ignore. ” 在这种情况下我们需要使用以下命令更改此.pem 文件的权限sudo chmod 600 ~/.aws/emr-cluster.pem 验证我们是否成功安装了 awscli 包并设置了凭证
要验证我们是否成功安装 awscli 并设置凭证请输入一些 aws 命令例如 列出所有 IAM 用户$aws iam list-users 列出 s3 中的所有存储桶$aws s3 ls此命令将列出我们在 AWS 中拥有的所有 s3 存储桶 添加图片注释不超过 140 字可选 步骤 7创建 EMR 集群
现在我们准备在终端上创建我们的 EMR 集群。在终端上输入以下命令 aws emr create-cluster --name test-emr-cluster --use-default-roles --release-label emr-5.28.0 --instance-count 3 --instance-type m5.xlarge --applications NameJupyterHub NameSpark NameHadoop --ec2-attributes KeyNameemr-cluster --log-uri s3://s3-for-emr-cluster/
EMR脚本组件的解释 --name集群的名称在本例中为“test-emr-cluster” --use-default-roles使用默认服务角色 (EMR_DefaultRole) 和实例配置文件 (EMR_EC2_DefaultRole) 获得访问其他 AWS 服务的权限 --release-label emr-5.28.0使用EMR版本5.28.0构建集群 --instance-count 3和--instance-type m5.xlarge构建 1 个主节点和 2 个 m5.xlarge 类型的核心节点 --applications NameJupyterHub NameSpark NameHadoop在此集群上安装 JupyterHub、Spark 和 Hadoop --ec2-attributes KeyNameemr-cluster配置 Amazon EC2 实例配置KeyName 是我们在步骤 3Set up credentials in EC2并获取 .pem 文件中设置的 EC2 实例名称。在本例中名称为emr-cluster。 --log-uri s3://s3-for-emr-cluster/指定要存储日志文件的 S3 存储桶。在本例中S3 存储桶为“s3-for-emr-cluster”。此字段是可选的如步骤 4 中所述。 由于 EMR 集群价格昂贵我们可以选择--auto-terminate在集群上的所有操作完成后自动终止集群。要使其工作我们还需要在命令中使用 指定引导操作--bootstrap-actions Paths3://bootstrap.sh。当您使用自动终止时集群将启动运行您指定的任何引导操作然后执行通常输入数据、处理数据然后生成和保存输出的步骤。步骤完成后Amazon EMR 会自动终止集群 Amazon EC2 实例。如果我们不设置任何引导操作我们应该删除此字段。可以在AWS 站点上详细找到有关引导的参考。
创建 EMR 集群后的期望输出是 使用 ClusterId 检查集群的状态和信息j- EXAMPLECLUSTERID使用以下命令
aws emr describe-cluster --cluster-id j-EXAMPLECLUSTERID
我们应该等待几分钟直到集群可用状态变为“可用”然后再继续下一步。
***更新 1如果您在创建 Amazon EMR 集群时遇到问题EMR_DefaultRole is invalid or EMR_EC2_DefaultRole is invalid error则可能必须删除角色和实例配置文件然后按照此说明重新创建角色。
***更新 2为了使集群可供 EMR 上的笔记本使用我们可能需要在 —ec2-attributes 中包含 SubnetIds
aws emr create-cluster --name test-emr-cluster --use-default-roles --release-label emr-5.28.0 --instance-count 3 --instance-type m5.xlarge --applications NameJupyterHub NameSpark NameHadoop --ec2-attributes SubnetIdssubnet-YOURSUBNET KeyNameemr-cluster --log-uri s3://s3-for-emr-cluster/
如何查找 SubnetIds
单击EMR 控制台上的VPCSubnets选项卡从列表中进行选择。 添加图片注释不超过 140 字可选
对于初学者来说另一种安全的方法使用 AWS 控制台创建类似的 EMR 集群。然后查看该集群的“摘要”页面上的“网络和硬件”会话以查看子网 ID 添加图片注释不超过 140 字可选
您可以通过AWS 上的 VPC 仪表板访问子网。有关子网和 VPC 的更多信息请参阅AWS 站点。 步骤8允许SSH访问
在 AWS 控制台中单击Service输入 EMR然后转到 EMR 控制台。 添加图片注释不超过 140 字可选 选择Clusters 在列表中选择集群的名称在本例中为test-emr-cluster 添加图片注释不超过 140 字可选
在Summary标签上向下滚动以查看部分Security and access选择Security groups for Master链接 选择Security group IDElasticMapReduce-master 添加图片注释不超过 140 字可选
向下滚动到Inbound rulesEdit inbound rules 为了安全起见删除任何 SSH 规则如果有然后选择Add Rule 选择类型SSH协议为 TCP端口范围为 22 对于源选择我的 IP 选择Save。 步骤 9与集群的主节点创建 SSH 连接
方法 1 在终端上使用以下命令检查集群的 ID
aws emr list-clusters 使用此命令连接到集群。请记住指定 .pem 文件的正确路径
aws emr ssh --cluster-id j-EXAMPLECLUSTERID --key-pair-file ~/.aws/emr-cluster.pem
如果我们看到如下所示的带有 EMR 字母的屏幕那么恭喜您您已成功使用 AWS CLI 创建、设置和连接到 EMR 集群 !!!! 添加图片注释不超过 140 字可选
使用命令关闭与集群的连接$logout。
方法 2 在 AWS 控制台中单击Service输入 EMR然后转到 EMR 控制台。 选择Clusters 单击列表上的集群名称在本例中test-emr-cluster 在“摘要”选项卡上单击链接“使用 SSH 连接到主节点”。 添加图片注释不超过 140 字可选 复制弹出窗口上显示的命令并将其粘贴到终端上。 记得将 ~/emr-cluster.pem 替换为我们设置的私钥文件 (.pem) 的位置和文件名。例如
ssh -i ~/.aws/emr-cluster.pem hadoopec2-xx-xxx-xx-xx.us-west-2.compute.amazonaws.com
如果我们看到带有 EMR 信件的屏幕那么恭喜您您已成功使用 AWS CLI 创建、设置并连接到 EMR 集群 现在您可以开始使用 EMR 集群
创建一个简单的 Spark 任务例如创建一个包含时间类型字符串的 Spark 数据框然后将该列转换为不同的格式。
在集群终端上创建文件test_emr.py $nano 测试_emr.py
将此脚本复制并粘贴到 test_emr.py ### 文件“test_emr.py”的内容从 pyspark.sql 导入 SparkSession功能与 F 相同if __name__ __main__: 提交给spark集群的脚本示例 spark SparkSession.builder.getOrCreate() df spark.createDataFrame([(01/Jul/1995:00:00:01 -0400, ),(01/Jul/1995:00:00:11 -0400,),(26/Jul/1995:17$ (19/Jul/1995:01:56:43 -0400,), (11/Jul/1995:12:50:18 -0400,)], [TIME]) df df.withColumn(date, F.unix_timestamp(F.col(TIME), dd/MMM/yyyy:HH:mm:ss Z).cast(timestamp)) # 显示数据框 df.show() ####停止spark否则程序将被挂起 spark.stop()
该文件的内容在nano文本编辑器中显示 添加图片注释不超过 140 字可选
使用以下命令在集群终端上提交脚本 $spark-submit --master yarn ./test_emr.py
当任务运行时终端上可能会出现大量信息这在 Spark 中很正常。输出可以在信息日志中找到 添加图片注释不超过 140 字可选 恭喜你成功了
当不再使用集群时请记得终止它。
键入logout以退出集群。然后使用以下命令终止集群 $a ws emr 终止集群--cluster-id j-EXAMPLECLUSTERID
请注意我们可以使用 AWS CLI 命令轻松地再次创建具有相同配置的集群AWS CLI export在 EMR 控制台上选择已终止的集群“test-emr-cluster”时单击选项卡即可找到该命令 添加图片注释不超过 140 字可选 添加图片注释不超过 140 字可选
我希望大家不再需要费力使用 AWS CLI 在 EMR 上创建、设置和运行 Spark 集群。如果您遇到任何问题或发现本教程有任何错误请告诉我。
感谢关注雲闪世界。Aws解决方案架构师vs开发人员GCP解决方案架构师vs开发人员
订阅频道(https://t.me/awsgoogvps_Host) TG交流群(t.me/awsgoogvpsHost)
#aws CLI cheat sheet #aws cli Debug #aws cli get S3 object #aws cli login with access key #aws cli to download from s3 #aws command line download from s3 #homebrew install aws cli#aws sdk get caller identity #aws s3 cli get object #aws s3 put object#aws s3 headobject#aws s3 put-object #aws s3 sync vs cp