1.文档编写目的
在使用CDH/CDP集群过程中会遇到在集群外的节点使用Hadoop命令访问集群(如:HDFS、HBASE、HIVE、SPARK、YARN)等命令操作。但是有特殊需求:
1.不想将这个节点加入到CDH/CDP集群中管理,只用于实现CDH/CDP集群的访问。
2.支持多个不同版本的C6/CDP集群之间切换
3.支持多个用户同时访问不同集群,且环境变量互不影响
本篇文章主要介绍满足以上条件的一个客户端节点安装。
- 测试环境
1.集群1是CM版本6.3.4、CDH版本6.3.4
2.集群2 是Cloudera Enterprise 7.3.1和Cloudera Runtime 7.1.6
3.系统均为RedHat 7.6
4.集群已启用 Kerberos
5.OpenLADP 2.4.44-23.el7_9
前置条件,两个已安装且正常使用的集群
2.Gateway节点配置
2.1.修改/etc/hosts配置文件
将所有集群的hosts文件同步至该Gateway节点(hadoop11.macro.com)
2.2关闭防火墙
代码语言:javascript复制1systemctl status firewalld
2systemctl stop firewalld
3systemctl disable firewalld
2.3Java和CDH和CDP
1.将每个集群的Java目录复制到(hadoop11.macro.com)节点的/usr/java/目录下。(如果版本相同就不用重复拷贝了)
代码语言:javascript复制1scp -r /usr/java/jdk1.8.0_232-cloudera/ hadoop11.macro.com:/usr/java/jdk1.8.0_232-cloudera/
2.将/opt/cloudera/parcels目录压缩并拷贝至(hadoop11.macro.com)节点
tar -czvf cdh.tar.gz CDH-7.1.6-1.cdh7.1.6.p0.10506313/ CDH/scp cdh.tar.gz hadoop11.macro.com:/opt/tar -czvf cdh.tar.gz CDH-6.3.4-1.cdh6.3.4.p0.6626826/ CDH/scp cdh.tar.gz hadoop11.macro.com:/opt/
3.解压到相同目录下
tar -zxvf cdh.tar.gz
2.4拷贝配置文件
1.在(hadoop11.macro.com)节点上执行如下命令创建服务配置文件存放目录
[root@hadoop11 ~]# mkdir -p cdh6/etc/[root@hadoop11 ~]# mkdir -p cdp/etc/
2.登录CDH/CDP集群拥有spark、hadoop、hbase、hive等Gateway节点上将/etc/*/conf目录下的配置文件拷贝至(hadoop11.macro.com)节点统一目录下。
scp -r /etc/hadoop/conf/* 192.168.0.191:/root/cdh6/etc/hadoopscp -r /etc/spark/conf/* 192.168.0.191:/root/cdh6/etc/sparkscp -r /etc/hbase/conf/* 192.168.0.191:/root/cdh6/etc/hbasescp -r /etc/hive/conf/* 192.168.0.191:/root/cdh6/etc/hive
cdp同理。
3.拷贝到Gateway节点的配置需要修改core-site.xml配置文件中的内容,修改配置防止spark访问hive保错,具体修改内容如下:
vim /root/cdh6/etc/hadoop/core-site.xmlvim /root/cdh6/etc/hive/core-site.xmlvim /root/cdp/etc/hadoop/core-site.xmlvim /root/cdp/etc/hive/core-site.xml
每个集群下的hadoop、hive配置文件的core-site.xml这个参数都要修改成正确路径。
3.安装kerberos客户端
1.因为集群启用了Kerberos,所以需要在(hadoop11.macro.com)节点安装Kerberos客户端,执行如下命令
yum -y install krb5-libs krb5-workstation
2.将所有集群KDC服务器上的/etc/krb5.conf文件拷贝到(hadoop11.macro.com)节点的/root/conf/cdh6/目录下,对应集群名称
scp /etc/krb5.conf 192.168.0.191:/root/cdh6/etcscp /etc/krb5.conf 192.168.0.191:/root/cdp/etc
最终目录如下
4.编写环境切换脚本
#!/bin/bash#set -exBIN_DIR=$(dirname $BASH_SOURCE)BIN_DIR=`cd "$BIN_DIR"; pwd`# javaexport JAVA_HOME=/usr/java/jdk1.8.0_232-cloudera# cdhexport CDH_HOME=/opt/cloudera/parcels/CDH-6.3.4-1.cdh6.3.4.p0.6626826export PATH=$CDH_HOME/bin:$PATH# hadoopexport HADOOP_HOME=${CDH_HOME}/lib/hadoopexport HADOOP_CONF_DIR=${BIN_DIR}/etc/hadoop# hiveexport HIVE_HOME=${CDH_HOME}/lib/hiveexport HIVE_CONF_DIR=${BIN_DIR}/etc/hive# hbaseexport HBASE_HOME=${CDH_HOME}/lib/hbaseexport HBASE_CONF_DIR=${BIN_DIR}/etc/hbase# sparkexport SPARK_HOME=${CDH_HOME}/lib/sparkexport SPARK_CONF_DIR=${BIN_DIR}/etc/spark# kerberosexport KRB5_CONFIG=${BIN_DIR}/etc/krb5.confif [ -n "$KRB5_CONFIG" ];then export HBASE_OPTS="-Djava.security.krb5.conf=$KRB5_CONFIG $HBASE_OPTS" export SPARK_SUBMIT_OPTS="-Djava.security.krb5.conf=$KRB5_CONFIG $SPARK_SUBMIT_OPTS" export HADOOP_CLIENT_OPTS="-Djava.security.krb5.conf=$KRB5_CONFIG $HADOOP_CLIENT_OPTS"fi
修改好对应参数,保存脚本,放在/root/cdh6/cdh6-env.sh
5.验证Gateway
1.执行如下命令切换到集群CDH6
source cdh6-env.sh
测试HDFS,MR作业,均成功
hdfs dfs -ls /hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 2 5
YARN和HBASE也可以
yarn application --listhbase shell
beeline
spark-shell
spark-submit
spark-submit --class org.apache.spark.examples.SparkPi /opt/cloudera/parcels/CDH-6.3.4-1.cdh6.3.4.p0.6626826/jars/spark-examples_2.11-2.4.0-cdh6.3.4.jar 10
修改参数,切换集群到cdp
测试HDFS,MR作业,均成功
hdfs dfs -ls /hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 2 5
YARN和HBASE也可以
yarn application --listhbase shell
beeline
spark-shell
spark-submit
6.异常处理
1. spark出现无法连接gateway机器,no route to host 192.168.0.191
原因是防火墙没关,关掉即可解决。
2. hive作业运行失败,报错信息为:GSS initiate failed,Clock skew too great(37)
原因是kerberos客户端时间和服务端时间不一致,安装ntp调整系统时间即可。
3. spark作业失败
kerberos用户userkrb登录没有HDFS权限,所以访问不了导致spark无法完成。
解决方法是创建一个kerberos用户hive,登录就解决了。
4. spark作业能运行出结果,但是保存找不到文件
这个文件目录在core-site.xml写死了,把目录修改正确即可。