工作记录
知识研究
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 HDFS(Hadoop Distributed File System)是CDH中的一个核心组件,它是一个可扩展的分布式文件系统,用于存储大规模的数据文件。HDFS通过将文件切分为多个块,并将这些块分布在不同的计算节点上,实现了高可用性和高性能的文件存储。
Hadoop YARN
Hadoop YARN(Yet Another Resource Negotiator)是CDH中的另一个核心组件,它是一个资源管理器,负责对集群中的计算资源进行统一管理和调度。YARN可以根据应用程序的需求,动态分配计算资源,实现任务的高效执行。
Hadoop MapReduce
Hadoop MapReduce 是CDH中用于分布式计算的编程模型和框架,它将大规模的数据切分为多个小任务,并在集群中的计算节点上并行执行这些任务。MapReduce可以实现大规模数据的处理和分析,支持复杂的数据转换和计算操作。
HBase
HBase是CDH的一个分布式数据库,它基于Hadoop HDFS存储数据,并提高性能的随机读写能力。HBase适用于需要快速访问和查询大规模数据的场景,如日志分析、推荐系统等
Hive
Hive是CDH中的一个数据仓库工具,它提供了类似于SQL的查询语言(HiveSQL),它可以将结构化的数据映射到Hadoop集群中的文件,并支持高性能的数据查询和分析。Hive可以方便地进行数据的ETL(Extract、Transform、Load)操作,适用于数据分析和报表生成等任务
Impala
Impala是CDH中的一个交互式查询引擎,它可以直接访问存储在Hadoop HDFS和HBase中的数据,并提供类似于SQL的查询语言。Impala通过在内存中执行查询操作,实现了低延迟的数据查询和分析,适用于实时数据处理和探索性数据分析等场景。
Sqoop
Sqoop是CDH中的数据导入导出工具,它可以将关系型数据库(如Mysql、Oracle等)中的数据导入到Hadoop集群中的HDFS或HBase中,也可以将Hadoop集群中的数据导出到关系型数据库中。Sqoop支持自动化的数据传输和转换,方便进行数据的迁移和集成。
Flume
Flume是CDH中的一个日志收集和传输工具,它可以实时地将分布在不同计算节点上的日志数据收集到中央存储(如HDFS)中。Flume支持灵活的数据流管道配置,可以根据需求进行数据过滤、转换和路由操作,适用于大规模分布式系统的日志管理。
ZooKeeper
ZooKeeper是CDH中的一个分布式协调服务,它可以实现分布式系统中的数据一致性和协同操作。ZooKeeper提供了高可用性和高性能的数据存储和访问接口,可以用于分布式锁、配置管理、命名服务等场景。
Spark
Spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。最早Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架。是一种基于内存的分布式并行计算框架,不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍
Pig(ad-hoc脚本)
由yahoo开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具。Pig定义了一种数据流语言—Pig Latin,它是MapReduce编程的复杂性的抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。其编译器将Pig Latin翻译成MapReduce程序序列将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。
Oozie
Oozie是CDH中的一个工作流调度和协调工具,它可以将多个Hadoop任务组织成一个工作流,并按照指定的时间和依赖关系进行调度执行。Oozie支持复杂的任务依赖关系和条件触发,可以实现数据处理和分析的自动化流程控制。
CM(Cloudera Manager)
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。
CM功能
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 管理器
Cloudera Manager服务器存储要求
基于主机的Cloudera Manager服务器要求
在较小的集群上,Cloudera Manager 服务器和数据库可以共享一个主机。在较大的集群上,它们必须在单独的专用集群上运行主机
具有HDFS、YARN或Impala的集群
对于具有辅助角色的唯一服务是 HDFS、YARN 或 Impala 的集群,请使用此表中的建议。
使用HBase,Solr、Kafka或Kudu的集群
在群集中部署 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 磁盘专用于报告管理器。
代理主机
事件服务器
警报发布者
Cloudera 导航器
Cloudera 数据科学工作台
CDH
Flume
HDFS
HBase
Hive
Spark Executor 节点上的Hive
HSM KMS
HUE
Impala
Impala 的大小调整要求可能会因使用 Impala 的工作负载的大小和类型而有很大差异
Kafka
Kafka 需要相当少量的资源,尤其是在进行一些配置调整时。默认情况下,Kafka 可以在低至 1 个内核和 1GB 内存上运行,并具有存储 根据数据保留要求进行扩展。
CPU 很少成为瓶颈,因为 Kafka 的 I/O 量很大,但具有足够线程的中等大小的 CPU 对于处理并发连接和后台仍然很重要 任务。
组网要求:千兆以太网或 10 千兆以太网。避免跨多个数据中心的集群。
Key Trustee Server
Key Trustee KMS
Kudu
Oozie
其他调整:
对于具有许多协调器且使用复杂工作流运行的工作负载(日志中显示已达到最大并发性警告,并且 Oozie 命令显示大型队列):admin -queuedump
· 将属性的值增加到 50。oozie.service.CallableQueueService.callable.concurrency
· 将属性的值增加到 200。oozie.service.CallableQueueService.threads
不要将 Derby 数据库用作 Oozie 的后端数据库。
Search
Sentry
Spark
YARN
ZooKeeper
操作系统要求
CDH 和 Cloudera Manager 支持的操作系统
CDH 为与 RHEL 兼容的 SLES 和 Ubuntu 操作系统的特定版本提供 64 位软件包。
数据库要求
目前支持的数据库有Mysql,MariaDB,PostgreSQL,Oracle,支持的各个数据库版本信息和对应的CDH版本信息如下:
Java要求
仅支持 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 重新启动应用程序,以使更改生效。
网络和安全要求
CDH 和 Cloudera Manager 支持的传输层安全版本
指示的传输层安全性 (TLS) 版本支持以下组件:
CDH和ClouderaManager网络和安全要求
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 级别(保护静态数据和传输中的数据)
Entropy要求
加密操作需要熵来确保随机性。
可以通过运行以下命令来检查 Linux 系统上的可用熵:
cat /proc/sys/kernel/random/entropy_avail
输出显示当前可用的熵。多次检查熵以确定系统上熵池的状态。如果熵始终较低(500 或更少),您必须通过安装和启动服务来增加它。在 RHEL 6 兼容上运行以下命令:
对于 RHEL 7,请运行以下命令:
确保运行 Key Trustee Server、Key Trustee KMS 和 Navigator Encrypt 的主机具有足够的熵来执行加密操作。
Cloudera Manager 要求
使用 Cloudera Manager 安装和管理 Key Trustee Server 需要 Cloudera Manager 5.4.0 及更高版本。Key Trustee Server 不需要 Cloudera Navigator Audit Server 或 元数据服务器。
umask 要求
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








