工作记录
知识研究
CDH概览
CDH(Cloudera Distribution Including Apache Hadoop)是由Cloudera公司提供的一个集成了Apache Hadoop以及相关生态系统的发行版本。CDH是一个大数据平台,简化和加速了大数据处理分析的部署和管理。CDH提供Hadoop的核心元素-可伸缩存储和分布式计算-以及基于web的用户界面和重要的企业功能。CDH是Apache许可的开放源码,是唯一提供统一批处理、交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。
Hadoop是一种分布式系统基础架构,是大数据处理和数据存储的主要技术之一。它具有高效可靠、弹性伸缩等特点,包括三个核心组件:HDFS、MapReduce 和 YARN,在大数据处理、数据挖掘、机器学习等领域得到了广泛的应用。
Hadoop的特点:
优点
1、支持超大文件。HDFS存储的文件可以支持TB和PB级别的数据。
2、检测和快速应对硬件故障。数据备份机制,NameNode通过心跳机制来检测DataNode是否还存在。
3、高扩展性。可建构在廉价机上,实现线性(横向)扩展,当集群增加新节点之后,NameNode也可以感知,将数据分发和备份到相应的节点上。
4、成熟的生态圈。借助开源的力量,围绕Hadoop衍生的一些小工具
缺点:
1、不能做到低延迟。高数据吞吐量做了优化,牺牲了获取数据的延迟。
2、不适合大量的小文件存储。
3、文件修改效率低。HDFS适合一次写入,多次读取的场景。
Hadoop 的核心架构包括三个组件:
1. HDFS:HDFS 是 Hadoop 的分布式文件系统,能够将大文件划分为多个块并存储在多个节点上,实现数据的备份和容错,具有高度容错性和高吞吐量等特点,适合在廉价的机器上部署;
2. MapReduce:MapReduce 是一种分布式编程模型,能够将大规模数据进行并行处理,适用于大规模数据分析和处理;
3. 3. YARN:YARN 是 Hadoop 的资源管理器,可以动态地分配资源和管理任务,提高计算集群的利用率和效率
灵活性:存储任何类型的数据并使用各种不同的计算框架进行操作,包括批处理、交互式SQL、免费文本搜索、机器学习和统计计算。
集成:能够快速集成和运行一个完整的Hadoop平台,适用于各种不同的硬件和软件。
安全:处理和控制敏感数据。
扩展性:能够部署多种应用,并扩展和扩充它们以满足你的需求。 高可用性:可以放心地用于关键的商业任务。
兼容性:兼容现有的基础设施和资源
CDH是一个强大的商业版数据中心管理工具,提供了以下功能:
1.提供了各种能够快速稳定运行的数据计算框架,如Spark;
2.使用Apache Impala做为对HDFS、HBase的高性能SQL查询引擎;
3.使用Hive数据仓库工具帮助用户分析数据;
4.提供CM安装HBase分布式列式NoSQL数据库;
5.包含原生的Hadoop搜索引擎以及Cloudera Navigator Optimizer去对Hadoop上的计算任务进行一个可视化的协调优化,提高运行效率;
6.提供的各种软件能让用户在一个可视化的UI界面中方便地管理、配置和监控Hadoop以及其它所有相关组件,并有一定的容错容灾处理;
7.提供了基于角色的访问控制安全管理。
原生Hadoop的问题
1.版本管理过于混乱
2.部署过程较为繁琐,升级难度较大
3.兼容性差
4.安全性低
CDH优点
1. 提供基于web的用户界面,操作方便
2、集成的组件丰富,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop
3、搭建容易,运维比原生hadoop方便。简化了大数据平台的安装和使用难度
4、版本划分清晰、更新速度快、文档清晰、支持多种安装方式、支持Kerberos安全认证等
CDH组件见下图
CDH作为一套开源的大数据处理平台,包含了许多不同的组件,每个组件都有各自的功能和特点。下面大概介绍下各个组件的功能和用途。
Hadoop HDFS(Hadoop Distributed File System)是CDH中的一个核心组件,它是一个可扩展的分布式文件系统,用于存储大规模的数据文件。HDFS通过将文件切分为多个块,并将这些块分布在不同的计算节点上,实现了高可用性和高性能的文件存储。
Hadoop YARN(Yet Another Resource Negotiator)是CDH中的另一个核心组件,它是一个资源管理器,负责对集群中的计算资源进行统一管理和调度。YARN可以根据应用程序的需求,动态分配计算资源,实现任务的高效执行。
Hadoop MapReduce 是CDH中用于分布式计算的编程模型和框架,它将大规模的数据切分为多个小任务,并在集群中的计算节点上并行执行这些任务。MapReduce可以实现大规模数据的处理和分析,支持复杂的数据转换和计算操作。
HBase是CDH的一个分布式数据库,它基于Hadoop HDFS存储数据,并提高性能的随机读写能力。HBase适用于需要快速访问和查询大规模数据的场景,如日志分析、推荐系统等
Hive是CDH中的一个数据仓库工具,它提供了类似于SQL的查询语言(HiveSQL),它可以将结构化的数据映射到Hadoop集群中的文件,并支持高性能的数据查询和分析。Hive可以方便地进行数据的ETL(Extract、Transform、Load)操作,适用于数据分析和报表生成等任务
Impala是CDH中的一个交互式查询引擎,它可以直接访问存储在Hadoop HDFS和HBase中的数据,并提供类似于SQL的查询语言。Impala通过在内存中执行查询操作,实现了低延迟的数据查询和分析,适用于实时数据处理和探索性数据分析等场景。
Sqoop是CDH中的数据导入导出工具,它可以将关系型数据库(如Mysql、Oracle等)中的数据导入到Hadoop集群中的HDFS或HBase中,也可以将Hadoop集群中的数据导出到关系型数据库中。Sqoop支持自动化的数据传输和转换,方便进行数据的迁移和集成。
Flume是CDH中的一个日志收集和传输工具,它可以实时地将分布在不同计算节点上的日志数据收集到中央存储(如HDFS)中。Flume支持灵活的数据流管道配置,可以根据需求进行数据过滤、转换和路由操作,适用于大规模分布式系统的日志管理。
ZooKeeper是CDH中的一个分布式协调服务,它可以实现分布式系统中的数据一致性和协同操作。ZooKeeper提供了高可用性和高性能的数据存储和访问接口,可以用于分布式锁、配置管理、命名服务等场景。
Spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。最早Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架。是一种基于内存的分布式并行计算框架,不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍
由yahoo开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具。Pig定义了一种数据流语言—Pig Latin,它是MapReduce编程的复杂性的抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。其编译器将Pig Latin翻译成MapReduce程序序列将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。
Oozie是CDH中的一个工作流调度和协调工具,它可以将多个Hadoop任务组织成一个工作流,并按照指定的时间和依赖关系进行调度执行。Oozie支持复杂的任务依赖关系和条件触发,可以实现数据处理和分析的自动化流程控制。
CDH分为Cloudera Manager管理平台(CM)和CDH parcel(parcel包含各种组件的安装包),需要先安装CM,再安装parcel
CM(Cloudera Manager)提供了一个管理和监控Hadoop等大数据服务的web界面,能让我们方便安装大数据生态圈的大部分服务。
CM(Cloudera Manager),管理CDH端到端的应用。CM通过对CDH集群的各部分提供精细的可视化和控制,建立了企业级部署的标准,增强了操作人员的能力以提升性能、提升服务质量、提高合规性、降低管理成本,其具有以下功能:
1、 管理:对集群进行管理,例如添加、删除节点等操作。
2、 监控:监控集群的健康情况,对设置的各种指标和系统的具体运行情况进行全面的监控。
3、 诊断:对集群出现的各种问题进行诊断,并且给出建议和解决方案。
4、 集成:多组件可以进行版本兼容间的整合。
其核心是管理服务器Cloudera Manager Server,该服务器承载管理控制台的Web服务器和应用程序逻辑,并负责安装软件,配置,启动和停止服务,以及管理上的服务运行群集。
Cloudera Manager Server与以下几个组件一起工作:
Agent(代理):安装在每台主机上。该代理负责启动和停止的过程,拆包配置,触发装置和监控主机。
Management Service:由一组执行各种监控,警报和报告功能角色的服务。
Database:存储配置和监视信息。通常情况下,多个逻辑数据库在一个或多个数据库服务器上运行。
Cloudera Repository:软件由Cloudera 管理分布存储库。
Clients:是用于与服务器进行交互的接口。
Admin Console :基于Web的用户界面与管理员管理集群和Cloudera管理。
API :与开发人员创建自定义的Cloudera Manager应用程序的API。
1. 状态管理
Cloudera Manager Server维护了集群的各种状态。状态可以分为两类:模块和运行时,两者存储于Cloudera Manager Server的数据库中。
模块中包含集群、主机、服务、配置。运行时包含进程、命令。
2. 配置管理
CM在多个层面定义了配置,如:
服务层面:可定义整个服务实例层面的配置,如HDFS服务的默认副本因子。
角色组层面:可定义某个角色组的配置,如DataNode的处理线程数量,可根据DataNodes的不同分组进行不同的配置。
角色层面:可覆盖从角色组层面继承的配置。这种配置需要谨慎使用,因为会造成角色组中的配置分歧。如因为排错需求临时启用某个角色实例的DEBUG日志。
主机层面:根据监控、软件管理、资源管理的不同有不同的配置。
CM自身也有很多与管理操作相关的配置
3. 进程管理
非CM管理的集群使用脚本进行角色进程的启动,但在CM管理的集群中这类脚本不起作用。
CM管理的集群中,只能使用CM进行角色进程的启停。CM使用开源的进程管理工具名为supervisord,其会启动进程、重定向日志、通知进程失 败、为进程设置正确的用户ID等等。CM支持自动重启一个崩溃的进程。 如果一个进程在启动后频繁崩溃,还会被打上非健康标记。
停止CMS和CM代理不会使正在运行的进程被中止。
4. 软件包管理
CM支持两种软件分发格式:packages和parcels。
packages是一种二进制分发格式,包含编译的代码和元数据如包 述、版本、依赖项。包管理系统评估此元数据以允许包搜索、执行升级、确保包的所有依赖关系得到满足。CM使用本地操作系统支持的包管理程序。
parcel也是一种二进制分发格式,包含CM需要使用的附加元数据。其与package的区别有:可安装同一个parcel的多个版本,并激活其中一个; parcel可安装到任何路径;通过parcel安装,CM会自动下载并激活和每 个节点操作系统版本匹配的parcel包,解决某些操作系统版本不一致问题。
5. 主机管理
CM 供了多种功能以管理Hadoop集群的主机。第一次运行CM管理员控制台时,可搜索主机并添加到集群,一旦选中了主机就可以为其分配CDH 角色。CM会在主机上自动部署作为集群托管节点的所有软件:JDK,CM 代理,CDH,Impala,Solr等等。
服务部署并运行后,管理员控制台中的“Hosts”区域显示集群中托管 主机的总体状态。 供的信息包括主机上的CDH版本、主机所属的集群、 运行在主机上的角色的数量。Cloudera管理服务中的主机监控角色执行 健康检查并收集主机的统计信息,以允许你监控主机的健康和性能。
6. 资源管理
CM允许使用两种资源管理方式:
静态资源池:使用Linux cgroups在多个服务间静态地进行资源隔离,如 HBase、Impala、YARN分别使用一定百分比的资源。静态资源池默认不启 用。
动态资源池:用于某些服务内部的资源管理,如YARN的各种资源调度器; Impala也可对不同池中的查询动态分配资源。
7. 用户管理
访问CM通过用户账户进行控制。用户账户标识如何对用户进行身份验证,并确定授予用户的权限。
CM 供了多种用户认证机制。可以配置CM使用CM数据库认证用户,或使用某种外部认证服务。外部认证服务可以是LDAP服务器,或者指定的其 他服务。CM还支持使用安全断言标记语言(SAML)来实现单点登录。
8. 安全管理
认证:认证是指用户或服务证明其有访问某种系统资源的权限。Cloudera集群支持操作系统账号认证、LDAP、Kerberos等认证方式。LDAP和Kerberos并不是互斥的,很多时候可以一起使用。
授权:授权关注谁可以存取或控制指定的资源或服务。CDH目前支持以 下几种权限控制:传统的POSIX形式的目录和文件权限控制;HDFS扩展 的ACL细粒度权限控制;HBase可对用户和组设置各种操作的ACL;使用Apache Sentry进行基于角色的权限控制。
加密:集群不同层面存储和传输的数据支持不同的加密方式。
9. 管理服务
Cloudera Management Service实现了多种管理特性,包括活动监控、主机监控、服务监控、事件服务、告警发布、报表管理等。
目前官网上有cdh6版本和cdh5版本
Cdh6版本
地址:
https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_6_download.html
Cdh5版本
地址:
https://docs.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_cdh_download.html
CDH6相对于CDH5是一次各个组件的大版本升级,新增了很多功能,同时各个组件也修复了大量已知的问题和安全漏洞。比如HDFS的纠删码用于冷数据降低存储成本又保证了数据的可用性,NameNode和YARN的联邦解决大规模集群的性能瓶颈问题,YARN引入GPU支持等。长远来看,从Hadoop2升级到Hadoop3或者从CDH5升级到CDH6是必须的,Cloudera的开发重心也转移到Hadoop3或CDH6上,而CDH5则主要以维护和修复bug为主。
下面是CDH5最新版本和CDH6最新版本的各个组件的支持情况
在企业数据中心中,Cloudera Manager 和 CDH 与多个产品(如 Apache Accumulo、Apache Impala、Hue、Cloudera Search 和 Cloudera Navigator)进行交互。必须考虑 Cloudera Manager 和 CDH 不同发行版本之间的兼容性,尤其是在执行安装/升级过程时。
下面是CDH6的要求和支持的版本信息
在较小的集群上,Cloudera Manager 服务器和数据库可以共享一个主机。在较大的集群上,它们必须在单独的专用集群上运行主机
对于具有辅助角色的唯一服务是 HDFS、YARN 或 Impala 的集群,请使用此表中的建议。
在群集中部署 HBase、Solr、Kafka 或 Kudu 等服务时,请使用这些建议。这些服务通常具有大量受监视的实体。
服务监视器可能是资源最密集的服务,需要特别注意。服务监视器要求基于受监视的数量实体。若要查看受监视实体的数量可以打开 Cloudera Manager 管理控制台,然后单击 Cloudera Management >集群 服务,查找 Cloudera Management Service Monitored Entities 图表,在此图标中查看。确保至少有 25 GB 的磁盘空间可用于 Host Monitor、Service Monitor、Reports Manager 和 Events Server 数据库。
报告管理器定期从 NameNode 获取 fsimage。它读取 fsimage 并为其创建一个 Lucene 索引。为了提高索引性能,Cloudera 建议置备尽可能强大的主机,并将 SSD 磁盘专用于报告管理器。
Impala 的大小调整要求可能会因使用 Impala 的工作负载的大小和类型而有很大差异
Kafka 需要相当少量的资源,尤其是在进行一些配置调整时。默认情况下,Kafka 可以在低至 1 个内核和 1GB 内存上运行,并具有存储 根据数据保留要求进行扩展。
CPU 很少成为瓶颈,因为 Kafka 的 I/O 量很大,但具有足够线程的中等大小的 CPU 对于处理并发连接和后台仍然很重要 任务。
组网要求:千兆以太网或 10 千兆以太网。避免跨多个数据中心的集群。
其他调整:
对于具有许多协调器且使用复杂工作流运行的工作负载(日志中显示已达到最大并发性警告,并且 Oozie 命令显示大型队列):admin -queuedump
· 将属性的值增加到 50。oozie.service.CallableQueueService.callable.concurrency
· 将属性的值增加到 200。oozie.service.CallableQueueService.threads
不要将 Derby 数据库用作 Oozie 的后端数据库。
CDH 和 Cloudera Manager 支持的操作系统
CDH 为与 RHEL 兼容的 SLES 和 Ubuntu 操作系统的特定版本提供 64 位软件包。
目前支持的数据库有Mysql,MariaDB,PostgreSQL,Oracle,支持的各个数据库版本信息和对应的CDH版本信息如下:
仅支持 64 位 JDK。Cloudera Manager 6 和 CDH 6 不支持 JDK 7。
不支持在不同 JDK 版本的同一集群中运行 CDH 节点。所有群集主机必须使用相同的 JDK 更新级别。
注意
JDK 8u271、JDK 8u281 和 JDK 8u291 可能会由于 JDK-8245417 和 JDK-8256818 而导致套接字泄漏问题。请注意 JDK 的构建版本,因为一些后续构建被固定为 在 JDK-8256818 中进行了描述。
解决办法:考虑使用较新版本的 JDK(如 8u282)或已修复问题的 JDK 内部版本。
不支持 JDK 8u40、8u45 和 8u60,因为 JDK 问题会影响 CDH 功能:JDK 8u40 和 8u45 受 JDK-8077155 影响,这会影响 HTTP 身份验证 对于某些 Web UI。JDK 8u60 与 AWS 开发工具包不兼容,并导致 DistCP 出现问题。
Hue 中的 Oozie 工作流图形显示无法与 低于 8U40 的JDK版本 一起正常工作 。
重要:
对于在使用 Kerberos 的集群上运行的 JDK 8u241 及更高版本,必须通过设置 来禁用引用。sun.security.krb5.disableReferrals=true
例如,使用 OpenJDK 1.8.0u242:
1. 使用文本编辑器打开。/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/lib/security/java.security
2. 添加(它可以位于文件的底部)。sun.security.krb5.disableReferrals=true
3. 在具有受影响的 JDK 版本的每个节点上添加此属性。
4. 使用 JDK 重新启动应用程序,以使更改生效。
指示的传输层安全性 (TLS) 版本支持以下组件:
Cloudera Manager 部署中的主机必须满足以下网络和安全要求:
网络协议支持:CDH 需要 IPv4。不支持 IPv6,必须禁用
多宿主支持
熵:静态数据加密需要足够的熵来确保随机性。
群集主机必须具有正常工作的网络名称解析系统和格式正确的文件。所有群集主机都必须已正确配置 通过 DNS 进行正向和反向主机解析。文件必须:1.包含有关所有主机的主机名和 IP 地址的一致信息2.不包含大写主机名3.不包含重复的 IP 地址
群集主机不得在配置 DNS 中或配置 DNS 时使用别名。格式正确的文件(/etc/hosts/etc/hosts)应该 类似于以下示例:
127.0.0.1 localhost.localdomain localhost
192.168.1.1 http://cluster-01.example.com cluster-01
192.168.1.2 http://cluster-02.example.com cluster-02
192.168.1.3 http://cluster-03.example.com cluster-03
· 必须禁用或配置防火墙,以允许访问 Cloudera Manager、CDH 和相关服务使用的端口。
· 对于 RHEL 和 CentOS,每个主机上的文件必须包含正确的主机名。/etc/sysconfig/network
Cloudera Manager 和 CDH 使用多个用户帐户和组来完成其任务
Cloudera Manager、CDH 和托管服务创建并使用以下帐户和 组:
加密由多个组件组成,每个组件都有自己的要求。
静态数据加密保护可以在 Hadoop 中的多个级别应用:
1.操作系统文件系统级别
2.网络级
3.HDFS 级别(保护静态数据和传输中的数据)
加密操作需要熵来确保随机性。
可以通过运行以下命令来检查 Linux 系统上的可用熵:
cat /proc/sys/kernel/random/entropy_avail
输出显示当前可用的熵。多次检查熵以确定系统上熵池的状态。如果熵始终较低(500 或更少),您必须通过安装和启动服务来增加它。在 RHEL 6 兼容上运行以下命令:
对于 RHEL 7,请运行以下命令:
确保运行 Key Trustee Server、Key Trustee KMS 和 Navigator Encrypt 的主机具有足够的熵来执行加密操作。
使用 Cloudera Manager 安装和管理 Key Trustee Server 需要 Cloudera Manager 5.4.0 及更高版本。Key Trustee Server 不需要 Cloudera Navigator Audit Server 或 元数据服务器。
Key Trustee Server 安装需要缺省值。
网络要求
对于新的 Key Trustee Server 安装(5.4.0 及更高版本),Key Trustee Server 需要以下 TCP 端口 为入站流量开放:
11371:客户端通过 HTTPS 连接到此端口。
11381 (PostgreSQL)被动密钥受托人服务器连接到此端口以进行数据库复制。
TLS证书要求
为确保网络流量安全,Cloudera 建议获取特定于密钥受托人服务器主机名的传输层安全性 (TLS) 证书。要获取 证书,则为 Key Trustee Server 主机的完全限定域名 (FQDN) 生成证书签名请求 (CSR)。CSR 必须由受信任的证书颁发机构 (CA) 签名。 在 CA 验证和签署证书后,密钥受托人服务器 TLS 配置需要:
http://1.CA 签名的证书
2.用于生成原始 CSR 的私钥
3.中间证书/链文件(由 CA 提供)
Cloudera 建议不要使用自签名证书。如果使用自签名证书,则必须在注册时使用该参数 Navigator 使用密钥受托人服务器进行加密。这将跳过 TLS 主机名验证,可能会出现某些网络级攻击。
Cloudera Manager、Cloudera Navigator 和 Hue 在两个最新的 LTS (long term support) 或 ESR(扩展支持版本)浏览器上受支持。Cookie 和 JavaScript 必须 启用。
重要:要查看 Hue Web UI 中的所有图标,使用 IE 和 HTTPS 的用户必须添加负载平衡器。
· Chrome: 63 、
· Firefox: 59
· Safari(仅限 Mac)
· Internet Explorer: 11
· Microsoft Edge: 41