某企业级hadoop源代码分析-1
来源:互联网 发布:微信公众平台配置域名 编辑:程序博客网 时间:2024/06/06 01:11
本文尝试分析某大型大数据解决方案公司企业级hadoop源代码,班门弄斧。
本系列将分三篇文章,对所做的修改进行分析。
修改点1
Index: org/apache/hadoop/hdfs/server/namenode/AclTransformation.java===================================================================--- org/apache/hadoop/hdfs/server/namenode/AclTransformation.java (revision 37)+++ org/apache/hadoop/hdfs/server/namenode/AclTransformation.java (revision 42)@@ -62,7 +62,7 @@ */ @InterfaceAudience.Private final class AclTransformation {- private static final int MAX_ENTRIES = 32;+ private static final int MAX_ENTRIES = 64;
分析
其中AclTransformation是acl操作类,MAX_ENTRIES表示所能存储的最大acl条目数。该条修改能够增加存储条目,无法在性能方面有所作为。
1.MAX_ENTRIES相关的源码。
/** * Builds the final list of ACL entries to return by trimming, sorting and * validating the ACL entries that have been added. * * @param aclBuilder ArrayList<AclEntry> containing entries to build * @return List<AclEntry> unmodifiable, sorted list of ACL entries * @throws AclException if validation fails */ private static List<AclEntry> buildAndValidateAcl( ArrayList<AclEntry> aclBuilder) throws AclException { if (aclBuilder.size() > MAX_ENTRIES) { throw new AclException("Invalid ACL: ACL has " + aclBuilder.size() + " entries, which exceeds maximum of " + MAX_ENTRIES + "."); }
2.AclTransformation类注释及简单翻译
/** * AclTransformation defines the operations that can modify an ACL. All ACL * modifications take as input an existing ACL and apply logic to add new * entries, modify existing entries or remove old entries. Some operations also * accept an ACL spec: a list of entries that further describes the requested * change. Different operations interpret the ACL spec differently. In the * case of adding an ACL to an inode that previously did not have one, the * existing ACL can be a "minimal ACL" containing exactly 3 entries for owner, * group and other, all derived from the {@link FsPermission} bits. * * The algorithms implemented here require sorted lists of ACL entries. For any * existing ACL, it is assumed that the entries are sorted. This is because all * ACL creation and modification is intended to go through these methods, and * they all guarantee correct sort order in their outputs. However, an ACL spec * is considered untrusted user input, so all operations pre-sort the ACL spec as * the first step. */
AclTransformation定义了修改acl的操作。所有的acl修改都是通过新增一条acl实现,实现添加,修改,删除。
一些操作也接受acl列表作为参数,不同的操作对acl列表的处理也不一样。当给一个没有进行过授权操作的inode添加acl时,inode包含最小化的acl,即owner,group,other三条acl,这三条acl从FsPermission继承而来。
这里Acl入口列表是有序的。所有已存在的ACL,其入口都是排序的。
这么做是因为所有的acl创建和都要经过这些方法,他们都保证他们的输出是正确排序的。
然而ACL spec被默认为不被信任的用户输入,所有操作都会首先对Acl spec进行预排序。
3.保证排序的代码
/** * Comparator that enforces required ordering for entries within an ACL: * -owner entry (unnamed user) * -all named user entries (internal ordering undefined) * -owning group entry (unnamed group) * -all named group entries (internal ordering undefined) * -mask entry * -other entry * All access ACL entries sort ahead of all default ACL entries. */ static final Comparator<AclEntry> ACL_ENTRY_COMPARATOR = new Comparator<AclEntry>() { @Override public int compare(AclEntry entry1, AclEntry entry2) { return ComparisonChain.start() .compare(entry1.getScope(), entry2.getScope(), Ordering.explicit(ACCESS, DEFAULT)) .compare(entry1.getType(), entry2.getType(), Ordering.explicit(USER, GROUP, MASK, OTHER)) .compare(entry1.getName(), entry2.getName(), Ordering.natural().nullsFirst()) .result(); } };
0 0
- 某企业级hadoop源代码分析-1
- 某企业级hadoop源代码分析-2
- 某企业级hadoop源代码分析-3
- Apache Hadoop Pig 源代码分析(1)
- Hadoop源代码分析【RPC】
- Hadoop源代码分析
- hadoop wordcount源代码分析
- Hadoop源代码分析 - HDFS
- Hadoop源代码分析
- Hadoop源代码分析(完整版)
- hadoop wordcount源代码分析
- Hadoop源代码分析(完整版)
- Hadoop源代码分析
- Hadoop源代码分析
- hadoop源代码分析(完整版)
- Hadoop源代码分析
- Hadoop源代码分析(一)
- Hadoop源代码分析(一)
- 可见性问题小案例
- 关于直播,所有的技术细节都在这里了
- Android 7.0 安装失败的两个原因
- opencv学习笔记 1——安装opencv2.49+VS2013
- 开发环境搭建
- 某企业级hadoop源代码分析-1
- 64G的EXFAT格式的U盘如何格式化为FAT32
- 实训3/6 Python 字符串、列表
- Linux查看CPU和内存使用情况
- 自己装系统原来这么简单,你还老跑维修店?
- Android 命名规范整理
- caffe命令行的使用实例
- AppsFlyer SDK 接入
- CF#807 B. T-Shirt Hunt(水题)