TestMiniMRWithDFSWithDistinctUsers.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.mapred;
  19. import java.io.*;
  20. import junit.framework.TestCase;
  21. import org.apache.hadoop.conf.Configuration;
  22. import org.apache.hadoop.hdfs.MiniDFSCluster;
  23. import org.apache.hadoop.fs.FileSystem;
  24. import org.apache.hadoop.fs.Path;
  25. import org.apache.hadoop.fs.permission.FsPermission;
  26. import org.apache.hadoop.security.*;
  27. /**
  28.  * A JUnit test to test Mini Map-Reduce Cluster with Mini-DFS.
  29.  */
  30. public class TestMiniMRWithDFSWithDistinctUsers extends TestCase {
  31.   static final long now = System.currentTimeMillis();
  32.   static final UnixUserGroupInformation DFS_UGI = createUGI("dfs", true); 
  33.   static final UnixUserGroupInformation PI_UGI = createUGI("pi", false); 
  34.   static final UnixUserGroupInformation WC_UGI = createUGI("wc", false); 
  35.   static UnixUserGroupInformation createUGI(String name, boolean issuper) {
  36.     String username = name + now;
  37.     String group = issuper? "supergroup": username;
  38.     return UnixUserGroupInformation.createImmutable(
  39.         new String[]{username, group});
  40.   }
  41.   
  42.   static JobConf createJobConf(MiniMRCluster mr, UnixUserGroupInformation ugi) {
  43.     JobConf jobconf = mr.createJobConf();
  44.     UnixUserGroupInformation.saveToConf(jobconf,
  45.         UnixUserGroupInformation.UGI_PROPERTY_NAME, ugi);
  46.     return jobconf;
  47.   }
  48.   static void mkdir(FileSystem fs, String dir) throws IOException {
  49.     Path p = new Path(dir);
  50.     fs.mkdirs(p);
  51.     fs.setPermission(p, new FsPermission((short)0777));
  52.   }
  53.   public void testDistinctUsers() throws Exception {
  54.     MiniDFSCluster dfs = null;
  55.     MiniMRCluster mr = null;
  56.     try {
  57.       Configuration conf = new Configuration();
  58.       UnixUserGroupInformation.saveToConf(conf,
  59.           UnixUserGroupInformation.UGI_PROPERTY_NAME, DFS_UGI);
  60.       dfs = new MiniDFSCluster(conf, 4, true, null);
  61.       FileSystem fs = dfs.getFileSystem();
  62.       mkdir(fs, "/user");
  63.       mkdir(fs, "/mapred");
  64.       UnixUserGroupInformation MR_UGI = createUGI(
  65.           UnixUserGroupInformation.login().getUserName(), false); 
  66.       mr = new MiniMRCluster(0, 0, 4, dfs.getFileSystem().getUri().toString(),
  67.            1, null, null, MR_UGI);
  68.       JobConf pi = createJobConf(mr, PI_UGI);
  69.       TestMiniMRWithDFS.runPI(mr, pi);
  70.       JobConf wc = createJobConf(mr, WC_UGI);
  71.       TestMiniMRWithDFS.runWordCount(mr, wc);
  72.     } finally {
  73.       if (dfs != null) { dfs.shutdown(); }
  74.       if (mr != null) { mr.shutdown();}
  75.     }
  76.   }
  77. }