hadoop3版本哪个兼容性好一点?

2021-02-25 19:19发布

8条回答
小磊子
2楼 · 2021-02-26 10:17

一. 与其他组件的兼容性版本


目前依赖hadoop的常用组件有spark、 hive、hbase 等. 目前只调研hive 和 hbase 这两个重要组件。


参考组件的官网发布信息,一般每个版本的发布信息会说明已经支持那个hadoop版本的底层服务,说明


已经经过官网比较系统的测试了。


1.1 hive:


摘录官网的信息:


1 November 2018: release 3.1.1 available

This release works with Hadoop 3.x.y. You can look at the complete JIRA change log for this release.


30 July 2018: release 3.1.0 available

This release works with Hadoop 3.x.y. You can look at the complete JIRA change log for this release.


21 May 2018 : release 3.0.0 available

This release works with Hadoop 3.x.y. The on-disk layout of Acid tables has changed with this release. Any Acid table partition that had Update/Delete/Merge statement executed since the last Major compaction must execute Major compaction before upgrading to 3.0. No more Update/Delete/Merge may be executed against these tables since the start of Major compaction. Not following this may lead to data corruption. Tables/partitions that only contain results of Insert statements are fully compatible and don't need to be compacted. You can look at the complete JIRA change log for this release.


 


可知,目前hive的三个罪行版本是支持hadoop3.x.y系列的,分别为:3.0.0、3.1.0、3.1.1。


 


1.2 hbase

 


参考hbase官网的支持矩阵:




可知,Hbase2.0.x 和 Hbase2.1.x支持hadoop3.0.3+、hadoop3.1.1+;


           Hbase2.1.x支持hadoop3.1.1+;


 


二. 与hadoop2版本的客户端的兼容性


目前测试可以兼容hadoop2的客户端(rpc兼容),可以继续使用, 但是一些新功能不能正常使用, 且一些shell脚本发生了很大变化。


樱田妮妮NiNi
3楼 · 2021-02-26 10:49

现在使用hadoop3.2.1和Hbase2.2.4,集群倒是启动了,各种不兼容的问题出现,比如wordcount直接没法用

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

好像都是log4j报出来的。。然后sqoop2和Phoenix也是没法用


三岁奶猫
4楼 · 2021-02-26 11:11

zookeeper,在hadoop,hbase,hive,zookeeper版本整合兼容性最全,最详细说明【适用于任何版本】中,zookeeper版本一般来讲越高越好。

敦敦宁
5楼 · 2021-02-26 11:28

一. 与其他组件的兼容性版本


目前依赖hadoop的常用组件有spark、 hive、hbase 等. 目前只调研hive 和 hbase 这两个重要组件。


参考组件的官网发布信息,一般每个版本的发布信息会说明已经支持那个hadoop版本的底层服务,说明


已经经过官网比较系统的测试了。


1.1 hive:


摘录官网的信息:


1 November 2018: release 3.1.1 available

This release works with Hadoop 3.x.y. You can look at the complete JIRA change log for this release.


30 July 2018: release 3.1.0 available

This release works with Hadoop 3.x.y. You can look at the complete JIRA change log for this release.


21 May 2018 : release 3.0.0 available

This release works with Hadoop 3.x.y. The on-disk layout of Acid tables has changed with this release. Any Acid table partition that had Update/Delete/Merge statement executed since the last Major compaction must execute Major compaction before upgrading to 3.0. No more Update/Delete/Merge may be executed against these tables since the start of Major compaction. Not following this may lead to data corruption. Tables/partitions that only contain results of Insert statements are fully compatible and don't need to be compacted. You can look at the complete JIRA change log for this release.


 


可知,目前hive的三个罪行版本是支持hadoop3.x.y系列的,分别为:3.0.0、3.1.0、3.1.1。


 


1.2 hbase

 


参考hbase官网的支持矩阵:




可知,Hbase2.0.x 和 Hbase2.1.x支持hadoop3.0.3+、hadoop3.1.1+;


           Hbase2.1.x支持hadoop3.1.1+;


 


二. 与hadoop2版本的客户端的兼容性


目前测试可以兼容hadoop2的客户端(rpc兼容),可以继续使用, 但是一些新功能不能正常使用, 且一些shell脚本发生了很大变化。



灰机带翅膀
6楼 · 2021-02-26 15:54

 相对于之前主要生产发布版本Hadoop 2,Apache Hadoop 3整合许多重要的增强功能。 Hadoop 3是一个可用版本,提供了稳定性和高质量的API,可以用于实际的产品开发。下面简要介绍一下Hadoop3的主要变化。

  • 最低Java版本要求从Java7变为Java8

    所有Hadoop的jar都是基于Java 8运行是版本进行编译执行的,仍在使用Java 7或更低Java版本的用户需要升级到Java 8。

  • HDFS支持纠删码(erasure coding)

    纠删码是一种比副本存储更节省存储空间的数据持久化存储方法。比如Reed-Solomon(10,4)标准编码技术只需要1.4倍的空间开销,而标准的HDFS副本技术则需要3倍的空间开销。由于纠删码额外开销主要在于重建和远程读写,它通常用来存储不经常使用的数据(冷数据)。另外,在使用这个新特性时,用户还需要考虑网络和CPU开销。

  • YARN时间线服务 v.2(YARN Timeline Service v.2)

    YARN Timeline Service v.2用来应对两个主要挑战:(1)提高时间线服务的可扩展性、可靠性,(2)通过引入流(flow)和聚合(aggregation)来增强可用性。为了替代Timeline Service v.1.x,YARN Timeline Service v.2 alpha 2被提出来,这样用户和开发者就可以进行测试,并提供反馈和建议,不过YARN Timeline Service v.2还只能用在测试容器中。

  • 重写Shell脚本

    Hadoop的shell脚本被重写,修补了许多长期存在的bug,并增加了一些新的特性。

  • 覆盖客户端的jar(Shaded client jars)

    在2.x版本中,hadoop-client Maven artifact配置将会拉取hadoop的传递依赖到hadoop应用程序的环境变量,这回带来传递依赖的版本和应用程序的版本相冲突的问题。

    HADOOP-11804 添加新 hadoop-client-api和hadoop-client-runtime artifcat,将hadoop的依赖隔离在一个单一Jar包中,也就避免hadoop依赖渗透到应用程序的类路径中。

  • 支持Opportunistic Containers和Distributed Scheduling

    ExecutionType概念被引入,这样一来,应用能够通过Opportunistic的一个执行类型来请求容器。即使在调度时,没有可用的资源,这种类型的容器也会分发给NM中执行程序。在这种情况下,容器将被放入NM的队列中,等待可用资源,以便执行。Opportunistic container优先级要比默认Guaranteedcontainer低,在需要的情况下,其资源会被抢占,以便Guaranteed container使用。这样就需要提高集群的使用率。

    Opportunistic container默认被中央RM分配,但是,目前已经增加分布式调度器的支持,该分布式调度器做为AMRProtocol解析器来实现。

  • MapReduce任务级本地优化

    MapReduce添加了映射输出收集器的本地化实现的支持。对于密集型的洗牌操作(shuffle-intensive)jobs,可以带来30%的性能提升。

  • 支持多余2个以上的NameNodes

    针对HDFS NameNode的高可用性,最初实现方式是提供一个活跃的(active)NameNode和一个备用的(Standby)NameNode。通过对3个JournalNode的法定数量的复制编辑,使得这种架构能够对系统中任何一个节点的故障进行容错。

    该功能能够通过运行更多备用NameNode来提供更高的容错性,满足一些部署的需求。比如,通过配置3个NameNode和5个JournalNode,集群能够实现两个节点故障的容错。

  • 修改了多重服务的默认端口

    在之前的Hadoop版本中,多重Hadoop服务的默认端口在Linux临时端口范围内容(32768-61000),这就意味着,在启动过程中,一些服务器由于端口冲突会启动失败。这些冲突端口已经从临时端口范围移除,NameNode、Secondary NameNode、DataNode和KMS会受到影响。我们的文档已经做了相应的修改,可以通过阅读发布说明 HDFS-9427和HADOOP-12811详细了解所有被修改的端口。

  • 提供文件系统连接器(filesystem connnector),支持Microsoft Azure Data Lake和Aliyun对象存储系统

    Hadoop支持和Microsoft Azure Data Lake和Aliyun对象存储系统集成,并将其作为Hadoop兼容的文件系统。

  • 数据节点内置平衡器(Intra-datanode balancer)

    在单一DataNode管理多个磁盘情况下,在执行普通的写操作时,每个磁盘用量比较平均。但是,当添加或者更换磁盘时,将会导致一个DataNode磁盘用量的严重不均衡。由于目前HDFS均衡器关注点在于DataNode之间(inter-),而不是intra-,所以不能处理这种不均衡情况。

    在hadoop3 中,通过DataNode内部均衡功能已经可以处理上述情况,可以通过hdfs diskbalancer ClI来调用。

  • 重写了守护进程和任务的堆管理机制

    针对Hadoop守护进程和MapReduce任务的堆管理机制,Hadoop3 做了一系列的修改。

    HADOOP-10950 引入配置守护进程堆大小的新方法。特别地,HADOOP_HEAPSIZE配置方式已经被弃用,可以根据主机的内存大小进行自动调整。

    MAPREDUCE-5785 简化了MAP的配置,减少了任务堆的大小,所以不需要再任务配置和Java可选项中明确指出需要的堆大小。已经明确指出堆大小的现有配置不会受到该改变的影响。

  • S3Gurad:为S3A文件系统客户端提供一致性和元数据缓存

    HADOOP-13345 为亚马逊S3存储的S3A客户端提供了可选特性:能够使用DynamoDB表作为文件和目录元数据的快速、一致性存储。

  • HDFS的基于路由器互联(HDFS Router-Based Federation)

    HDFS Router-Based Federation添加了一个RPC路由层,为多个HDFS命名空间提供了一个联合视图。这和现有的ViewFs、HDFS Federation功能类似,区别在于通过服务端管理表加载,而不是原来的客户端管理。从而简化了现存HDFS客户端接入federated cluster的操作

  • 基于API配置的Capacity Scheduler queue configuration

    OrgQueue扩展了capacity scheduler,提供了一种编程方法,该方法提供了一个REST API来修改配置,用户可以通过远程调用来修改队列配置。这样一来,队列的administer_queue ACL的管理员就可以实现自动化的队列配置管理。

  • YARN资源类型

    Yarn资源模型已经被一般化,可以支持用户自定义的可计算资源类型,而不仅仅是CPU和内存。比如,集群管理员可以定义像GPU数量,软件序列号、本地连接的存储的资源。然后,Yarn任务能够在这些可用资源上进行调度。


爱梦 - 拿来吧你
7楼 · 2021-12-06 09:39

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。

Apache版本最原始(最基础)的版本,对于入门学习最好。

Cloudera在大型互联网企业中用的较多。

Hortonworks文档较好。

Apache Hadoop

官网地址:http://hadoop.apache.org/releases.html

下载地址:https://archive.apache.org/dist/hadoop/common/

Cloudera Hadoop

官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html

下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/

(1)2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。

(2)2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support

(3)CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强。

(4)Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即是对Hadoop的技术支持。

(5)Cloudera的标价为每年每个节点4000美元。Cloudera开发并贡献了可实时处理大数据的Impala项目。

3. Hortonworks Hadoop

官网地址:https://hortonworks.com/products/data-center/hdp/

下载地址:https://hortonworks.com/downloads/#data-platform

(1)2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建。

(2)公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。

(3)雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官。

(4)Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari,一款开源的安装和管理系统。

(5)HCatalog,一个元数据管理系统,HCatalog现已集成到Facebook开源的Hive中。Hortonworks的Stinger开创性的极大的优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。

(6)Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Window Server和Windows Azure在内的Microsoft Windows平台上本地运行。定价以集群为基础,每10个节点每年为12500美元。


超甜的布丁
8楼 · 2021-12-06 15:08

目前Hadoop的发行版除了Apache的开源版本之外,还有华为发行版、Intel发行版、Cloudera发行版(CDH)、Hortonworks发行版(HDP)、MapR等,所有这些发行版均是基于Apache Hadoop衍生出来的,因为Apache Hadoop的开源协议允许任何人对其进行修改并作为开源或者商业产品发布。

国内大多数公司发行版是收费的,比如Intel发行版、华为发行版等。不收费的Hadoop版本主要有国外的四个,分别是Apache基金会hadoop、Cloudera版本(CDH)、Hortonworks版本(HDP)、MapR版本。

Apache社区版本优缺点

优点:

完全开源免费

社区活跃

文档、资料详实

缺点:

复杂的版本管理。版本管理比较混乱,各种版本层出不穷,让使用者不知所措。

复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下。

复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大。

复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题。

第三方发行版本(如CDH,HDP,MapR等)优缺点

优点:

基于Apache协议,100%开源。

版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4,CDH5等,后面加上补丁版本,如CDH4.1.0 patch level 923.142,表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch。

比Apache Hadoop在兼容性、安全性、稳定性上有增强。第三方发行版通常都经过了大量的测试验证,有众多部署实例,大量的运行到各种生产环境。

版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。

基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch

提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群。

运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。

缺点:

涉及到厂商锁定的问题。(可以通过技术解决)

总结

综上所述,考虑到大数据平台高效的部署和安装,中心化的配置管理,使用过程中的稳定性、兼容性、扩展性,以及未来较为简单、高效的运维,遇到问题低廉的解决成本。

建议使用第三方发行版本。

其中在第三发发行版中,国内应用较多的是Cloudera的CDH。大家也可以详细对比优缺点,根据自己的需要做选择。


汽水味的小盆友
9楼 · 2021-12-08 10:31

hadoop版本的选择是具备多样性的,理论上你可以选择Apache发行版,或者是国外的第三方发行版,当然也有国内的发行版可供选择。但对于入门级的新手而言,那些需要进行复杂环境部署的版本似乎不太适合,我们应该将学习的重点放在hadoop应用开发,而不是把研究的重点放在基础环境的安装。解决基础环境安装复杂问题的是我们这些做大数据底层技术开发的责任和义务。

如果要给hadoop入门级新手做一个hadoop版本的推荐,可以使用DKH的发行版hadoop。DKH标准版有三个不同的子版本:用于开发调试的单机版;支持三节点的学习版;支持五节点以上的标准服务器版。DKH-分布式SQL版有两个子版本:学习版和服务器版。入门级新手可以选择DKH标准版中的支持三节点的学习版。


相关问题推荐

  • 回答 10

    创建test文件夹hadoop fs -mkdir /test

  • 回答 7

    Hadoop的三大核心组件分别是:1、HDFS(Hadoop Distribute File System):hadoop的数据存储工具。2、YARN(Yet Another Resource Negotiator,另一种资源协调者):Hadoop 的资源管理器。3、Hadoop MapReduce:分布式计算框架。HDFS是一个高度容错性的系统,适合部...

  • 回答 18

    hbase依靠HDFS来存储底层数据。Hadoop分布式文件系统(HDFS)为HBase提供了高可靠性的底层存储支持,HBase中的所有数据文件都存储在Hadoop HDFS文件系统上。

  • 回答 24

    HBase分布式数据库具有如下的显著特点:容量大:HBase分布式数据库中的表可以存储成千上万的行和列组成的数据。面向列:HBase是面向列的存储和权限控制,并支持独立检索。列存储,其数据在表中是按照某列存储的,根据数据动态的增加列,并且可以单独对列进行...

  • 回答 19

    解决问题的层面不一样首先,Hadoop和Apache Spark两者都是大数据框架,但是各自存在的目的不尽相同。Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着您不需要购买和维护昂贵的服务...

  • 回答 14

    1、HBase写快读慢,HBase的读取时长通常是几毫秒,而Redis的读取时长通常是几十微秒。性能相差非常大。2、HBase和Redis都支持KV类型。但是Redis支持List、Set等更丰富的类型。3、Redis支持的数据量通常受内存限制,而HBase没有这个限制,可以存储远超内存大小...

  • 回答 15

    列式存储格式是指以列为单位存储数据的数据存储格式,相比于传统的行式存储格式,它具有压缩比高、读I/O少(此处指可避免无意义的读I/O)等优点,目前被广泛应用于各种存储引擎中。对于HBase而言,它并不是一个列式存储引擎,而是列簇式存储引擎,即同一列簇中...

  • 回答 14

    一、简单理解Hadoop是一个大象:一个hadoop集群主要包含三个主要的模块:Mapreduce,hdfs,yarn。mapreduce是一个分离在合并的计算框架,注意他不是一个集群,而是一个编程框架。hdfs是一个分布式文件系统,是一个分布式集群,用于存放数据。yarn集群是负责集群...

  • 回答 12

    01 网络公开数据集02 数据报采集03 网络爬虫04 日志收集05 社会调查06 业务数据集07 埋点采集08 传感器采集09 数据交易平台10 个人数据收集

  • 回答 9

    1 Hadoop 各个目录的解释bin:Hadoop管理脚本和使用脚本所在目录, sbin目录下的脚本都是使用此目录下的脚本实现的。etc:Hadoop的所有配置文件所在的目录,所有hadoop的配置在etc/hadoop目录下include:对外提供的库的头文件lib :对外提供的动态编程库和静态...

  • 回答 4

    HDFS存储机制,包括HDFS的写入过程和读取过程两个部分: 1、写入过程:  1)客户端向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。2)namenode返回是否可以上传。3)客户端请求第一个 block上传到哪几个datanode服务器上。4)nam...

  • Shuffle 发生在哪里?2021-04-28 20:11
    回答 4

    adoop核心:MapReduce原理。 MR的核心是shuffle,被称为奇迹发生的地方。 shuffle,弄乱,洗牌的意思。partition 分区,sort 排序,spill溢出,disk 磁盘下面是官方对shuffle的配图: phase 阶段,fetch 最终,merge 合并...

  • 回答 2

    Shuffle阶段分为两部分:Map端和Reduce端。一 map端shuffle过程;1-内存预排序:默认每个map有100M内存进行预排序(为了效率),超过阈值,会把内容写到磁盘;    此过程使用快速排序算法;2-根据key和reducer的数量进行分区和排序;首先根据数据所属的Parti...

  • 回答 3

    大数据时代需要1存储大量数据2快速的处理大量数据3从大量数据中进行分析 

  • Hadoop有哪几种模式?2021-04-27 20:20
    回答 3

    hadoop的四种模式。1、本地模式:本地模式就是解压源码包,不需要做任何的配置。通常用于开发调试,或者感受hadoop。2、伪分布模式:在学习当中一般都是使用这种模式,伪分布模式就是在一台机器的多个进程运行多个模块。虽然每一个模块都有相应的进程,但是却...

  • 回答 1

    进入和退出安全模式 [root@localhost bin]# ./hdfs dfsadmin -safemode enter15/08/03 07:26:24 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where ......

没有解决我的问题,去提问