1、表现
页面端
无法下载parcel文件或者在人工上传parcel文件后无法解压分配
提示: 一个或者多个主机没有报告其操作系统分配。这可能是由于运行已过期的Cloudera Manager Agent版本造成的。请运行Host Inspector检查Agent版本。
cloudera-scm-server.log错误
2022-07-11 10:06:11,251 WARN ParcelUpdateService:com.cloudera.parcel.components.ParcelInstallerImpl: Error while installing parcel com.cloudera.parcel.ParcelException: Parcel for CDH : 6.3.2-1.cdh6.3.2.p0.1605554 is not available on UNKNOWN. at com.cloudera.parcel.components.ParcelManagerImpl.distribute(ParcelManagerImpl.java:472) at com.cloudera.parcel.components.ParcelInstallerImpl.handleJob(ParcelInstallerImpl.java:179) at com.cloudera.parcel.components.ParcelInstallerImpl.run(ParcelInstallerImpl.java:152) at com.cloudera.parcel.components.ParcelInstallerImpl.run(ParcelInstallerImpl.java:41) at com.cloudera.cmf.persist.ReadWriteDatabaseTaskCallable.call(ReadWriteDatabaseTaskCallable.java:36) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
2、问题查找
由于下载的CDH版本是Centos7的,而操作系统是龙晰操作系统,并不是Centos7。CM在分配CDH安装包是会校验操作系统版本,主要是指安装包后缀 el7 / el6等,龙晰操作系统后缀是an,不在CDH支持列表中。这种方式不是直接获取操作系统信息,故而不能通过修改/etc/redhat-release解决。
3、解决方案
1)修改代码。由于CDH是闭源产品修改代码比较复杂。
2)由于CDH本身不支持an后缀直接返回unknown,所以可以通过构造一个对应的parcel解决
1、向数据库添加对应的parcel INSERT INTO `parcels` ( `PARCEL_ID`, `PRODUCT`, `VERSION`, `OS`, `FILENAME`, `HASH`, `BINARY_DIFF`, `STATUS`, `OPTIMISTIC_LOCK_VERSION`, `SOURCE`, `RELEASE_INSTANT`, `DOWNLOAD_INSTANT`, `RELEASE_ID` ) VALUES ( '38', 'CDH', '6.3.2-1.cdh6.3.2.p0.1605554', 'unknown', 'CDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel', 'd2a3d0be2524f37dbf686677cc45f3f8a3bd2cfd', b'0', 'AVAILABLE', '4', 'http://172.16.3.201/cdh6', NULL, NULL, '1' ); 2、重命名parcel cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel CDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha CDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel.sha