001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 package org.apache.oozie.action.hadoop; 019 020 import java.io.File; 021 import java.io.FileOutputStream; 022 import java.io.OutputStream; 023 024 import org.apache.hadoop.conf.Configuration; 025 import org.apache.hadoop.fs.Path; 026 import com.cloudera.sqoop.Sqoop; 027 028 public class SqoopMain extends LauncherMain { 029 030 public static final String SQOOP_DEFAULT_CONF = "sqoop-default.xml"; 031 public static final String SQOOP_SITE_CONF = "sqoop-site.xml"; 032 033 public static void main(String[] args) throws Exception { 034 run(SqoopMain.class, args); 035 } 036 037 protected void run(String[] args) throws Exception { 038 System.out.println(); 039 System.out.println("Oozie Sqoop action configuration"); 040 System.out.println("================================================================="); 041 042 // loading action conf prepared by Oozie 043 Configuration actionConf = new Configuration(false); 044 045 String actionXml = System.getProperty("oozie.action.conf.xml"); 046 047 if (actionXml == null) { 048 throw new RuntimeException("Missing Java System Property [oozie.action.conf.xml]"); 049 } 050 if (!new File(actionXml).exists()) { 051 throw new RuntimeException("Action Configuration XML file [" + actionXml + "] does not exist"); 052 } 053 054 actionConf.addResource(new Path("file:///", actionXml)); 055 056 // See http://issues.apache.org/jira/browse/HIVE-1411 057 actionConf.set("datanucleus.plugin.pluginRegistryBundleCheck", "LOG"); 058 059 // Propagate delegation related props from launcher job to Hive job 060 if (System.getenv("HADOOP_TOKEN_FILE_LOCATION") != null) { 061 actionConf.set("mapreduce.job.credentials.binary", 062 System.getenv("HADOOP_TOKEN_FILE_LOCATION")); 063 System.out.println("------------------------"); 064 System.out.println("Setting env property for mapreduce.job.credentials.binary to:" 065 + System.getenv("HADOOP_TOKEN_FILE_LOCATION")); 066 System.out.println("------------------------"); 067 System.setProperty("mapreduce.job.credentials.binary", 068 System.getenv("HADOOP_TOKEN_FILE_LOCATION")); 069 } else { 070 System.out.println("Non-Kerberos execution"); 071 } 072 073 // Write the action configuration out to sqoop-site.xml 074 // AND hive-site.xml as properties contained in the configuration 075 // can target either Sqoop proper or Hive (in the event 076 // of a Sqoop hive-import operation. 077 OutputStream os = new FileOutputStream(SQOOP_SITE_CONF); 078 actionConf.writeXml(os); 079 os.close(); 080 081 // os = new FileOutputStream(HIVE_SITE_CONF); 082 // actionConf.writeXml(os); 083 // os.close(); 084 // 085 086 String command = actionConf.get("oozie.sqoop.command"); 087 if (command == null) { 088 throw new RuntimeException("Action Configuration does not have [oozie.sqoop.command] property"); 089 } 090 091 String[] sqoopArgs = command.split(" "); 092 093 System.out.println("Sqoop command arguments :"); 094 for (String arg : sqoopArgs) { 095 System.out.println(" " + arg); 096 } 097 098 System.out.println("================================================================="); 099 System.out.println(); 100 System.out.println(">>> Invoking Sqoop command line now >>>"); 101 System.out.println(); 102 System.out.flush(); 103 104 runSqoopJob(sqoopArgs); 105 106 System.out.println(); 107 System.out.println("<<< Invocation of Sqoop command completed <<<"); 108 System.out.println(); 109 110 111 } 112 113 protected void runSqoopJob(String[] args) throws Exception { 114 // running as from the command line 115 Sqoop.main(args); 116 } 117 118 public static void setSqoopCommand(Configuration conf, String command) { 119 conf.set("oozie.sqoop.command", command); 120 } 121 }