package com.taobao.zeus.jobs.sub.conf; import java.io.File; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.taobao.zeus.util.Environment; public class ConfUtil { private static Logger log=LoggerFactory.getLogger(ConfUtil.class); public static String getHadoopHome(){ String dir = System.getenv("HADOOP_HOME"); if(dir==null || "".equals(dir.trim())){ dir = Environment.getHadoopHome(); } return dir == null ? null : ""; } public static String getHiveHome(){ String dir = System.getenv("HIVE_HOME"); if(dir==null || "".equals(dir.trim())){ dir = Environment.getHiveHome(); } return dir == null ? null : ""; } public static String getHadoopConfDir(){ String dir=System.getenv("HADOOP_CONF_DIR"); //2014-09-19增加配置文件的读取 if(dir==null || "".equals(dir.trim())){ dir=Environment.getHadoopConfDir(); // System.out.println("from environment hadoop_conf_dir:"+dir); } if(dir==null || "".equals(dir.trim())){ //hadoop2中,配置的默认地址已经修改 dir=getHadoopHome()+File.separator+"etc"+File.separator+"hadoop"; File f=new File(dir); /** * 兼容Hadoop1的配置 */ if(!f.exists()){ dir=getHadoopHome()+File.separator+"conf"; } } // System.out.println(dir); return dir; } public static String getHiveConfDir(){ String dir=System.getenv("HIVE_CONF_DIR"); //2014-09-19增加配置文件的读取 if(dir==null || "".equals(dir.trim())){ dir=Environment.getHiveConfDir(); // System.out.println("from environment hive_conf_dir:"+dir); } if(dir==null || "".equals(dir.trim())){ dir=getHiveHome()+File.separator+"conf"; } // System.out.println(dir); return dir; } public static Configuration getDefaultHiveSite(){ try { File f=new File(getHiveConfDir()+File.separator+"hive-site.xml"); if(f.exists()){ Configuration conf=new Configuration(false); conf.addResource(f.toURI().toURL()); return conf; } } catch (IOException e) { log.error("load $HIVE_CONF_DIR/hive-site.xml error",e); } return null; } public static Configuration getDefaultCoreSite(){ try { File f=new File(getHadoopConfDir()+File.separator+"core-site.xml"); if(f.exists()){ Configuration conf=new Configuration(false); conf.addResource(f.toURI().toURL()); return conf; } } catch (IOException e) { log.error("load $HADOOP_CONF_DIR/core-site.xml error",e); } return null; } public static Configuration getDefaultHdfsSite(){ try{ File f=new File(getHadoopConfDir()+File.separator+"hdfs-site.xml"); if(f.exists()){ Configuration conf=new Configuration(false); conf.addResource(f.toURI().toURL()); return conf; } } catch (IOException e) { log.error("load $HADOOP_CONF_DIR/hdfs-site.xml error",e); } return null; } public static Configuration getDefaultMapredSite(){ try{ File f=new File(getHadoopConfDir()+File.separator+"mapred-site.xml"); if(f.exists()){ Configuration conf=new Configuration(false); conf.addResource(f.toURI().toURL()); return conf; } } catch (IOException e) { log.error("load $HADOOP_CONF_DIR/mapred-site.xml error",e); } return null; } public static Configuration getDefaultCoreAndHdfsSite(){ try{ File core_site=new File(getHadoopConfDir()+File.separator+"core-site.xml"); File hdfs_site=new File(getHadoopConfDir()+File.separator+"hdfs-site.xml"); Configuration conf=new Configuration(false); if(core_site.exists()){ conf.addResource(core_site.toURI().toURL()); log.info("load core site succcessfully"); } if (hdfs_site.exists()) { conf.addResource(hdfs_site.toURI().toURL()); log.info("load hdfs site succcessfully"); } return conf; } catch (IOException e) { log.error("load $HADOOP_CONF_DIR/core-site.xml and $HADOOP_CONF_DIR/hdfs-site.xml error",e); } return null; } public static Configuration getDefaultYarnSite(){ try{ File f=new File(getHadoopConfDir()+File.separator+"yarn-site.xml"); if(f.exists()){ Configuration conf=new Configuration(false); conf.addResource(f.toURI().toURL()); return conf; } } catch (IOException e) { log.error("load $HADOOP_CONF_DIR/yarn-site.xml",e); } return null; } // public static Configuration getWorkConf(JobContext jobContext) { // String workDir = jobContext.getWorkDir(); // Configuration conf = new Configuration(); // File hadoopSite = new File(workDir + File.separator + "hadoop-site.xml"); // if (hadoopSite.exists()) { // conf.addResource(new Path(workDir + File.separator // + "hadoop-site.xml")); // } // File hiveSite = new File(workDir + File.separator + "hive-site.xml"); // if (hiveSite.exists()) { // conf.addResource(new Path(workDir + File.separator + "hive-site.xml")); // } // return conf; // } }