Parcel是一种二进制分发格式,包含程序文件以及Cloudera Manager使用的其它元数据。安装包和Parcel之间的重要区别是:
- Parcel会被独立的安装在一个显示版本的文件夹中,这意味着你可以并行安装多个版本的Parcel。然后你在使用的时候将其中一个安装版本指定为活动版本。如果使用安装包的话,一次只能安装一个包,所以安装的包和活动的包没有区别。
- 滚动升级需要Parcels。
- 你可以在文件系统中的任何位置安装Parcel,它们默认安装在/opt/cloudera/parcels中。相反,软件包一般是安装在/usr/lib中。
- 当你从Parcels页面安装时,Cloudera Manager会在集群中的所有主机上选择对应操作系统的正确Parcel进行自动下载,分发和激活。集群中所有主机必须运行Cloudera支持的相同的大版本操作系统,比如都是Redhat7.x。Cloudera Manager必须在与其管理的至少一个集群相同的大版本操作系统版本上运行,Cloudera Support才会提供标准支持。集群中主机运行不同的次要版本(minor version)的风险被认为低于运行不同的大版本(major version)。Cloudera建议集群中所有主机运行完全相同的操作系统版本,主要为了方便故障排查跟进和提供专业支持。
注意Cloudera Manager管理Parcel,无需用户在文件系统中操作Parcel。如果你执行以下任何不受支持的操作,可能会导致集群中出现故障或意外情况:
- 安装自定义的RPM包,并将其保存到Cloudera Manager的Parcel目录。
- 下载Parcel并将其手动放置在Cloudera Manager的Parcel目录。
- 在Parcel的根目录或者其子目录手动添加、修改和删除文件。
1.Parcels的优势
由于其独特的属性,Parcel比安装包具有以下优势:
- 将Cloudera Runtime作为单个对象分发 - 不是为Cloudera Runtime的每个组件提供单独的安装包,而是作为单个对象分发。这使得将软件分发到没有联网的集群中更加容易。
- 内部一致性 - 所有Cloudera Runtime组件都匹配,消除了安装不同版本组件的可能性。
- 在/usr之外安装 - 在某些环境中,Hadoop管理员没有安装系统包的权限。使用Parcel,管理员可以安装到/opt或其他任何地方。注意对于Parcel,Cloudera Runtime的Library的路径是/opt/cloudera/parcels/CDH/lib,而不是通常的/usr/lib。不要将/usr/lib/中的元素链接到Parcel部署的路径,因为这些链接会导致区分两个路径的脚本不起作用。
- 不需要使用sudo安装Cloudera Runtime - Parcel安装由以root或其他用户身份运行的Cloudera Manager Agent处理,因此你可以在不使用sudo的情况下安装Cloudera Runtime。
- 解耦分发和激活 - 借助并行安装功能,你可以在切换新的Cloudera Runtime之前,还是使用旧的版本。这允许在不影响集群操作的情况下提前完成升级中最耗时的部分,从而减少停机时间。
- 滚动升级 - 使用安装包需要你关闭旧进程,升级包,然后启动新进程。如果遇到错误很难恢复,而且升级程序需要与安装包管理系统无缝集成才能无缝完成升级。而使用Parcel,你可以简单地通过修改重新启动每个进程时使用的Cloudera Runtime版本,就可以完成切换。你还可以通过滚动重启执行升级,服务角色会以正确的顺序重新启动并切换到新版本,以实现最小化服务中断。大版本的升级比如从CDH5升级到CDH6,需要完整的重新启动并规划停机窗口,因为版本之间变化太大。最后你还可以升级单台机的Parcel或者同时升级多台机器的Parcel。
- 升级管理 - Cloudera Manager管理CDH或Cloudera Runtime版本升级中的所有步骤。而如果使用软件安装包安装,Cloudera Manager仅能作用于初始安装。
- 附加组件 - Parcels不限于Cloudera Runtime,你还可以为第三方组件制作Parcel包。
- 兼容其他分发工具 - Cloudera Manager可以与用于下载和分发的其他工具比如Puppet一起使用。对于离线安装,你也可以手动下载Parcel包,然后通过Cloudera Manager将Parcel分发到集群。
2.Parcel生命周期
为了最小化集群的中断并实现Parcel的添加和升级,Parcel包括以下阶段:
- 已下载(Downloaded) - Parcel已经复制到Cloudera Manager Server的parcel目录,可用于分发到集群中的任何其他主机,你也可以将多个Parcel下载到Cloudera Manager Server。如果一个Cloudera Manager Server管理了多个集群,一个已下载的Parcel包则为出现在页面上按集群分类的不同区域。
- 已分发(Distributed) - Parcel已经被复制到集群的所有主机,各个组件也已经被解压缩。分发的Parcel包不会升级运行在集群中的组件,当前服务继续运行不变。你可以在集群中分发多个Parcel,分发Parcel也不需要能上外网。每个Cloudera Manager Agent从Cloudera Manager Server上的本地Parcel存储库下载Parcel。
- 已激活(Activated) - Parcel中组件的链接已经被创建,激活不会自动停止或重新启动当前服务。你可以在激活后重新启动服务,或者系统管理员确认何时执行该操作。
- 使用中(In Use) - 当你启动或者重新启动使用这些组件的服务时,集群主机上的Parcel组件就是正在使用中。
- 已停用(Deactivated) - 指向Parcel组件的链接已从集群主机中删除。
- 已移除(Removed) - Parcel组件已从集群主机中移除。
- 已删除(Deleted) - 从Cloudera Manager Server上的本地Parcel存储库中删除Parcel。
当有新Parcel可用时,Cloudera Manager会自动检测到,你可以将Cloudera Manager配置为自动下载和分发Parcel。
3.Parcel位置
Cloudera Manager Server上本地parcel目录的默认位置是/opt/cloudera/parcel-repo,也可以通过配置更改该位置。
托管主机上已分发的Parcel默认位置是/opt/cloudera/parcels。要更改此位置,可以在Cloudera Manager Agent的 /etc/cloudera-scm-agent/config.ini文件中设置 parcel_dir属性并重新启动Cloudera Manager Agent。
4.管理Parcels
在Cloudera Manager的‘Parcels’页面上,你可以管理Parcel的安装和激活,并确定在集群中运行哪个版本的Parcel,‘Parcels’页面上会显示被管理的parcel列表。Cloudera Manager显示每个Parcel的名称,版本和状态,以及对Parcel能进行的操作。
4.1.访问Parcels页面
通过执行以下操作之一访问Parcels页面:
- 单击顶部导航栏中的Parcel图标。
- 单击顶部导航栏中的Hosts,然后单击Parcels选项卡。
使用“Parcels”页面左侧的选择器过来显示的parcels:
- Location选择器 - 查看某个集群的可用的parcel,或者查看多个集群的可用parcel,或者查看远程可用的parcel。点击进入“Parcels”页面时,这个选择器默认选择远程可用(Available Remotely)。
- Filters选择器中的Error Status - 按错误状态限制显示数的Parcel列表。
- Filters选择器中的Parcel Name - 按Parcel名称限制显示数的Parcel列表。
- Filters选择器中的Status - 限制显示数的Parcel列表,列表包括已分发的parcels,未分发(Other)的parcels,和所有parcels。
当一个parcel下载好以后,它会出现在Cloudera Manager管理的每个集群的列表中,表明该parcel可以在这些集群上进行分发。Cloudera Manager Server上只有一份已下载parcel包的副本,当分发包完成后,Cloudera Manager会将parcel包复制到该集群的所有主机。
例如如果Cloudera Manager正在管理两个集群,则All Clusters页面中的行列出与两个集群有关的Parcel信息。Status列显示Parcel的当前状态,Version列显示有关Parcel的版本信息,单击information图标(小i图标)可以查看Parcel的发行说明。Action列显示你可以对Parcel执行的操作,例如下载、分发、删除、停用和从主机中移除。
4.2.下载Parcel
1.转到Parcels页面,在Location选择器中,点击ClusterName或者Available Remotely,可供下载的Parcel会显示“Available Remotely”状态或者“Download”按钮。
如果此处未显示你想要的Parcel,比如你想要升级到不是最新版本的CDH版本,你可以使用其他远程Parcel存储库,也可以配置使用本地的Parcel存储库位置或其他位置。
如果Parcel版本太新而无法被Cloudera Manager版本支持,Parcel会显示为红色背景并报错:
当你在Filters选择器的Error Status区域选择Error状态时,也会列出此类Parcel。
2.单击Download按钮,parcel会被下载到你本地的存储库,状态会更改为Downloading(正在下载)。
parcel下载完成后,它会从“Available Remotely”页面中移除。
4.3.分发Parcel
下载完成的Parcel可以分发到集群中的主机,并可供激活。Parcel被下载到Cloudera Manager Server,如果CM管理了多个集群,Parcel是对所有集群都可用的,当然你可以选择分发到特定的集群。
1.从Parcels页面左侧的Location选择器中,选择你想要分发Parcel的集群,或者选择All Clusters,打开Parcels页面默认选择的是第一个集群。
2.单击Distribute,状态会被更改为Distributing(正在分发),在分发期间,你可以:
- 单击Status列中的Details链接以查看Parcel Distribution Status页面,也就是查看Parcel分发的细节。
- 单击Cancel可以取消分发,分发操作完成后,按钮会变为Activate,你也可以单击Distributed状态链接查看状态页面。
分发不需要访问外网,集群主机上的Cloudera Manager Agent从Cloudera Manager Server上托管的本地parcel存储库下载 parcel。
如果你有很多主机需要分发Parcel,你可以设置Cloudera Manager分发的并行数量。
要删除准备分发的Parcel,单击Distribute按钮右端的三角形并选择Delete,这将从本地Parcel存储库中删除Parcel。
4.4.激活Parcel
已分发到集群中主机的Parcel可以被激活。
1.在Parcels页面的Location选择器中,选择ClusterName或All Clusters,然后单击Activate,这个操作会更新Cloudera Manager指向新的软件,但是需要重新启动服务才能生效,点击Activate后,会有一个弹窗提示必须重新启动哪些服务才能使用新Parcel。
2.选择以下选项之一:
- Restart - 激活Parcel并重新启动受新Parcel影响的服务。
- Activate Only - 仅激活Parcel,你可以选择其他时间窗口来重启服务,如果不重启服务,集群会依旧使用旧的Parcel。
3.点击OK。
激活新Parcel会停用之前用的Parcel,但是在重新启动服务前,之前的Parcel会显示Still in use状态,因为服务正在使用该Parcel,所以你也不能移除该Parcel。
如果你想要激活的Parcel仅仅只是更新了某个组件,你依旧需要重新启动所有服务,比如你的集群运行了HDFS,YARN,Oozie,Hue,Impala和Spark服务,而Parcel包仅仅只是更新了Oozie,弹出的提示框让你仅重启Oozie和Hue服务,但是在你重启其他服务之前,HDFS、YARN、Impala和Spark服务依旧使用的是旧的Parcel,直到你重新启动剩余的这些服务。
有时可能需要额外的升级步骤,在这种情况下,按钮将显示Upgrade而不是Activate。
4.5.停用Parcel
你也可以停用新激活的Parcel,它会让Cloudera Manager指向以前的Parcel版本,但是需要重新启动服务才会生效。在Parcels页面中,在Location选择器中选择ClusterName或All Clusters,然后单击激活的Parcel上的Deactivate按钮。
注意如果你只安装一个Parcel,停用该Parcel尝试重新启动服务时将会失败。
4.6.移除Parcel
在Parcels页面的Location选择器中,选择ClusterName或All Clusters,单击Activate按钮右侧的
,然后选择Remove from Hosts。
4.7.删除Parcel
在Parcels页面的Location选择器中,选择ClusterName或All Clusters,单击Distribute按钮右侧的
,然后选择Delete。注意除非你确认Parcel没有被任何Cloudera Manager管理的集群用到,否则不要轻易使用Delete选项,可以选择Remove from Hosts。
4.8.修改Parcel目录
Parcel目录的默认位置是/opt/cloudera/parcels,要将已分发的Parcel修改到不同的目录,可以执行以下操作:
1.停止所有服务。
2.停用所有正在使用的包裹。
3.停止所有主机上的 Cloudera Manager Agent服务。
4.将现有Parcel移动到新位置。
5.修改主机Parcel目录配置,参见“Parcel目录设置”章节。
6.启动 Cloudera Manager Agent服务。
7.激活Parcel。
8.启动所有服务。
4.9.常见问题
如果你在执行Parcel操作时遇到错误,请单击Parcel页面上的红色“X”图标会显示一条消息,指出错误的来源。
如果Parcel正在分发但一直未完成,请确保Parcel下载目录中有足够的可用空间,因为即使空间不足,Cloudera Manager也会尝试下载和解压缩Parcel。
5.查看Parcel使用
Parcel Usage页面显示集群中当前使用的Parcel,在大规模集群环境中,可以比较方便的跟踪集群安装的不同版本,尤其是部分主机在安装或者升级过程中出现问题,或者新扩容了几台主机,查看Parcel的使用情况页面:
1.执行以下操作之一:
- 单击左侧导航栏中的Parcel图标。
- 单击顶部导航栏中的Hosts,然后单击Parcel选项卡。
2.单击Parcel Usage按钮。
你可以按集群或按产品查看Parcel使用情况,你还可以仅查看运行活动Parcel的主机,或仅查看运行旧Parcel(不是当前活动Parcel)的主机,或两者同时查看。
右侧的正方形小方块代表集群中的每台主机,以及该主机上的Parcel状态。如果主机正在从当前激活的Parcel运行进程,则主机以蓝色指示。黑色方块表示一个Parcel已被激活,但所有正在运行的进程都来自早期版本的Parcel。例如如果你在激活新Parcel后没有重新启动服务或角色,则会发生这种情况。
将光标移动到以下位置可以查看主机分配的机架,不同机架上的主机显示在不同的行中。
要查看给主机上运行的Parcel版本,请单击代表主机的方块。
弹出窗口列出了在所选主机上运行的角色,单击角色会打开角色所在的页面,同时这个弹窗也显示了Parcel是否处于活动状态。
如果主机正在运行各种Parcel版本,则代表主机的正方形是一个四方形网格图标。当你将光标移到该主机上时,将显示活动和非活动组件。例如在下图中,较旧的CDH包已停用,但仅重新启动了HDFS服务。
6.Parcel配置设置
你可以配置Parcel在Cloudera Manager Server主机上的存储位置、Parcel存储库的URL、下载Parcel的代理服务器属性以及分发到集群主机的Parcel的存储位置。
6.1.配置Cloudera Manager Server Parcel设置
最低要求角色:Cluster Administrator,或者使用Full Administrator
1.使用以下方法之一打开Parcel设置页面:
- 导航栏
- 单击左侧导航栏中的Parcel图标,或单击Hosts,然后单击Parcel选项卡。
- 单击Configuration按钮。
- 菜单
- 选择Administration > Settings。
- 选择Category > Parcels。
2.指定一个属性
- Local Parcel Repository Path定义Cloudera Manager Server主机上存储下载Parcel的路径。
- Remote Parcel Repository URLs是Cloudera Manager检查包裹的存储库列表,默认情况下这里列出的是最新的CDP的下载地址,不过需要集群能上外网。当然你也可以自定义成自己本地的存储库。
添加一个Parcel存储库:
- 在Remote Parcel Repository URLs list中,单击添加符号会新增一行。
- 输入存储库的路径。
3.点击Save Changes。
你也可以:
- 设置Cloudera Manager检查新Parcel的频率。
- 配置代理以访问远程存储库。
- 配置在检测到新Parcel时是否应自动下载和分发Parcel。默认不启用自动下载和分发,需要转到Parcel页面启动这些操作。
- 如果启用自动下载,可以控制可以下载哪些产品。
- 控制是否保留下载的Parcel。
- 控制是否保留旧Parcel版本以及保留多少Parcel版本。
你可以通过配置带宽限制和并发上传数量来调整网络上的Parcel分发负载,默认值是50MB/s和10个并发Parcel上传(最大设设置为50),通过配置Parcel Distribution Rate Limit和Maximum Parcel Uploads来完成。
6.2.配置代理服务器
要配置代理服务器,将Parcel下载到Cloudera Manager Server并上传,请执行以下操作:
1.选择Administration > Settings。
2.单击Network类别。
3.配置代理属性。
4.输入Reason for change,然后单击Save Changes。
6.3.配置主机Parcel目录
如果你修改Parcel目录位置,请确保所有主机使用相同的位置,在不同主机上使用不同位置可能会导致意外。配置分布式Parcel的位置:
1.单击左侧导航栏中的Hosts。
2.单击Configuration选项卡。
3.选择Category > Parcels。
4.配置Parcel Directory属性的值,Cloudera Manager Agent配置文件中的parcel_dir属性设置会覆盖此设置。
5.输入Reason for change,然后单击Save Changes。
6.在所有主机上重新启动Cloudera Manager Agent。
6.4.配置Parcel的点对点分发
Cloudera Manager使用点对点(peer-to-peer)服务将Parcel有效地分发到集群主机,该服务默认启用并配置为在端口7191上运行。你可以更改此端口号,也可以禁用点对点分发。
要修改Parcel的点对点分发:
1.打开Cloudera Manager并选择Hosts > All Hosts > Configuration。
2.将P2P Parcel Distribution Port属性的值更改为新的端口号,将该值设置为0可以禁用Parcel的点对点分发。
3.输入Reason for change,然后单击Save Changes。