武汉市网站建设_网站建设公司_域名注册_seo优化
2025/12/29 2:50:59 网站建设 项目流程

文章目录

  • 一、完整操作记录总结
    • 环境
    • 📝 第一轮操作:Parcel文件分发与部署
      • 1. 从CM Server容器复制Parcel文件
      • 2. 分发Parcel到其他节点
      • 3. 在三台节点上执行Parcel部署
    • 📝 第二轮操作:配置文件复制与分发
      • 1. 在CM Server容器内收集配置文件
      • 2. 从容器复制配置文件到宿主机
      • 3. 分发配置文件到其他节点
      • 4. 在cluster-2和cluster-3上解压配置
    • 📊 操作总结
      • 1. 已完成的操作流程:
      • 2. 使用的文件路径:
      • 3. 涉及的三台服务器:
  • 二、操作规范原理解读
    • 1. 手动部署 CDH “本地客户端”(Gateway 角色)原理解读
      • 第一轮操作:Parcel 文件部署(CDH 二进制文件)
      • 第二轮操作:配置文件复制与分发
    • 2. 整体逻辑总结
    • 3. 如何测试是否成功
      • 基本环境检查
      • HDFS 客户端测试(连接到远程 HDFS)
      • YARN 客户端测试
      • Hive 客户端测试(如果配置中有 Hive)
      • 其他组件测试(根据你的 etc 中是否有配置)
      • 常见问题排查
  • 三、第四台节点部署
    • 如果第4台节点也想访问CDH集群
    • 核心原理(与前三台完全一致)
    • 在 cluster-4 上具体操作步骤(推荐方式)
      • 步骤 1:准备 Parcel 二进制(两种方式任选其一)
      • 步骤 2:复制客户端配置文件
      • 步骤 3:设置环境变量(可选但强烈推荐)
      • 步骤 4:在 cluster-4 上测试(与之前三台完全相同)
    • 注意事项
    • 总结

一、完整操作记录总结

环境

节点服务
cluster-1server+Agent
cluster-2agent
cluster-3agent

采用分布式docker容器化,离线部署CDH集群客户端。

📝 第一轮操作:Parcel文件分发与部署

1. 从CM Server容器复制Parcel文件

# 在宿主机cluster-1上执行dockercpcdh-cluster-1:/opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel /data/cloudera/parcel

/data/cloudera/作为容器中取文件到宿主机的中转存储目录。

2. 分发Parcel到其他节点

在宿主机/data/cloudera/parcel目录执行:

# 分发到cluster-2scpCDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel root@cluster-2:/opt/cloudera/parcels/# 分发到cluster-3scpCDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel root@cluster-3:/opt/cloudera/parcels/

宿主机的/opt/cloudera/parcels/目录也要cp一份,以便于进行parcel部署。

3. 在三台节点上执行Parcel部署

# 在cluster-1, cluster-2, cluster-3上分别执行相同操作:# 进入parcel目录cd/opt/cloudera/parcels# 解压parcel文件(直接解压到当前目录)tar-zxvf CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel# 创建符号链接ln-s CDH-6.3.2-1.cdh6.3.2.p0.1605554 CDH

📝 第二轮操作:配置文件复制与分发

1. 在CM Server容器内收集配置文件

从cluster-1进入容器。

# 进入CM Server容器dockerexec-it cdh-cluster-1 /bin/bash# 创建配置目录mkdir-p /opt/cloudera/etc# 复制各类配置文件cp-Lvr /etc/hadoop /opt/cloudera/etccp-Lvr /etc/hadoop-httpfs /opt/cloudera/etccp-Lvr /etc/hadoop-kms /opt/cloudera/etccp-Lvr /etc/hbase /opt/cloudera/etccp-Lvr /etc/hbase-solr /opt/cloudera/etccp-Lvr /etc/hive /opt/cloudera/etccp-Lvr /etc/hive-hcatalog /opt/cloudera/etccp-Lvr /etc/hive-webhcat /opt/cloudera/etccp-Lvr /etc/impala /opt/cloudera/etccp-Lvr /etc/kafka /opt/cloudera/etccp-Lvr /etc/kudu /opt/cloudera/etccp-Lvr /etc/pig /opt/cloudera/etccp-Lvr /etc/sentry /opt/cloudera/etccp-Lvr /etc/solr /opt/cloudera/etccp-Lvr /etc/spark /opt/cloudera/etccp-Lvr /etc/spark2 /opt/cloudera/etccp-Lvr /etc/zookeeper /opt/cloudera/etc# 打包配置文件cd/opt/cloudera/tar-czvf etc.tar.gz etc

2. 从容器复制配置文件到宿主机

# 回到宿主机cluster-1执行dockercpcdh-cluster-1:/opt/cloudera/etc.tar.gz /data/cloudera/

/data/cloudera/作为容器中取文件到宿主机的中转存储目录。

3. 分发配置文件到其他节点

# 进入存放配置的目录cd/data/cloudera/# 分发到cluster-2scpetc.tar.gz root@cluster-2:/opt/cloudera# 分发到cluster-3scpetc.tar.gz root@cluster-3:/opt/cloudera

4. 在cluster-2和cluster-3上解压配置

  • cluster-1 同样执行/opt/cloudera/目录的分发和解压。
# 在cluster-2和cluster-3上分别执行:# 进入cloudera目录cd/opt/cloudera/# 解压配置文件tar-zxvf etc.tar.gz

📊 操作总结

1. 已完成的操作流程:

  1. ✅ Parcel部署:将CDH 6.3.2 Parcel从CM Server复制到三节点,解压并创建符号链接
  2. ✅ 配置分发:从CM Server收集配置文件,打包分发到三节点并解压

2. 使用的文件路径:

  • Parcel文件/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
  • 解压目录/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554
  • 符号链接/opt/cloudera/parcels/CDH->CDH-6.3.2-1.cdh6.3.2.p0.1605554
  • 配置文件包/data/cloudera/etc.tar.gz(宿主机)和/opt/cloudera/etc.tar.gz(节点)
  • 解压配置/opt/cloudera/etc/cluster-1、2、3目录

3. 涉及的三台服务器:

  • cluster-1:Cloudera Manager Server + Agent
  • cluster-2:Agent节点
  • cluster-3:Agent节点

二、操作规范原理解读

1. 手动部署 CDH “本地客户端”(Gateway 角色)原理解读

该操作本质上是手动模拟 Cloudera Manager 的 Parcels 分发 + 客户端配置部署,目的是在三台节点主机上安装一个纯 CDH 客户端环境(也称为 Gateway 节点),而不是完整的集群服务(NameNode、DataNode 等)。这允许这些主机(或容器)作为 Hadoop/Hive/Impala 等组件的客户端,使用命令行工具(如hadoop fshiveimpala-shell)连接到远程 CDH 集群。

Cloudera Manager 正常情况下会自动处理这些,但当前选择了离线手动方式,绕过了 CM 的 Parcels 管理机制。以下是详细逻辑解释:

第一轮操作:Parcel 文件部署(CDH 二进制文件)

  • 标准 Parcels 结构和激活原理
    • Parcel 文件(.parcel)是一个压缩包,包含 CDH 所有组件的二进制文件(jar、bin、lib 等)。
    • Cloudera Manager Agent 会自动解压到/opt/cloudera/parcels/<完整版本目录>/(例如/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/)。
    • 然后创建符号链接/opt/cloudera/parcels/CDH→ 该版本目录(这相当于“激活”)。
    • CDH 的命令脚本(如/opt/cloudera/parcels/CDH/bin/hadoop)会通过环境变量(如$HADOOP_HOME)指向这个活跃目录。
    • 关键路径:所有 Hadoop 相关库在/opt/cloudera/parcels/CDH/lib/,命令在/opt/cloudera/parcels/CDH/bin/
  • 以上手动操作等价于
    • 直接 scp parcel 文件到节点(cluster-1/2/3),在 cluster-1 上从容器复制。
    • 手动tar -zxvf解压(模拟 CM Agent 的 unpack)。
    • 手动ln -s创建/opt/cloudera/parcels/CDH符号链接(模拟“Activate”)。
    • 效果:三台主机现在都有完整的 CDH 二进制文件,可以运行客户端命令(如hadoophive),路径统一指向活跃版本。
    • 为什么有效:CDH 的客户端脚本不依赖 CM Server,只要路径和符号链接正确,就能找到 jar/lib/bin。
  • 注意事项
    • 在 cluster-1 上把 parcel 从容器取出时放到了/data/cloudera/parcel,但没用到它(因为直接在/opt/cloudera/parcels/解压)。
    • 手动方式不支持多版本并存和自动回滚(Parcels 的优势),升级时需手动清理旧目录。

第二轮操作:配置文件复制与分发

  • 标准客户端配置原理
    • Cloudera Manager 会生成客户端配置文件(core-site.xml、hdfs-site.xml、hive-site.xml 等),包含集群地址(NameNode、ResourceManager、HiveServer2 等)、安全配置(Kerberos)、高可用等。
    • 这些配置默认放在/etc/<service>/conf/(如/etc/hadoop/conf//etc/hive/conf/)。
    • 但在 Parcels 部署下,CM 会额外把这些配置“部署”到/opt/cloudera/parcels/CDH/etc/<service>/或类似路径(有时称为 “cloudera/etc”)。
    • 客户端命令(如hadoop fs)会优先读取这些配置目录(通过环境变量如HADOOP_CONF_DIR)。
  • 手动操作等价于
    • 从容器内(CM Server 生成的配置)复制所有/etc/<service>/目录,打包成etc.tar.gz
    • 分发到三台主机的/opt/cloudera/并解压到/opt/cloudera/etc/
    • 效果:模拟了 CM 的 “Deploy Client Configuration” 操作,让客户端命令知道去哪里连接集群(例如 core-site.xml 中的fs.defaultFS = hdfs://nameservice1)。
    • 这就是“本地客户端”的核心:二进制(Parcels) + 配置(etc) → 可以像集群节点一样运行客户端工具,而无需启动任何服务。
  • 为什么放在 /opt/cloudera/etc/
    • 这不是标准系统路径(通常是 /etc/),而是 Parcels 专用的“client config” 位置。
    • CDH 的环境脚本(在 bin 目录下)会自动添加这个路径到 classpath 和 conf dir,让命令优先使用这里配置(覆盖或补充系统 /etc/)。

2. 整体逻辑总结

  • 目标:让三台主机成为 CDHGateway 节点(纯客户端),可以提交 MapReduce/Spark 作业、查询 Hive/Impala、操作 HDFS。
  • 手动 vs CM 自动
    • CM 会通过 Parcels 页面自动 Download/Distribute/Activate + 自动 Deploy Client Configuration。
    • 手动做这些,适用于离线环境或自定义控制。
  • 优势:快速、一致,三台主机配置完全相同。
  • 潜在风险:配置不完整(如缺少安全设置)、权限不对(建议 chown -R cloudera-scm 或 root)、未来升级麻烦。

3. 如何测试是否成功

三台主机任意一台(包括 cluster-1)上执行以下命令测试(无需 sudo,除非权限问题)。前提:配置中已正确指向你的实际集群(NameNode 等地址)。

基本环境检查

# 检查符号链接ls-l /opt/cloudera/parcels/CDH# 检查二进制路径/opt/cloudera/parcels/CDH/bin/hadoop version# 应显示 Hadoop 2.6.0-cdh6.3.2# 检查配置目录ls/opt/cloudera/etc/hadoop/# 应看到 core-site.xml、hdfs-site.xml 等

HDFS 客户端测试(连接到远程 HDFS)

# 列出根目录hadoop fs -ls /# 创建测试目录hadoop fs -mkdir /test_client# 上传本地文件(例如 /etc/hosts)hadoop fs -put /etc/hosts /test_client/# 查看hadoop fs -ls /test_client/ hadoop fs -cat /test_client/hosts# 清理hadoop fs -rm -r /test_client
  • 成功:说明 HDFS 客户端正常,能连接 NameNode。

YARN 客户端测试

# 查看集群资源yarnnode-list# 运行简单 MR 作业(计算 Pi)hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi10100
  • 成功:作业提交到 YARN 并计算出结果。

Hive 客户端测试(如果配置中有 Hive)

hive -e"SHOW TABLES;"# 或进入 hive> 提示符
  • 如果有 HiveServer2,beeline 更好:
beeline -u"jdbc:hive2://your-hiveserver2-host:10000"

其他组件测试(根据你的 etc 中是否有配置)

  • Impala:impala-shell -i your-impala-daemon-host
  • Pig:pig -x mapreduce
  • Spark:/opt/cloudera/parcels/CDH/bin/spark-submit --class ...

常见问题排查

  • 命令 not found:添加环境变量export PATH=$PATH:/opt/cloudera/parcels/CDH/bin
  • 连接失败:检查/opt/cloudera/etc/hadoop/core-site.xml中的 fs.defaultFS 是否正确;如果 Kerberos,需 kinit。
  • 权限问题:确保 /opt/cloudera/parcels 和 etc 目录可读(chmod -R 755 或 chown)。

三、第四台节点部署

如果第4台节点也想访问CDH集群

第四台主机(假设叫 cluster-4)即使完全没有运行任何 Cloudera Manager 的容器、服务或 Agent,也可以通过完全手动的方式安装 CDH 客户端(即 Gateway 角色),从而实现提交任务到你的三节点集群(cluster-1/2/3)运行。

这种方式在生产环境中非常常见,常用于:

  • 边缘节点(Edge Node)
  • 应用服务器
  • 开发机、跳板机
  • 提交 Spark、MapReduce、Hive、Impala 等作业的节点

核心原理(与前三台完全一致)

CDH 的客户端工具(hadoop、hive、beeline、spark-submit、impala-shell 等)运行时只需要两样东西:

  1. 二进制文件:来自 Parcel 解压后的 /opt/cloudera/parcels/CDH/… 目录
  2. 客户端配置文件:包含集群地址、安全配置等,通常放在 /opt/cloudera/etc/ 或 /etc/ 下

只要这两样东西在 cluster-4 上准备好,并且版本与集群(CDH 6.3.2)一致,客户端就能正常连接并提交任务到 cluster-1/2/3 的 NameNode、ResourceManager、HiveServer2、Impala Daemon 等服务上运行。

在 cluster-4 上具体操作步骤(推荐方式)

当前已经在cluster-1(或任意一台已有客户端的主机)上获取文件。

步骤 1:准备 Parcel 二进制(两种方式任选其一)

方式 A:直接复制已解压的整个版本目录(推荐,更简单可靠)

# 在 cluster-1(已有客户端)上执行tar-czf /tmp/CDH-6.3.2-parcel-dir.tar.gz /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554# 复制到 cluster-4scp/tmp/CDH-6.3.2-parcel-dir.tar.gz root@cluster-4:/opt/cloudera/parcels/# 在 cluster-4 上解压并创建符号链接sshroot@cluster-4mkdir-p /opt/cloudera/parcelscd/opt/cloudera/parcelstar-xzf CDH-6.3.2-parcel-dir.tar.gzln-s CDH-6.3.2-1.cdh6.3.2.p0.1605554 CDH

方式 B:复制原始 .parcel 文件并手动解压(与你之前操作一致)

# 从 cluster-1 的 /data/cloudera/parcel/ 或其他节点复制原始 parcel 文件scproot@cluster-1:/data/cloudera/parcel/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel root@cluster-4:/opt/cloudera/parcels/# 在 cluster-4 上cd/opt/cloudera/parcelstar-zxvf CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcelln-s CDH-6.3.2-1.cdh6.3.2.p0.1605554 CDH

步骤 2:复制客户端配置文件

最简单可靠的方式:直接复制已有的 etc 目录

# 在 cluster-1 上打包已有配置tar-czf /tmp/cloudera-etc.tar.gz /opt/cloudera/etc# 复制到 cluster-4scp/tmp/cloudera-etc.tar.gz root@cluster-4:/opt/cloudera/# 在 cluster-4 上解压sshroot@cluster-4cd/opt/cloudera/tar-xzf cloudera-etc.tar.gz

步骤 3:设置环境变量(可选但强烈推荐)

在 cluster-4 的用户 ~/.bash_profile 或 /etc/profile.d/ 中添加:

exportPATH=$PATH:/opt/cloudera/parcels/CDH/bin# 如果需要 spark 等exportPATH=$PATH:/opt/cloudera/parcels/CDH/bin/spark-submit# 可选:让 hadoop 命令优先使用该配置exportHADOOP_CONF_DIR=/opt/cloudera/etc/hadoop

生效:

source~/.bash_profile

步骤 4:在 cluster-4 上测试(与之前三台完全相同)

# 检查版本hadoop version# 应显示 Hadoop 2.6.0-cdh6.3.2# HDFS 操作hadoop fs -ls / hadoop fs -put /etc/hosts /test_from_cluster4 hadoop fs -ls /test_from_cluster4# YARN 提交简单任务hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi10100# Hive(如果配置中有 HiveServer2)beeline -u"jdbc:hive2://你的HiveServer2主机:10000"# Spark(如果有)spark-submit --class org.apache.spark.examples.SparkPi\/opt/cloudera/parcels/CDH/lib/spark/examples/jars/spark-examples*.jar10

注意事项

  • 版本必须一致:Parcel 版本必须和集群当前的激活版本(CDH-6.3.2-1.cdh6.3.2.p0.1605554)完全一致。
  • 配置必须同步:尤其是 core-site.xml、hdfs-site.xml、yarn-site.xml、hive-site.xml 中的服务地址和 HA 配置要正确。
  • Kerberos 安全:如果你的集群启用了 Kerberos,需要在 cluster-4 上配置 krb5.conf、kinit 获取票据。
  • 权限:建议目录权限 755,文件 644,所有者可设为普通用户(如 hadoop 或你的登录用户)。
  • 未来维护:配置变更后,需要手动同步 etc 目录到 cluster-4。

总结

第四台主机完全可以通过已熟练掌握的“parcel + 配置手动分发”方式,变成一个纯 CDH 客户端节点,实现向 cluster-1/2/3 提交任务。
整个过程不需要安装 Cloudera Manager Agent,也不需要任何容器,操作与在前三台主机上做的几乎一模一样。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询