如何在Amazon EMR中安装sqoop?

时间:2015-08-13 11:54:58

标签: hive sqoop amazon-redshift amazon-emr

我在Amazon EMR中使用-emr-4.0.0创建了一个集群。 Hadoop发行版:Amazon 2.6.0和Hive 1.0.0。需要安装Sqoop以便我可以在Hive和Redshift之间进行通信吗?在EMR集群中安装Sqoop的步骤是什么?要求提供步骤。谢谢!

3 个答案:

答案 0 :(得分:7)

请注意,在EMR 4.0.0 hadoop fs -copyToLocal中会抛出错误。

改为使用aws s3 cp

比Amal更具体:

  1. 下载最新版本的SQOOP并将其上传到S3位置。我正在使用 sqoop-1.4.4.bin__hadoop-2.0.4-alpha ,它似乎与EMR 4.0.0一起使用
  2. 下载Redshift的JAR连接器并将其上传到相同的S3位置。 This page可能有帮助。
  3. 将类似下面的脚本上传到S3

    #!/bin/bash
    # Install sqoop and mysql connector. Store in s3 and load
    # as bootstrap step.
    
    bucket_location='s3://your-sqoop-jars-location/'
    sqoop_jar='sqoop-1.4.4.bin__hadoop-2.0.4-alpha'
    sqoop_jar_gz=$sqoop_jar.tar.gz
    redshift_jar='RedshiftJDBC41-1.1.7.1007.jar'
    
    cd /home/hadoop
    
    aws s3 cp $bucket_location$sqoop_jar_gz .
    tar -xzf $sqoop_jar_gz
    aws s3 cp $bucket_location$redshift_jar .
    cp $redshift_jar $sqoop_jar/lib/
    
  4. 设置SQOOP_HOME并将SQOOP_HOME添加到PATH,以便能够从任何地方调用sqoop。这些条目应该在/ etc / bashrc中创建。否则,您必须使用完整路径,在这种情况下:/home/hadoop/sqoop-1.4.4.bin__hadoop-2.0.4-alpha/bin/sqoop

  5. 我正在使用Java以编程方式启动我的EMR集群。要在Java中配置引导步骤,我创建一个BootstrapActionConfigFactory:

    public final class BootstrapActionConfigFactory {
        private static final String bucket = Config.getBootstrapBucket();
    
        // make class non-instantiable
        private BootstrapActionConfigFactory() {
        }
    
        /**
         * Adds an install Sqoop step to the job that corresponds to the version set in the Config class.
         */
        public static BootstrapActionConfig newInstallSqoopBootstrapActionConfig() {
            return newInstallSqoopBootstrapActionConfig(Config.getHadoopVersion().charAt(0));
        }
    
        /**
         * Adds an install Sqoop step to the job that corresponds to the version specified in the parameter
         *
         * @param hadoopVersion the main version number for Hadoop. E.g.: 1, 2
         */
        public static BootstrapActionConfig newInstallSqoopBootstrapActionConfig(char hadoopVersion) {
            return new BootstrapActionConfig().withName("Install Sqoop")
                .withScriptBootstrapAction(
                    new ScriptBootstrapActionConfig().withPath("s3://" + bucket + "/sqoop-tools/hadoop" + hadoopVersion + "/bootstrap-sqoop-emr4.sh"));
        }
    }
    

    然后在创建作业时:

    Job job = new Job(Region.getRegion(Regions.US_EAST_1));
     job.addBootstrapAction(BootstrapActionConfigFactory.newInstallSqoopBootstrapActionConfig());
    

答案 1 :(得分:1)

下载sqoop的tarball并将其保存在s3存储桶中。创建执行以下活动的引导脚本

  1. 将sqoop tarball下载到所需的实例
  2. 提取tarball
  3. 设置SQOOP_HOME并将SQOOP_HOME添加到PATH。这些条目应该在/ etc / bashrc
  4. 中完成
  5. 将所需的连接器jar添加到SQOOP的库中。
  6. 将此脚本保留在S3中,并将此脚本指向引导操作。

答案 2 :(得分:1)

请注意,从Emr-4.4.0开始,AWS将对Sqoop 1.4.6的支持添加到EMR群集中。只需点击几下安装即可完成安装。无需手动安装。

参考文献: