使用Hadoop API访问Kerberos 安全HDFS
2015-05-27 15:41
471 查看
使用kerberos下安全Hadoop时,通常是在linux系统下使用kinit命令进行身份认证,下面提供一种在java api中认证的方式:
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.security.UserGroupInformation; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Created by sure on 15-5-12. */ public class HdfsKerberos { static Configuration conf = new Configuration(); public static void main(String[] args) throws IOException { //keytab文件的路径 conf.set(KEYTAB_FILE_KEY, "/opt/sure.keytab"); //principal conf.set(USER_NAME_KEY, "sure"); login(conf); System.out.println(loadHdfsFile("/trident/trident-1-0-1431409180775.txt")); } public static List<String> loadHdfsFile(String filePath){ List<String> resultList = new ArrayList<>(); FileSystem fileSystem = null; try { fileSystem = FileSystem.get(conf); FSDataInputStream fs = fileSystem.open(new Path(filePath)); BufferedReader bis = new BufferedReader(new InputStreamReader(fs,"UTF-8")); String line; while ((line = bis.readLine()) != null) { resultList.add(line); } fileSystem.close(); } catch (IOException e) { e.printStackTrace(); } return resultList; } public static final String KEYTAB_FILE_KEY = "hdfs.keytab.file"; public static final String USER_NAME_KEY = "hdfs.kerberos.principal"; public static void login(Configuration hdfsConfig) throws IOException { if (UserGroupInformation.isSecurityEnabled()) { String keytab = conf.get(KEYTAB_FILE_KEY); if (keytab != null) { hdfsConfig.set(KEYTAB_FILE_KEY, keytab); } String userName = conf.get(USER_NAME_KEY); if (userName != null) { hdfsConfig.set(USER_NAME_KEY, userName); } SecurityUtil.login(hdfsConfig, KEYTAB_FILE_KEY, USER_NAME_KEY); } } }
相关文章推荐
- 使用API访问开启kerberos集群下的HDFS
- 使用Hadoop的JAVA API远程访问HDFS
- hadoop学习之-使用ODCH工具实现oralce外部表访问HDFS数据文件
- 使用Hadoop提供的API操作HDFS
- Hadoop-2.6.0上的C的API访问HDFS
- 使用python来访问Hadoop HDFS存储实现文件的操作
- 使用python来访问Hadoop HDFS存储实现文件的操作
- 使用JDK中的类URL访问HDFS(来自吴超Hadoop)
- hadoop之hdfs api的简单使用
- Hadoop实践(三)---使用HDFS的Java API
- hadoop学习之HDFS(2.8):hdfs的javaAPI使用及示例
- 很好-Hadoop通过C的API访问HDFS
- Hadoop学习笔记:HDFS的java API使用
- 使用API访问开启kerberos集群下的HBASE
- 使用Hadoop的Java API操作HDFS
- hadoop学习笔记:创建maven项目与使用hdfs的读写API
- 【hadoop摸索系列】记录使用libhdfs访问hdfs的关键问题
- 【hadoop摸索系列】记录使用libhdfs访问hdfs的关键问题
- Hadoop通过c语言API访问hdfs
- Hadoop 基本API 使用 -- 从HDFS文件系统 上读取文件