使用bootstrap替换emr上的默认jar

uinbv5nw  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(314)

我在AMI3.0.4的emr集群上。集群启动后,我将ssh连接到master并手动执行以下操作:

cd /home/hadoop/share/hadoop/common/lib/
rm guava-11.0.2.jar
wget http://central.maven.org/maven2/com/google/guava/guava/14.0.1/guava-14.0.1.jar
chmod 777 guava-14.0.1.jar

是否可以在引导操作中执行上述操作?谢谢!

6xfqseft

6xfqseft1#

是的,您可以添加引导脚本来执行此操作。创建一个shell脚本并上传到s3,然后在emr的bootstrap操作中使用脚本的路径。
e、 g您可以将guava-14.0.1.jar保存在s3 bucket中并下载它


# !/bin/bash

hadoop fs -copyToLocal s3n://rootbucket/myjars/guava-14.0.1.jar /home/hadoop/share/hadoop/common/lib/
rm -rf /home/hadoop/share/hadoop/common/lib/guava-11.0.2.jar

我假设您这样做是因为您对map reduce代码中的14.0.1jar有一些依赖性。您可以使用添加的guava-14.0.1.jar构建fat jar,并将jar作为自定义jar上传以运行作业

xpszyzbs

xpszyzbs2#

在emr4.0中,hadoop的安装路径发生了变化。因此,guava-14.0.1.jar的手动更新必须更改为:

cd /usr/lib/hadoop/lib
sudo wget http://central.maven.org/maven2/com/google/guava/guava/14.0.1/guava-14.0.1.jar
sudo rm guava-11.0.2.jar

sandesh回答中的boostrap动作对我们不起作用。
编辑:
现在我们有了一个emr4.0的解决方案。必须在s3中提供spark-config.json,为spark执行器和驱动程序设置额外的类路径。在“编辑软件设置(可选)”部分中,您可以定义此配置文件的位置并从s3加载它。
spark-config.json文件

[
  {
  "classification":"spark",
  "properties":{
    "maximizeResourceAllocation":"true"
    }
  },
  {
  "classification":"spark-defaults",
  "properties":{
    "spark.executor.extraClassPath":"/home/hadoop/lib/guava-14.0.1.jar",
    "spark.driver.extraClassPath":"/home/hadoop/lib/guava-14.0.1.jar",
    }
  }
]

guava-14.0.1.jar需要通过boostrap脚本进行下载:guava\u download.sh


# !/bin/bash

mkdir -p /home/hadoop/lib/
cd /home/hadoop/lib/
wget https://repo1.maven.org/maven2/com/google/guava/guava/14.0.1/guava-14.0.1.jar

相关问题