humidy
作者humidy·2015-10-20 15:26
信息分析/架构师·某公司

Hadoop平台HDFS目录参考规划

字数 2143阅读 3182评论 0赞 0

今天在网上看到一篇Hadoop存储规划的文章觉得值得新手参考,于是记入分享如下,本文不是胡旻编写,特此声明

http://chuansong.me/n/1069301

记得刚开始使用Hadoop的时候,我们是一个团队共用一个集群,每个人都按照自己的经验习惯来操作,大家都习惯把文件创建到根目录下,创建的名称也只有自己才能理解。加上权限控制不好,时常还出现文件被误删的现象。集群运营一段时间以后目录结构就面目全灰。

当一群人共享一种资源的时,往往就需要规范,规则来约束或者指导用户。就好像我们过十字路口,若没有交通指示灯是不是要乱套了?Hadoop集群若想要平台化就需要先制定规范。

下面简单介绍下我们HDFS存储规范,希望对初建Hadoop集群的同学能有一些帮助。

根目录规划如下:

/source 主要存储原始采集的日志,存储规则如下:

/顶级目录/产品线/{业务名称}/日志名称/日期/文件名称,其中日期格式统一为yyyyMMdd。文件名称按照hh_ip进行存储,这样方便后续能满足小时统计的需求。另外我们的日志是实时上传,刚写上去的小时文件会在前面加上"_",如_18_127.0.0.1用来表示127.0.0.1这台机器18点的文件正在被写入。等待18点的文件全部写完,才把文件名重新命名成18_127.0.0.1。如果你想知道这么做还有什么好处,可以给我发消息。

 

/logdata 存储的规范和source一模一样,只是source下采集的日志都统一按照小时来拆分,每种日志量的大小不一,source下的数据经常会出现一些小文件,所以我们定义这一层对source的数据做统一压缩,且让每个文件的大小和存储块大小相当。source下的数据则会定期删除。

logdata下的数据是每日计算的主要入口,数据可以有更长的保留策略。根据不同的业务线将数据资源分配不同的权限组,用户若要访问相应的数据则需要提交申请。

 

产品线: 根据每个企业的产品不同可以划分出不同的产品线,比如web(网站),ad(广告),search(搜索),app等,若后续新增产品线可需系统管理员添加相应的目录。

业务名称:每个产品下可能包含多个业务,业务名称主要是用于区分那些比较庞大的产品线,这个看企业具体情况,并不是一定需要的。

日志名称:为实际业务所对应的日志名称,与传统数据库相对应的话,这个名称可以把他看成就是一个表名.

 

/commons 一些集群共用的基础数据,比如ip库、省份信息、经纬度数据等。

存储规则如下: /顶级目录/数据类别/文件名称。这部分数据根据使用情况,集群规模,你需要设置更多的备份数,像一些ip库数据,文件不大,我们设置的备份策略为(集群节点数/3)。该数据由平台统一维护,平台用户拥有只读权限。

 

/workspace 工作空间,该目录下存储的各团队计算出来的结果数据,按照子团队名称划分目录,存储的数据即为各产品线上的生产数据。

该工作空间类似于团队间协作的空间,这里给出一个参考规范,具体规范可按照本团队的业务进行调整。 存储规则如下:/workspace/团队名称/{业务名称}/数据名称。该空间下的数据只允许开放给组内用户,不允许对外共享。每个团队允许一个默认的配额空间,当空间使用超过这个配额90%则给用户报警,让用删除数据,或进行必要压缩。若不及时处理超过配额将无法继续写入数据。若确实是因为业务增长需要扩大存储,可以提交申请。

 

/user  用户空间,存储用户私有数据,仅用户自己可以访问。

按照开发人员自己的习惯组织存储文件,用于存储用户的测试数据,严禁将实际生产的业务数据存储在该空间,该空间下数据会不定期清理,会限制空间大小,当存储空间超过这个配额的90%则会给用户报警。当员工离职账户注销,空间存储回收。

 

/warehouse 存储hive仓库,按照团队创建库;公共日志按照业务名进行创建。

每个团队可以创建一个属于团队的hive库,团队账户拥有该库的管理权限,组内账户拥有只读权限,允许授权开放库里表给其他用户。公共日志库由平台统一管理维护,允许授权开放给平台用户。

 

/share 共享存储,每个团队可以在这个空间下共享一些临时文件。

 

/tmp 用来存储一些临时文件,每周清理一遍

不管你以前有没用过Hadoop,只要是使用我们这个集群就潜移默化的遵循这个规范。有了以上这么简单的一个目录结构规范再也不会因为个人的经验和习惯差异,影响整个集群的易用性。也不会因为时间的推移让集群变得混乱。

 

 合理的规范,是一种有效的沟通方式,可以降低大家在使用过程中的沟通成本。严格的执行规范,可以减少我们后续管理的复杂度。规范无法一步到位,也不会一层不变的,随着技术发展;平台规模扩张;用户认知提升,规范也会跟着不断调整,不断完善。规范流程不是形式,是为了解决那些无法单纯的通过技术来解决的问题。

 

至此,开放的Hadoop平台,你已经迈出了第一步!

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广