温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​https://github.com/fayson/cdhproject​


提示:代码块部分可以左右滑动查看噢


1

文章编写目的


在前面的文章Fayson介绍了《如何在CDH集群外配置非Kerberos环境的Gateway节点》和《如何在CDH集群外配置Kerberos环境的Gateway节点》,本文档在这两篇文档本篇文章基础介绍如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点。

  • 内容概述

1.部署环境说明

2.部署Gateway节点及测试

3.总结

  • 测试环境

1.CM和CDH版本为5.12.1

2.操作系统为RedHat7.2和RedHat6.6

3.操作用户root

  • 前置条件

1.Gateway节点与集群网络正常

2.集群已启用Kerberos


2

环境说明


集群外节点:

IP地址

HostName

操作系统

192.168.0.230

vm1.macro.com

RedHat7.2

192.168.0.187

rhel66001.localdomain

RedHat6.6


集群环境:

IP地址

HostName

操作系统

192.168.0.221

cdh01.macro.com

RedHat7.2

192.168.0.222

cdh02.macro.com

RedHat7.2

192.168.0.223

cdh03.macro.com

RedHat7.2

192.168.0.224

cdh04.macro.com

RedHat7.2

vm1.macro.com和rhel66001.localdomain两个节点并未在CM管理的集群内

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_hadoop


3

部署HDFS Gateway


1.时钟同步配置,(vm1.macro.com和rhel66001.localdomain)节点保持跟集群时钟不同,两个Gateway节点操作一致

yum -y install ntp
vim /etc/ntp.conf

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_hadoop_02

验证NTP服务是否已同步

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_hadoop_03

2.将集群的hosts文件同步至要装Gateway节点(vm1.macro.com和rhel66001.localdomain)

[root@cdh4 ~]# scp -rp /etc/hosts 192.168.0.230:/etc/
[root@cdh4 ~]# scp -rp /etc/hosts 192.168.0.187:/etc/


如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_java_04

3.集群启用了Kerberos,所以需要在(vm1.macro.com和rhel66001.localdomain)节点安装Kerberos客户端,执行如下命令,两个Gateway节点操作一致

[root@vm1 ~]# yum -y install krb5-libs krb5-workstation

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_java_05

4.创建指定的文件目录,并将集群KDC服务器上的/etc/krb5.conf文件拷贝至(vm1.macro.com和rhel66001.localdomain)节点的指定的目录下查看,两个Gateway节点操作一致

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_hadoop_06

5.登录集群任意节点,将集群的Java目录拷贝至(vm1.macro.com和rhel66001.localdomain)节点的指定的目录下(/usr/java/jvm/),两个Gateway节点操作一致

scp -r /usr/java/jdk1.8.0_111/ 192.168.0.230:/usr/java/jvm/

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_java_07

6.登录CDH集群的任意节点,将/opt/cloudera/parcels目录压缩并拷贝至(vm1.macro.com和rhel66001.localdomain)节点的指定目录,两个Gateway节点操作一致

tar -czvf cdh.tar.gz CDH-5.12.1-1.cdh5.12.1.p0.3/ CDH/
scp -rp cdh.tar.gz 192.168.0.230:/etc/cdhgateway/cdh_hadoop/cloudera/parcels

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_java_08

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_客户端_09

7.登录(vm1.macro.com和rhel66001.localdomain)节点的服务器上,到/etc/cdhgateway/cdh_hadoop/cloudera/parcels目录将cdh.tar.gz解压,两个Gateway节点操作一致

tar -zxvf cdh.tar.gz -C /etc/cdhgateway/cdh_hadoop/cloudera/parcels

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_客户端_10

8.拷贝HDFS到(vm1.macro.com和rhel66001.localdomain)节点指定目录/etc/cdhgateway/cdh_hadoop/下,两个Gateway节点操作一致

scp -rp /etc/hadoop 192.168.0.230:/etc/cdhgateway/cdh_hadoop/

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_客户端_11

9.(vm1.macro.com和rhel66001.localdomain)节点,修改hadoop 客户端配置路径,将默认的软链(/etc/hadoop/conf)修改为指定的路径

rm -rf /etc/cdhgateway/cdh_hadoop/cloudera/parcels/CDH/lib/hadoop/
ln -s /etc/cdhgateway/cdh_hadoop/hadoop/conf hadoop

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_客户端_12

10.(vm1.macro.com和rhel66001.localdomain)节点配置环境变量

[root@vm1 cdh_hadoop]# vim cdh_env 
export KRB5_CONFIG="/etc/cdhgateway/cdh_hadoop/krb5.conf"
export CDH_HOME="/etc/cdhgateway/cdh_hadoop/cloudera/parcels/CDH"
export HADOOP_HOME=$CDH_HOME/lib/hadoop
export HADOOP_CONF_DIR=$CDH_HOME/lib/hadoop/etc/hadoop
export JAVA_HOME="/usr/java/jvm/jdk1.8.0_111"
export PATH=$CDH_HOME/bin:$PATH
export PATH=$JAVA_HOME/bin:$PATH
[root@vm1 cdh_hadoop]# source cdh_env
[root@vm1 cdh_hadoop]# env


如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_客户端_13

这里配置的是会话级别的环境变量,结束会话后需要重新source cde_env,如果需要永久生效,将该配置写入到/etc/profile,并source /etc/profile 即可。


4

HDFS Gateway命令验证


1.使用Kerberos账号进行kinit操作,并进行hdfs 客户端功能验证

kinit test
klist
hdfs dfs -ls /


如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_java_14可以看到在RedHat7.2 客户端(vm1.macro.com)节点上操作是正常,但是在RedHat6.6 客户端(rhel66001.localdomain)节点上出现如下问题。

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_hadoop_15

解决办法:

在hadoop客户端的启动脚本上指定Kerberos的配置文件路径,在HADOOP_CLIENT_OPTS 添加配置-Djava.security.krb5.conf=$KRB5_CONFIG

export HADOOP_CLIENT_OPTS="-Djava.net.preferIPv4Stack=true -Djava.security.krb5.conf=$KRB5_CONFIG $HADOOP_CLIENT_OPTS"

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_hadoop_16

2.然后再进行校验,发现可以正常启动

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_hadoop_17


5

问题描述与解决


1.core-site.xml 文件找不到的异常

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_客户端_18

该问题是由于在CDH中hadoop的客户端配置默认是在/etc/hadoop目录下,确认软链无误,并且配置正确

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_java_19

2.时钟不同步异常

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_客户端_20

该异常是由于客户端节点与集群内节点时钟不同步,导致Kerberos认证不通过,同步时钟即可解决


提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

如何在Kerberos环境的CDH集群外跨OS版本中在指定目录配置HDFS的Gateway节点_客户端_21

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操