分享

Apache Hadoop高级篇:hadoop的兼容性说明【下】

pig2 2015-11-23 16:58:30 发表于 连载型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 13924
问题导读



1.HDFS元数据有几种升级方式?
2.Hadoop 配置文件的作用是什么?
3.自定义配置属性keys应注意什么问题?





上一篇
Apache Hadoop高级篇:hadoop的兼容性说明-相关hadoop项目版本之间的关系等【上】
http://www.aboutyun.com/thread-16013-1-1.html



REST APIs
REST API兼容性对应于两个请求(URL)的和响应于每个请求(内容,其可含有其它URL)。

Policy

API 注释稳定,至少在一个主版本中保存兼容,可能在主版本的新版本的REST API 被弃用


Metrics/JMX

尽管 Metrics API由Java API兼容管理,实际metrics暴露给hadoop为用户实现自动化使用它们(脚本等)。添加额外的metrics是兼容的。修改(例如,改变单位或测量)或则移除已存在的metrics破坏兼容性,类似的改变 JMX MBean对象名称也破坏兼容性。

Policy
在一个主版本内容Metrics应保持兼容性。


文件格式和元数据

用户和系统级数据(包括元数据)存储在不同格式的文件。改变元数据或则存储数据/元数据的文件格式将导致版本间不兼容。

用户级文件格式
改变终端用户存储数据的格式阻碍了后面版本的访问,因此非常重要保持文件格式的的兼容性。人们总是在现有的格式上添加一个“新”的格式改进。这些格式例子包括har, war, SequenceFileFormat 等.
Policy
不向前兼容的用户文件格式改变是非常严格的在主版本。新发布版本期望读取已有格式,但写入数据的格式可能与先前版本不兼容。社区更倾向于创建一个新的格式,来代替对现有格式的不兼容的改变。


系统内部文件格式
hadoop内部数据以文件的方式存储,改变这些格式会导致不兼容。这种改变不像用户级别文件具有毁灭性,兼容性可以被打破的policy是重要的。

MapReduce
MapReduce使用格式如 I-File 存储MapReduce指定数据

Policy

MapReduce内部是格式如IFile在一个版本内保持通用性。改变这些格式会引发运行中的jobs失败,因此我们应该确保新的客户端以兼容的方式能够取shuffle数据从旧的服务端

HDFS Metadata

HDFS元数据(镜像和edit logs)在一个指定的格式。无论是格式还是元数据改变会阻止后面版本读取旧版本元数据。这种不兼容的变化可能需要hdfs升级转换元数据使它能访问。一些改变需要更多的升级。取决于不相容的变化的程度:

自动:image自动升级,无需显示升级
直接:image是可升级的,但可能需要一个显式发布“升级”。
间接:image是可升级的,但是可能首先升级到中间的发布版
不可升级:image不可升级的

Policy

一个发布版升级必须允许集群回滚到旧版本和他的旧的磁盘格式。回滚需要还原原始数据,但是不需要恢复更新的数据
HDFS元数据改变必须升级通过任一升级方式--- automatic【自动】, direct 【直接】或则 indirect【间接】.
更多的细节policies在各种升级方式中还有待考虑

命令行界面 (CLI)

Hadoop的命令行程序,可以使用可直接通过系统shell或通过shell脚本。改变一个命令的路径,删除或重命名的命令行选项,参数的顺序,或则命令返回代码和打破输出兼容性,可能对用户造成不利影响。

Policy

在随后的主版本中将被移除或则不兼容的修改之前,在主要版本中,CLI命令被弃用(当使用时会有警告)


Web UI
Web UI,web页面的详细内容和页面布局,改变潜在的接口可能会影响页面信息

Policy
Web pages在任何时候允许不兼容性改变。用户期望使用 REST APIs 获取任何信息


Hadoop 配置文件

用户使用(1)hadoop定义属性配置和提供暗示,以hadoop(2)定制属性传递信息给job.因此配置属性的兼容性是双重的:

  • 修改key-names, values的单位, 和hadoop自定义属性的默认值
  • 自定义配置属性keys不能与hadoop定义属性命名空间冲突。通常情况下,用户应该避免使用hadoop前缀: hadoop, io, ipc, fs, net, file, ftp, s3, kfs, ha, file, dfs, mapred, mapreduce, yarn.

Policy
Hadoop定义的属性是被弃用的至少一个主要发布之前被删除。修改单位现有属性是不允许的。
在主要版本或则小版本中,hadoop自定义属性值可以被改变
当前没有明确的policy规则,当新的前缀被添加或则删除。前缀应该避免自定义配置属性。尽管如此,如上所述,用户应避免使用使用Hadoop的前缀:hadoop, io, ipc, fs, net, file, ftp, s3, kfs, ha, file, dfs, mapred, mapreduce, yarn.

目录结构
源代码,工具(源和测试),用户日志,配置文件,output 和 job history ,存储在本地磁盘或则hdfs.改变。改变用户访问文件的目录结构破坏兼容性,即使源路径通过 symbolic links保存。(如果,例如servlet访问路径,被配置为不遵循符号链接)

Policy
布局的源代码和生成的构件可以随时更改,特别是跨主要版本。在主要版本中,开发者尝试(没有保证)保存目录结构;尽管如此,独立的文件可以被添加/移除/删除。最好的方式是补丁与提交的Apache源码树的源码保持同步。

目录结构,配置文件,用户日志,job history被保存在一个主版本内跨越小版本和发布点(point releases)

Java Classpath
用户应用程序构建可能添加所有的hadoop jars(包括hadoop 库依赖)到应用程序classpath。添加新的依赖或则升级已存在的依赖可能影响这些应用程序的classpaths
Policy
当前没有策略,hadoop依赖可以改变。

环境变量

用户和相关项目经常使用导出的环境变量(如HADOOP_CONF_DIR),因此,删除或重命名的环境变量是一个不相容的改变。

Policy
当环境变量改变,没有Policy。开发者在版本中尝试限制改变。

构建构件

hadoop使用maven管理项目,更改构件会影响现在的用户工作流。

Policy

测试构件:测试jars产生内部使用非常严格的,不希望在hadoop外部使用,类似APIs注释@Private, @Unstable.
构建构件:hadoop客户端构件 (maven groupId:artifactId)在主版本中保持兼容性,其它构件可以以不兼容的方式改变。

硬件/软件需求
跟上硬件的最新进展,操作系统,JVMs,和其他软件,新的hadoop发行版或则他们的一些新的功能需要同样的更高版本。对于特定的环境,升级Hadoop可能需要升级相关的软件组件。

Policies

硬件:
1.结构:社区有没有计划对Hadoop的具体结构,但可以有家族特定的优化。
2.最少资源:在hadoop守护进程所需的资源没有保证期间,社区尝试不增加需求在发布的小版本内。

操作系统:在小版本中,社区将试图保持相同的操作系统的要求(OS内核版本)。当前GNU/Linux和Microsoft Windows 是官方支持的,社区hadoop工作的相当不错也在其它操作系统比如Apple MacOSX, Solaris 等.
JVM不会改变跨点发布的同一个小版本内,除非如果JVM版本变的不支持。Minor/major版本以后可能需要一些/所有的支持的操作系统的JVM。

其它软件:社区试图保持由Hadoop的所需的额外软件的最低版本。例如,SSH,Kerberos身份等。

参考:
下面是与主题相关的一些相关JIRAs和pages:
Here are some relevant JIRAs and pages related to the topic:











没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条